Программно получить информацию о OSX Fusion Drive
Я работаю над проектом, который связывает диски (и связанные с ними статистические данные, например отображаемые iostat
) и разделов для монтирования точек, но возникают проблемы с тем, как OS X делает Fusion Drive.
Мне удалось собрать информацию о дисках и разделах из IO Registry и Disk Arbitration Framework. Точно так же я смог сопоставить диски и точки монтирования, используя statfs (или 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
Статистика IORegistry от iostat
(чтение / запись / чтение байтов / запись байтов, время, потраченное на передачу и т. д.) связаны с 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
команда, чтобы связать подключенный (виртуальный) диск Fusion с его базовым (физическим) разделом?
1 ответ
После нескольких часов копания я обнаружил ключевой факт, что Fusion Drives (а также полнодисковое шифрование FileVault, представленное в Lion) используют функцию под названием "Core Storage" (или CoreStorage), где один или несколько физических дисков / разделов связан с виртуальным диском.
Похоже, что не существует общедоступного API для получения информации о CoreStorage программным путем, и какие команды там редко документированы.
Пока еще командная строка, diskutil cs list
предоставляет достаточно разбираемой информации, чтобы установить нужные мне соединения.
AP DF с примерами и много дополнительной информации можно найти здесь.