Как статически привязать жесткие диски к именам /dev/sd*?

Puede hacerlo con la simple sustitución de parámetros de bash:

msg=$(< msg.txt)
# or, for this demo
msg="This is the commit message.
--PLACEHOLDER--
That's it."

commit="id1 - message 1
id2 - message 2
id3 - message 3"

final="${msg//--PLACEHOLDER--/"$commit"}"
echo "$final"
This is the commit message.
id1 - message 1
id2 - message 2
id3 - message 3
That's it.
2
01.08.2019, 17:56
1 ответ

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

Вам нужно будет написать сценарий автоматической -настройки RAID, чтобы определить, какие диски находятся в системе, и отличить корневой SSD от накопителя JBOD.

Одним из очевидных способов обнаружения корневого диска является запуск mount | grep " on / ".

В противном случае вы можете использовать /dev/disk/by-id/, ферму символических ссылок, заполненную udev. Каждая запись представляет собой символическую ссылку с именем, основанным на производителе и серийном номере диска, при этом символические ссылки указывают на блочные устройства для дисков (и разделы, если таковые имеются ). например. в одной из моих систем /dev/disk/by-idсодержит:

lrwxrwxrwx 1 root root  9 Jul 24 16:56 ata-ST2000DL003-9VT166_5YD1QFAG ->../../sdb
lrwxrwxrwx 1 root root 10 Jul 24 16:56 ata-ST2000DL003-9VT166_5YD1QFAG-part1 ->../../sdb1
lrwxrwxrwx 1 root root 10 Jul 24 16:56 ata-ST2000DL003-9VT166_5YD1QFAG-part9 ->../../sdb9
lrwxrwxrwx 1 root root  9 Jul 24 16:56 ata-WDC_WD20EARS-00MVWB0_WD-WCAZA5353040 ->../../sdd
lrwxrwxrwx 1 root root 10 Jul 24 16:56 ata-WDC_WD20EARS-00MVWB0_WD-WCAZA5353040-part1 ->../../sdd1
lrwxrwxrwx 1 root root 10 Jul 24 16:56 ata-WDC_WD20EARS-00MVWB0_WD-WCAZA5353040-part9 ->../../sdd9
lrwxrwxrwx 1 root root  9 Jul 24 16:56 ata-WDC_WD20EARS-00MVWB0_WD-WCAZA5379164 ->../../sdc
lrwxrwxrwx 1 root root 10 Jul 24 16:56 ata-WDC_WD20EARS-00MVWB0_WD-WCAZA5379164-part1 ->../../sdc1
lrwxrwxrwx 1 root root 10 Jul 24 16:56 ata-WDC_WD20EARS-00MVWB0_WD-WCAZA5379164-part9 ->../../sdc9
lrwxrwxrwx 1 root root  9 Jul 24 16:56 ata-WDC_WD20EARX-008FB0_WD-WCAZAJ827116 ->../../sda
lrwxrwxrwx 1 root root 10 Jul 24 16:56 ata-WDC_WD20EARX-008FB0_WD-WCAZAJ827116-part1 ->../../sda1
lrwxrwxrwx 1 root root 10 Jul 24 16:56 ata-WDC_WD20EARX-008FB0_WD-WCAZAJ827116-part9 ->../../sda9

Это один диск Seagate 2 ТБ и три диска WD 2 ТБ, каждый с двумя разделами (, разделами 1 и 9 -, и да, они используются для пула zfs ).

Если ваш сценарий создал один раздел на каждом диске RAID (настоятельно рекомендуется )и использовал этот раздел вместо всего диска, было бы легко идентифицировать диски, которые уже используются (, т.е. раздел )и те, которые не являются (и поэтому могут безопасно использоваться в рейд-массиве ).

В этом каталоге почти наверняка будут имена устройств, начинающиеся с wwn-. Это идентификаторы World Wide Name , принадлежащие каждому диску. Я нахожу их менее полезными, чем имена поставщиков и серийных номеров, потому что они не предоставляют никакого очевидного способа физически идентифицировать диски без использования таблицы поиска для перевода кодов OUI производителям.

1
27.01.2020, 22:16

Теги

Похожие вопросы