以编程方式获取 OSX Fusion Drive 信息
Programmatically get OSX Fusion Drive information
我正在开发一个项目,其中 link 驱动器(及其相关统计数据,例如 iostat
显示的数据)和挂载点分区,但 运行 进入OS X 执行 Fusion Drive.
的方式有问题
我已经能够从 IO Registry and Disk Arbitration Framework. Similarly, I have been able to correlate drives and mount points using statfs(或 mount
或 df
命令)收集有关驱动器和分区的信息。但是,在 Fusion Drive 进入图片的位置缺少 link。这是 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 统计信息(reads/writes/bytes read/bytes 写入、传输时间等)与上述输出中的 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% /
我希望能够将位于 /
的文件系统上的 reads/writes 与物理驱动器 disk0
相关联。我花了几个小时在这里和其他地方搜索将 disk1
与 disk0s2
相关联的任何方式。 diskutil
的源代码显然在 DiskManagement
框架中,而不是 public.
除了对上述 diskutil list
命令的输出进行文本解析之外,还有什么方法可以将安装的(虚拟)融合驱动器与其底层(物理)分区相关联吗?
经过几个小时的挖掘,我发现了一个关键事实,即 Fusion Drives(以及 Lion 中引入的全盘 FileVault 加密)利用了一项名为 "Core Storage"(或 CoreStorage)的功能,其中一个或更多物理 disks/partitions 链接到虚拟磁盘。
似乎没有任何公开可用的 API 以编程方式获取 CoreStorage 信息,并且很少记录其中的命令。
虽然仍然是一个命令行,diskutil cs list
提供了足够的可解析信息来建立我需要的连接。
A PDF with examples and a lot more information can be found here.
我正在开发一个项目,其中 link 驱动器(及其相关统计数据,例如 iostat
显示的数据)和挂载点分区,但 运行 进入OS X 执行 Fusion Drive.
我已经能够从 IO Registry and Disk Arbitration Framework. Similarly, I have been able to correlate drives and mount points using statfs(或 mount
或 df
命令)收集有关驱动器和分区的信息。但是,在 Fusion Drive 进入图片的位置缺少 link。这是 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 统计信息(reads/writes/bytes read/bytes 写入、传输时间等)与上述输出中的 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% /
我希望能够将位于 /
的文件系统上的 reads/writes 与物理驱动器 disk0
相关联。我花了几个小时在这里和其他地方搜索将 disk1
与 disk0s2
相关联的任何方式。 diskutil
的源代码显然在 DiskManagement
框架中,而不是 public.
除了对上述 diskutil list
命令的输出进行文本解析之外,还有什么方法可以将安装的(虚拟)融合驱动器与其底层(物理)分区相关联吗?
经过几个小时的挖掘,我发现了一个关键事实,即 Fusion Drives(以及 Lion 中引入的全盘 FileVault 加密)利用了一项名为 "Core Storage"(或 CoreStorage)的功能,其中一个或更多物理 disks/partitions 链接到虚拟磁盘。
似乎没有任何公开可用的 API 以编程方式获取 CoreStorage 信息,并且很少记录其中的命令。
虽然仍然是一个命令行,diskutil cs list
提供了足够的可解析信息来建立我需要的连接。
A PDF with examples and a lot more information can be found here.