我正在开发一个项目,该项目将驱动器(及其关联的统计信息,例如iostat
显示的那些)和分区与挂载点相关联,但遇到了OS X执行问题的问题{ {3}}
我能够从Fusion Drive和IO Registry收集有关驱动器和分区的信息。同样,我已经能够使用Disk Arbitration Framework(或mount
或df
命令)关联驱动器和挂载点。但是,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
相关联。我已经花了几个小时在这里和其他地方搜索任何方式将disk1
与disk0s2
相关联。 diskutil
的源代码显然位于DiskManagement
框架中,该框架不公开。
除了以文本方式解析上述diskutil list
命令的输出之外,还有什么方法可以将已安装(虚拟)的融合驱动器与其底层(物理)分区相关联吗?
答案 0 :(得分:1)
经过几个小时的挖掘后,我发现了一个关键事实:Fusion Drives(以及Lion中引入的全盘FileVault加密)利用了一个名为“Core Storage”(或CoreStorage)的功能,其中有一个或多个物理磁盘/分区链接到虚拟磁盘。
似乎没有任何公开的API可以通过编程方式获取CoreStorage信息,而且有哪些命令很少记录。
虽然仍然是命令行,但diskutil cs list
提供了足够的可解析信息来建立我需要的连接。
P DF with examples and a lot more information can be found here。