Порядок импорта zpool в /dev/disk/by-id
Если у меня есть диск: sdi, и в нем есть три записи /dev/disk/by-id
:
scsi-SATA_WDC_WD6001FSYZ-_WD-WXB1HB4SFS7W -> ../../sdi
ata-WDC_WD6001FSYZ-01SS7B0_WD-WXB1HB4SFS7W -> ../../sdi
wwn-0x50014ee004032d28 -> ../../sdi
Сейчас пользуюсь zpool import -d /dev/disk/by-id zpoolname
, Как zpool определяет порядок трех записей? Я выполняю команду и выбираю ata-WDC_WD6001FSYZ-01SS7B0_WD-WXB1HB4SFS7W
, Но я хочу знать как.
Я проверяю код: https://github.com/zfsonlinux/zfs/blob/master/lib/libzfs/libzfs_import.c#L1387
Кажется это использовать readdir
? Но readdir
не гарантирует порядок сканирования, верно? И я думаю, что это не имеет смысла.
Благодарю.
1 ответ
Ну, вы посмотрели на код, который использует readdir
, что не гарантирует порядок, в котором записи считываются в.
Но последнее не имеет значения.
ZFS не волнует, ссылаются ли на узел устройства так или иначе. Его волнует, доступны ли через него данные на диске или нет. А если это не так, то эта конкретная запись каталога не будет кандидатом на импорт пула, так что это не имеет никакого значения.
Единственная причина, по которой вас это волнует, это если вы хотите, чтобы какое-то конкретное имя отображалось в zpool status
выход. И в этом случае вам не следует импортировать из / dev / disk /by-id (который, как вы заметили, есть несколько способов ссылки на один и тот же раздел), а вместо этого настраивать /etc/zfs/vdev_id. Conf, а затем импортировать из /dev/disk/by-vdev. (Вам, вероятно, нужно перезапустить udevadm trigger
первый.)
Как правило, не беспокойтесь о деталях реализации, если вы на самом деле не пользуетесь деталями реализации, потому что следующая версия может полностью изменить поведение, на которое вы смотрите. Вместо этого используйте документированные интерфейсы для получения желаемого эффекта.
Этого, конечно, можно было бы избежать, если бы кто-то поместил тип в отдельный компонент path, чтобы у нас было что-то вроде /dev/disk/by-id/scsi/SATA_WDC_WD6001FSYZ-_WD-WXB1HB4SFS7W, /dev/disk/by-id/ata/WDC_WD6001FSYZ-01SS7B0_WD-WXB1HB4SFS7W и /dev/disk/by-id/wwn/0x50014ee004032d28 вместо этого. Но увы. Вы могли бы сделать это в своей собственной системе, но это спутало бы всех остальных и их сценарии...