именование устройств 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

Пожалуйста, скажите мне, почему трое из них не использовали одно и то же имя для одного и того же устройства?


person Bino Oetomo    schedule 25.05.2018    source источник


Ответы (1)


zdb показывает вам path, который ZFS использует внутри для адресации устройства, то есть путь в файловой системе /dev, который разрешает доступ к файлу блочного устройства. (Кстати, zdb предназначен главным образом как инструмент отладки, и не гарантируется обратная совместимость для всего, что он печатает.) Он обращается с помощью срез диска суффикс s0, поэтому он появляется в этих списках. Я считаю, что фрагменты диска в основном такие же, как разделы. Слайс 0 обычно представляет собой весь диск, когда вы используете ZFS, поскольку, когда вы добавляете все устройство в свой zpool, ZFS автоматически отформатирует устройство для вас, и ему нужен / создается только один слайс. Однако также можно добавить только один раздел диска к вашему zpool (или, что еще более глупо, несколько разделов на том же диске в качестве отдельного vdevs), поэтому ZFS должна отслеживать, какие разделы она фактически контролирует.

iostat показывает вам только имя устройства, без пути /dev или номера слайса. Это связано с тем, что iostat ничего не знает о слайсах и просто смотрит на фактическое устройство, когда собирает данные.

Я не знаю, что случилось с smartctl. Я ожидаю, что он будет работать на уровне устройства, как iostat, но, возможно, он получает данные, передаваемые ему через ZFS, который использует номер слайса. Мне это кажется ошибкой, поскольку в идеале вы должны сообщать об ошибках в наименьшем домене отказа, частью которого они являются, в данном случае это диск. (Хотя, по крайней мере, это легко обойти.)

person Dan    schedule 25.05.2018
comment
Сэр, не могли бы вы сказать мне, какая более правильная команда для получения дерева устройств. - person Bino Oetomo; 26.05.2018
comment
@BinoOetomo Большинство людей смотрят на вывод команды zpool, чтобы получить список / структуру устройств. Существует также libzfs для доступа к нему программно (на C или на языке, где вы можете вызывать функции C). Чтобы получить полное дерево устройств в системах на базе Solaris, используйте prtconf и libdevinfo. - person Dan; 26.05.2018