OSX: 逻辑卷管理系统Core Storage(3)

目前的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

解释:

需要执行的用户拥有对这些普通分区的写权限。另外与之相关的LVF和LV都会被影响。

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)

时间: 2024-08-29 02:44:20

OSX: 逻辑卷管理系统Core Storage(3)的相关文章

OSX: 逻辑卷管理系统Core Storage(4)

这里讨论一个复杂的例子:如何使用命令行来解密一个使用FileVault 2加密了的Fusion Drive. 这个有点复杂,对于普通的File Vault 2磁盘加密,我们可以直接使用diskutil cs revert来解密,但是FusionDrive + FileVault 2的情况来说不能用普通的方式直接对FileVault 2的分区解密,因为它会破坏Fusion Drive的结构,从而导致数据丢失. 启动盘的简单情况: 如果你是从加密的Fusion Drive启动的系统上操作,那么可以简

OSX: 逻辑卷管理系统Core Storage(2)

前面说了Core Storage还不完善,目前没有GUI的程序,只能使用统一的命令行接口,可以预见这个功能应该可以被集成到GUI中来,比如磁盘工具(Disk Utility)之类大家耳熟能详的软件:而且,它的功能也不完善,比如要实现软件RAID,只能用AppleRAID,没有快照,没有集成备份-备份使用时间机器(Time Machine)等等. 虽然Core Storage还有这个那个的缺陷和不完善,但我们已经可以使用它来完成一些工作. 逻辑结构 下图展示了Core Storage的逻辑结构,可

OSX: 逻辑卷管理系统Core Storage(1)

Mac高大上嘛? Mac因为贵就高大上了?Mac因为没有这个哪个就不高大上了?本文没有结论,只是回归技术本源,是不是高大上还要大家自己评说. 大多数Mac用户可能并不在乎苹果的OS X操作系统缺少一个有效的逻辑卷管理(LVM)系统的事实,只要使用上没有妨碍就好.最早从10.7的狮子系统开始,OS X就带有一个叫做核心存储的功能,因为Apple并没有大力宣传,所以知道的人并不多,究其没有公开的原因,从后面的讲述来看,可能主要是因为它并不完善,或者从历史上看,Apple是不是还在犹豫如何处理,抑或是

Linux 系统 LVM(Logical Volume Manager)逻辑卷管理

一.前言 每个Linux使用者在安装Linux时都会遇到这样的困境:在为系统分区时,如何精确评估和分配各个硬盘分区的容量,因为系统管理员不但要考虑到 当前某个分区需要的容量,还要预见该分区以后可能需要的容量的最大值.因为如果估计不准确,当遇到某个分区不够用时管理员可能甚至要备份整个系统.清除硬 盘.重新对硬盘分区,然后恢复数据到新分区. 虽然现在有很多动态调整磁盘的工具可以使用,例如PartationMagic等等,但是它并不能完全解决问题,因为某个分区可能会再次被耗尽:另 外一个方面这需要重新

Linux下逻辑卷管理

LVM --Logical Volume Manager (逻辑卷管理)  逻辑卷管理是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,用来提高磁盘分区管理的灵活性. 一.优点 磁盘空间的动态划分和管理实现分区的动态拉伸和回缩 二.逻辑卷管理的组成 1.物理卷(PV--PvcreateVolume) 物理卷在逻辑卷管理中处于最底层,它可以是实际物理硬盘上的分区,也可以是整个物理硬盘.2.卷组(VG--Vgcreate Group) 卷组建立在物理卷之上,一

逻辑卷管理及单个分区扩容

1:目的 LVM是逻辑盘卷管理(Logical Volume Manager)的简称,他是磁盘管理的另一种工具,就目前基本上所有操作系统均支持,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性.通过LVM系统管理员可以轻松管理磁盘分区: 2:试用范围 本文档适用的环境为linux系统: 3:术语 (1)PV(physical volume):物理卷在逻辑卷管理系统最底层,可为整个物理硬盘或实际物理硬盘上的分区: (2)VG(volume group):卷组建立在物理卷上,一卷

Centos中动态扩容lvm逻辑卷的大小

LVM概念:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性.通过LVM系统管

LVM基础详细说明及动态扩容lvm逻辑卷的操作记录

LVM概念:--------------------------------------------------------------------------------------------------------------------------------------------------------它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性.通过LVM系统管理员可以轻松管理磁盘分区,如:将若干个磁盘分区连

可软件定义的存储逻辑——Efficient and agile storage management in software defined environments

        note:写这个也许算是翻译,又或算是对这个论文[1]的理解,又或者只是我的看法.         这篇论文和IOFlow相比较,更加地注重软件定义存储的框架(我觉得是利用已有的框架来创建新的框架,然后使用已有的协议),而不是像IOFlow那样注重通信的协议.并且,这个框架还是软件定义环境的框架,而不仅仅是存储的框架,不过全文注重说了存储(更有挑战性).特别地,关于可软件定义的存储逻辑,从这里可以管中窥豹. SDE软件定义环境 数据中心的环境包括Compute.Network和S