Именование устройств 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, которая использует номер среза. Это кажется мне ошибкой, так как в идеале вы должны сообщать об ошибках в области наименьшего сбоя, частью которого они являются, в данном случае это диск. (Хотя по крайней мере это легко обойти.)

Другие вопросы по тегам