1

我正在开发一个项目,该项目将驱动器(及其相关的统计信息,例如由 显示的那些iostat)和分区链接到挂载点,但在 OS X 处理Fusion Drive的方式上遇到了问题。

我已经能够从IO Registry and Disk Arbitration Framework收集有关驱动器和分区的信息。同样,我已经能够使用statfs(或mountordf命令)关联驱动器和挂载点。但是,Fusion Drive 进入图片时缺少一个链接。这是一个示例输出diskutil list

$ diskutil list
/dev/disk0 (internal, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *1.0 TB     disk0
   1:                        EFI EFI                     209.7 MB   disk0s1
   2:          Apple_CoreStorage Macintosh HD            999.7 GB   disk0s2
   3:                 Apple_Boot Recovery HD             650.0 MB   disk0s3
/dev/disk1 (internal, virtual):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:                  Apple_HFS Macintosh HD           +999.3 GB   disk1
                                 Logical Volume on disk0s2
                                 FA33A826-C98E-425A-BCF1-9A68A926D36E
                                 Unlocked Encrypted

iostat来自(读取/写入/读取的字节数/写入的字节数,传输花费的时间等)的 IORegistry 统计信息与disk0上述输出相关联。但是,df(或等效的编程 statfs 函数)将/挂载点与/dev/disk1

$ df
Filesystem                        512-blocks       Used  Available Capacity  iused     ifree %iused  Mounted on
/dev/disk1                        1951825920  575057552 1376256368    30% 71946192 172032046   29%   /

我希望能够将文件系统上的读/写/与物理驱动器相关联disk0。我花了几个小时在这里和其他地方寻找disk1disk0s2. 的源代码diskutil显然在DiskManagement框架中,不公开。

除了以文本方式解析上述diskutil list命令的输出之外,还有什么方法可以将已安装的(虚拟)融合驱动器与其底层(物理)分区相关联?

4

1 回答 1

1

经过几个小时的挖掘,我发现了一个关键事实,即 Fusion Drives(以及 Lion 中引入的全盘 FileVault 加密)利用一个称为“核心存储”(或 CoreStorage)的功能,其中一个或多个物理磁盘/分区链接到虚拟磁盘。

似乎没有任何公开可用的 API 来以编程方式获取 CoreStorage 信息,并且很少记录有哪些命令。

虽然仍然是命令行,但diskutil cs list提供了足够的可解析信息来建立我需要的连接。

可以在此处找到带有示例的AP DF 和更多信息

于 2016-08-30T16:02:44.777 回答