Именование устройств zfs vs smartctl vs iostat
Я работаю над сбором данных о производительности из SAN (5.11 omnios-7648372). мы используем данные на JBOD.
фрагмент вывода zdb -C mypoolname:
children[0]:
type: 'disk'
id: 0
guid: 7701924650939559899
path: '/dev/dsk/c1t0d0s0'
devid: 'id1,sd@n5000c5004cce9b53/a'
phys_path: '/pci@0,0/pci8086,25f7@2/pci8086,350c@0,3/pci1000,3030@1/sd@0,0:a'
whole_disk: 1
DTL: 599
create_txg: 4
Сосредоточив внимание на части "путь", он говорит "/dev/dsk/c1t0d0s0". Я предполагаю, что имя устройства - c1t0d0s0, и оно "совпадает" с smartctl... если только smart ctl не указал путь / dev / rdsk / c1t0d0s0
Но "iostat -extnc 3 1" называет устройство по-другому: c1t0d0
Пожалуйста, скажите, пожалуйста, почему 3 из них не использовали одно и то же имя для одного и того же устройства?
1 ответ
zdb
показывает вам path
что ZFS использует внутренне для адресации устройства, которое является путем в /dev
файловая система, которая позволяет получить доступ к файлу блочного устройства. (Кстати, zdb
в основном предназначен как инструмент отладки и не гарантирует обратной совместимости для всего, что он печатает.) Он обращается с использованием суффикса среза диска s0
Вот почему это появляется в этих списках. Я считаю, что дисковые фрагменты в основном такие же, как разделы. Срез 0 обычно представляет собой весь диск, когда вы используете ZFS, поскольку при добавлении всего устройства в zpool
, ZFS автоматически отформатирует устройство для вас, и ему нужен только один фрагмент. Тем не менее, также возможно добавить только один раздел диска к вашему zpool
(или, что еще глупее, несколько разделов на одном диске как отдельные vdevs
), поэтому ZFS должна отслеживать, какой раздел (ы) фактически контролируется.
iostat
показывает только имя устройства, без /dev
путь или номер среза. Это потому что iostat
не знает о срезах, а просто смотрит на фактическое устройство, когда собирает свои данные.
Я не знаю что случилось smartctl
, Я ожидаю, что это будет работать на уровне устройства, как iostat
, но, возможно, он получает данные, передаваемые ему через ZFS, которая использует номер среза. Это кажется мне ошибкой, так как в идеале вы должны сообщать об ошибках в области наименьшего сбоя, частью которого они являются, в данном случае это диск. (Хотя по крайней мере это легко обойти.)