Я работаю над проектом, который связывает диски (и связанную с ними статистику, например, отображаемую iostat
) и разделы с точками монтирования, но сталкиваюсь с проблемами, связанными с тем, как OS X выполняет Fusion Drive.
Мне удалось собрать информацию о дисках и разделах из Реестр ввода-вывода и Дисковый арбитраж Каркас. Точно так же я смог сопоставить диски и точки монтирования, используя 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
Framework, который не является общедоступным.
Есть ли способ, кроме текстового анализа вывода приведенной выше команды diskutil list
, связать смонтированный (виртуальный) Fusion Drive с его базовым (физическим) разделом?