Можно ли маркировать дисковое устройство, а не раздел?

Можно ли маркировать дисковое устройство, а не раздел?

Я знаю о программе e2label и ее друзьях для прикрепления метки к разделу диска, например

e2label /dev/sda1 bla

Я хочу сделать нечто другое: я хочу создать метку для жесткого диска, то есть для /dev/sda, а не для раздела.

Возможно ли это и если да, то как?

EDIT: Предыстория: В случае с несколькими отсеками для жестких дисков я хотел бы поместить (бумажные) этикетки на дверцу физического отсека и логически поместить ту же этикетку на диск, который я туда вставил.

EDIT2: Речь идет о сервере Ubuntu Linux 12.04.

EDIT3: На разделах GPT также есть partlabel, который можно задать, например, с помощью parted. Смотритеhttps://serverfault.com/q/681088/76442

решение1

На ваш первоначальный вопрос уже есть несколько хороших ответов, поэтому я сосредоточусь на предыстории вашего вопроса — маркировке дисков.

Я использую серийный номер диска для печати этикеток для отсеков горячей замены — это лучший способ уникальной и единообразной идентификации диска. Он не изменится независимо от того, в какой отсек или к какому контроллеру он подключен.

Вы не указали, используете ли вы Linux или какой-то другой Unix, но в Linux вы можете получить список дисков (и разделов, которые мы хотим исключить) с их маркой, моделью и серийным номером, заглянув в каталог /dev/disk/by-id/. Я считаю, что следующий псевдоним bash полезен для этого:

alias list_disks='find /dev/disk/by-id/ -iname 'scsi-*' | grep -v -- -part | while read disk ; do echo $(readlink $disk | sed -e s:../../:: ) $(basename $disk); done'

(сопоставление scsi-*находит все диски типа «scsi», включая диски SATA и SAS. в системах, где есть только диски SATA, ata-*это также сработает)

например, на одной из моих серверных систем ZFS он выдает такой вывод:

# список_дисков | сортировка
sdb scsi-SATA_WDC_WD10EACS-00Z_WD-WCASJ2195141
sdc scsi-SATA_WDC_WD10EACS-00Z_WD-WCASJ2114122
sdd scsi-SATA_ST31000528AS_9VP4P4LN
sde scsi-SATA_ST31000528AS_6VP3FWAG
sdf scsi-SATA_ST31000528AS_9VP509T5
sdg scsi-SATA_ST31000528AS_9VP4RPXK
sdh scsi-SATA_OCZ-VECTOR_OCZ-0974C023I4P2G1B8
sdi scsi-SATA_OCZ-VECTOR_OCZ-8RL5XW08536INH7R
sdj scsi-SATA_ST31000528AS_9VP18CCV
SDK scsi-SATA_WDC_WD10EARS-00Y_WD-WMAV50933036

Как вы видите, список /dev/disk/by-id включает в себя марку и номер модели каждого диска, а также серийный номер. Все они являются дисками SATA, подключенными либо к портам SATA, либо к портам SAS на контроллере LSI SAS-2008.

Если бы у меня был подключен принтер этикеток, было бы достаточно просто печатать этикетки на основе выходных данных list_disks. Я использовал старый ручной принтер этикеток, потому что он у меня был. Напечатанные этикетки содержат только серийный номер без марки/модели (этого мне достаточно, чтобы идентифицировать диск, когда это нужно). Этикетки очень удобны, когда диск выходит из строя и его нужно заменить.

решение2

Если мы говорим о Linux, то я думаю, что вы можете добиться того, чего хотите, используя udevсоздание символической ссылки на ваши устройства. Если вы посмотрите на /etc/udev/rules.d, там есть файл с именем, 70-persistent-cd.rulesсодержимое которого содержит строки вроде:

SUBSYSTEM=="block", ENV{ID_CDROM}=="?*", ENV{ID_PATH}=="pci-0000:00:1f.2-scsi-:0:0:0", SYMLINK+="cdrom", ENV{GENERATED}="1"

Это делает то, что создает символическую ссылку /dev/cdromна устройство, идентифицированное по его адресу шины PCI. Вы должны быть в состоянии достичь того, что вы хотите, идентифицируя жесткий диск, используя его (номер отсека? извините, у меня нет опыта) и используя аналогичный синтаксис, чтобы добавить символическую ссылку /dev/bay1, например, как . Следующая статья о udevправилах написания может быть полезна:

Написание правил udev

Примечание

Благодаря ответу slm, обратите внимание, что это решение делает метки специфичными для отсеков HDD, а не для дисков внутри них. Таким образом, если вы используете метки /dev/bay1и /dev/bay2и у вас есть жесткий диск A в отсеке 1 и жесткий диск B в отсеке 2, то /dev/bay1относится к диску A и /dev/bay2относится к диску B. Если по какой-то причине вы меняете местами диски A и B, вы получаете /dev/bay1относится к диску B и /dev/bay2относится к диску A. Из вашего вопроса я полагаю, что это ваше намерение. Пожалуйста, поправьте меня, если я не прав.

решение3

Вы не e2label разделы, вы e2label файловые системы. Эти файловые системы могут быть на разделах файлов, на целых дисках, на сетевых блочных устройствах... это не имеет значения.

Итак, да, если непосредственно на имеется файловая система ext2/3/4 /dev/sda, вы можете пометить ее точно так же, как и ту, которая находится на /dev/sda1.

Теперь, если на диске нет файловой системы, /dev/sdaно он, например, /dev/sdaразбит (с помощью GPT, MBR, LVM...) на несколько разделов, то, очевидно, вы не можете использовать e2label /dev/sda.

В разбиении GPT вы можете давать имена разделам, так что вы можете создать раздел размером в один сектор с именем, которое поможет идентифицировать ваш диск. Вы можете сделать это с помощью команды cв gdisk.

решение4

Отвечая на ваш вопрос, можно ли маркировать диск, а не раздел, ответ — нет. Я не знаю ни одного способа сделать это.

Вы можете использовать метод, описанный @JosephR, но поймите, что эта настройка зависит от системы, поэтому если вы перенесете этот жесткий диск в другую систему, предложенная им "маркировка" будет потеряна. Она не привязана к диску каким-либо значимым образом.

Кстати, вы можете просмотреть метки и UUID, установленные для разных дисков, с помощью blkidкоманды.

Пример

$ blkid
/dev/sda1: LABEL="SYSTEM_DRV" UUID="XXXXXX" TYPE="ntfs" 
/dev/sda2: LABEL="Windows7_OS" UUID="XXXXXX" TYPE="ntfs" 
/dev/sda3: LABEL="Lenovo_Recovery" UUID="XXXX" TYPE="ntfs" 
/dev/sda5: UUID="XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" TYPE="ext4" 
/dev/sda6: UUID="XXXXXX-XXXX-XXXX-XXXX-XXXX-XXXX-XXXXXfG93LA" TYPE="LVM2_member" 
/dev/mapper/vg_grinchy-lv_root: UUID="XXXXXX-XXXX-XXXX-XXXX-XXXX-XXXX-XXXXX" TYPE="ext4" 
/dev/mapper/vg_grinchy-lv_swap: UUID="XXXXXX-XXXX-XXXX-XXXX-XXXX-XXXX-XXXXX" TYPE="swap" 
/dev/mapper/vg_grinchy-lv_home: UUID="XXXXXX-XXXX-XXXX-XXXX-XXXX-XXXX-XXXXX" TYPE="ext4" 

Связанный контент