标签:corestorage lv lvf lvg pv
目前的CoreStorage都可以干什么?前面有了举例,使用了几个简单的命令,显示了看上去的core storage在OS X中是什么样子的,它的大致结构如何。
有关CoreStorage中前后文使用的缩写对照:
PV = Physical Volume
LVG = Logical Volume Group
LVF = Logical Volume Family
LV = Logical Volume
cs = coreStorage
为了能更好地了解Core Storage能干什么以及如何做,那么首先要了解它的命令行的参数了。管理Core Storage与它打交道的唯一途径就是diskutil命令了,对于熟悉该命令的来说,这个命令是OS X管理本地磁盘分区的,而所有人都用的Disk Utility可以说是这个命令的GUI接口而已,地层的工作都是它可以完成的,而且可以干得更多。
命令
diskutil的一个子命令集coreStorage或者简写为cs,就是管理Core Storage的。基本的命令形式是:
diskutil <coreStorage | cs> <verbs> ….
cs是coreStorage的缩写形式,后面我们都用这个写法。
命令分类
下面我们按照功能分类详细解释每个verbs。获取信息
list - 显示所有CoreStorage的逻辑结构和信息
info - 显示特定CoreStorage对象的详细内容
转换
convert - 将普通卷转换成CoreStorage卷(无损)
revert -CoreStorage卷转换成普通卷(无损)
LVG命令
create-创建新的CoreStorage的LVG
delete-删除CoreStorage的LVG
PV命令
resizeDisk-改变一个PV的大小(10.10之前是未公开的-注1)
removeDisk-移除一个PV(10.10之前是未公开的)
addDisk-添加PV到一个LVG(10.10之前是未公开的)
LV命令
createVolume-创建新的LV
unlockVolume-将LV解锁
deleteVolume-删除LV
changeVolumePassphrase-改变LV的密码
resizeVolume-改变LV的大小(10.0之前是未公开的)
resizeStack-同时改变LV和它相关的PV的大小(10.10之前是未公开的)
加密解密
encryptVolume-加密一个LV(无损)
decryptVolume-解密一个LV(无损)
list:最简单,显示cs中的所有PV-LVG-LVF-Lvs的彼此关系,前面的举例中也看到了。
Usage: diskutil coreStorage list diskutil coreStorage list -plist diskutil coreStorage list UUID
解释:
没有后面参数的,就以柱状图形式显示cs所有对象彼此之间的关系。
如果使用-plist,那么会以plist的格式输出结果,你可以使用重定向来保存在一个plist文件中,作为以后处理用途。如果显示特定一个对象的信息,可以参考下面的info,或者在此命令中指定该对象的UUID。
info: 显示给定cs目标的信息
<span style="font-size:18px;">diskutil cs info | information [-plist] <device></span>
解释:
其中的<device>可以是cs中适合该对象的UUID|MountPoint|DiskIdentifier|DeviceNode中的一个。
比如,参看前一篇举例的第二个图,对OSX93这个LV来说,可以是诸如disk2(DiskIdentifier), B4236385-106A-4C98-9BBF-66B93AEAD8AC(UUID),/(MountPoint),而PV中的/dev/disk1s2(DeviceNode)等。
-plist的用法与list中的解释相同
convert:将一个普通GPT分区转化成cs的LV
Usage: diskutil coreStorage convert MountPoint|DiskIdentifier|DeviceNode [-stdinpassphrase | -passphrase [passphrase]]解释:
这个被转换的普通分区必须是可装载并可改变大小的,在OS X中也就是JHFS+分区,而且要求对该分区有写权限,-可能需要sudo来获取。
如果不提供密码(passphrase)那么它只生成LVF,并且以后也无法对它进行加密了。
如果使用-stdinpassphrase参数,那么运行这个命令后,它会等待用户从stdin输入密码;-passphrase后面直接跟着密码。
MountPoint|DiskIdentifier|DeviceNode的解释与info中的相同,只是因为普通的分区等没有UUID,所以这里没有把UUID列出。
revert:将cs的LV转化为普通分区
Usage: diskutil coreStorage revert MountPoint|DiskIdentifier|DeviceNode|lvUUID [-stdinpassphrase | -passphrase [passphrase] | -recoverykeychain file]
这个就是上面的convert的反过程。
create: 把指定的一个或多个普通分区转化成一个LVG
Usage: diskutil coreStorage create lvgName MountPoint|DiskIdentifier|DeviceNode ...解释:
比如diskutil cs create MyLVG disk1s2 disk2s2 disk3s2命令把disk1s2,disk2s2和disk3s2分区转化为PV之后归并到MyLVG中。
注意:转化后,所有原分区中的数据将会丢失。
另外需要执行的用户拥有对这些普通分区的写权限。
delete: 很明显的,这个是对应上面的Create的,也就是删除一个LVG
Usage: diskutil coreStorage delete lvgUUID解释:
resizeDisk: 改变一个PV的分区大小
Usage: diskutil coreStorage resizeDisk pvUUID size [part1Format part1Name part1Size part2Format part2Name part2Size part3Format part3Name part3Size ...]解释:
pvUUID可以从“diskutil cs list”命令中得到。
改变PV的大小直接影响到与其相关的LV的可用空间的大小,当缩小的时候,可以为空域出来的空间指定一个分区。而且这个命令对在线数据也是非破坏性的。
removeDisk: 把一个PV从LVG中删除
<span style="font-size:18px;">Usage: diskutil coreStorage removeDisk pvUUID</span>解释:
目前不知道,删除的时候是否会影响现存在LV中的数据。
addDisk: 添加一个PV到指定的LVG中
Usage: diskutil coreStorage addDisk lvgUUID NewMemberDeviceName解释:
这个的用途应该最多,可以扩展现有的LV中的空间。其中NewMemberDeviceName应该与前面create中的命令所要求的相同,可以是MountPoint|DiskIdentifier|DeviceNode中的一个。
createVolume-创建新的LV(和LVF)
Usage: diskutil coreStorage createVolume lvgUUID type name size [-stdinpassphrase | -passphrase [passphrase]]解释:
其中type可以是JHFS+或者JHFSX(Case-sensitive Journaled HFS+)或者HFSX(Case-sensitive HFS+). 分区大小与普通diskutil的命令,如partitionDisk,相同。
比如: diskutil cs createVolume 0000000000-1111-2222-3333-444444444444 JHFS+ lvName 100%
unlockVolume-将LV解锁
Usage: diskutil coreStorage unlockVolume lvUUID [-stdinpassphrase | -passphrase passphrase | -recoverykeychain file]解释:
无论何种系统原因(因为没有一个用户接口去直接锁定),一个LV可能被锁住,锁住的LV不会被系统装载,所以要先解锁才能装载。密码也就是在生成的时候指定的。后面有机会可以演示如何处理这些。
deleteVolume-删除LV
Usage: diskutil coreStorage deleteVolume lvUUID解释:
删除一个LV,数据会丢失,而且这个LV应该是处于解锁状态。
changeVolumePassphrase-改变LV的密码
Usage: diskutil coreStorage changeVolumePassphrase|passwd lvUUID [-recoverykeychain file] | [-oldpassphrase old] [-newpassphrase new] | [-stdinpassphrase]解释:
这个命令可能比较有用,特别是在改变FileVault v2的密码的时候。后面有机会可以演示如何处理这些。
resizeVolume-改变LV的大小(10.0之前是未公开的)
Usage: diskutil coreStorage resizeVolume lvUUID size解释:
这个命令不会影响数据。改变大小可能大于或者小于LVG的实际空间大小。
resizeStack-同时改变LV和它相关的PV的大小(10.10之前是未公开的)
Usage: diskutil coreStorage resizeStack lvUUID [pvUUID] size [part1Format part1Name part1Size part2Format part2Name part2Size part3Format part3Name part3Size ...]解释:
这个命令可以一次性地同时扩大或者缩小指定地LV(lvUUID)以及和它关联地一个PV(pvUUID)扩充或者缩小空间大小。如果是缩小,那么可以指定富余出来的空间生成新的LV。
encryptVolume:-加密一个LV(无损)
Usage: diskutil coreStorage encryptVolume lvUUID [-stdinpassphrase | -passphrase passphrase]decryptVolume:-解密一个LV(无损)
Usage: diskutil coreStorage decryptVolume lvUUID [-stdinpassphrase | -passphrase passphrase]解释:
很好理解,就是加密/解密一个LV,并可指定一个密码。注意这个密码不要和createVolume时的混淆。
注1:在本文成文之时,10.10的正式版还没有发布,所以该句的意思包括10.7.0直到10.9.3之间的各个版本。
OSX: 逻辑卷管理系统Core Storage(3),布布扣,bubuko.com
标签:corestorage lv lvf lvg pv
原文地址:http://blog.csdn.net/cneducation/article/details/32186897