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

cp не знает об открытых файлах. Таким образом, если первый пользователь загрузит большой файл, и cronjob (или любой другой процесс) начинает копировать этот файл, то он только скопирует столько, сколько был уже записан. Можно думать об этом таким образом - cp делает копию того, что в настоящее время находится на диске, неважно, если файл завершен. Иначе Вы не могли скопировать файлы журнала, например.

26
21.03.2018, 18:09
11 ответов

Если это - 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 обратите внимание на то, что это решение делает маркировки характерными для отсеков жесткого диска, а не дисков в них. Таким образом, если Вы используете маркировки /dev/bay1 и /dev/bay2 и у Вас есть жесткий диск A в отсеке 1 и жесткий диск B в отсеке 2, затем /dev/bay1 относится к диску A и /dev/bay2 относится к диску B. По некоторым причинам, при свопинге A и дисков B Вы добираетесь /dev/bay1 обращение к диску B и /dev/bay2 обращение к диску A. От Вашего вопроса я полагаю, что это - Ваше намерение. Исправьте меня, если я неправ.

7
27.01.2020, 19:40
  • 1
    я рекомендовал бы использовать номер модели и порядковый номер для такого соответствия. Это действительно все еще идет с протестами, упомянутыми slm, но гарантирует, что диск "маркировка" остается последовательным независимо от того, что происходит с ним или любые другие диски в системе. –  a CVn 03.10.2013, 13:50
  • 2
    Лучше все еще предпочитает гарантируемый - уникальный WWN. См. этот ответ. –  Tom Hale 11.01.2017, 06:55

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

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

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

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" диски, включая диски SAS и SATA. в системах только с дисками SATA, ata-* работал бы также),

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

# list_disks | sort
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 на контроллере SAS LSI 2008.

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

12
27.01.2020, 19:40
  • 1
    я думаю, что это - лучшее решение моей фактической проблемы, но я не могу принять это как ответ, потому что это не отвечает на вопрос. Если я не изменяю вопрос, который является, вероятно, не хорошей идеей.Спасибо. –  dummzeuch 04.10.2013, 10:40
  • 2
    без проблем, поскольку Вы сказали это, непосредственно не отвечал на вопрос. но это было полезно, и надо надеяться кто-то еще найдет это полезным в будущем. btw, вот улучшенная версия псевдонима: alias list_disks='find /dev/disk/by-id/ -iname scsi-* -o -iname usb-* | grep -v -- -part | while read disk ; do echo $(basename $(readlink $disk)) $(basename $disk); done | sed -re "s/(usb|scsi)-// ; s/(SATA|Generic)_//" | sort'. это находит диски usb также и избавляется от посторонних данных в выводе. –  cas 04.10.2013, 11:51

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

Таким образом да, если существует ext2/3/4 файловая система непосредственно на /dev/sda, можно маркировать его все равно как тот, который шел бы /dev/sda1.

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

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

6
27.01.2020, 19:40

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

Один путь состоит в том, чтобы использовать номер модели диска и порядковый номер. В Linux можно получить те идентификаторы с hdparm -i /dev/sdX. Хорошая вещь о порядковом номере состоит в том, что он мог бы быть уже распечатан на этикетке производителя. (Я предполагаю, что Вы главным образом заботитесь о Linux, так как Вы упомянули e2label в Вашем вопросе. Если так, отредактируйте свой вопрос и добавьте тег .)

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

Если Вы хотите определить его чем-то в содержании диска, Вы могли использовать диск GUID, который хранится в заголовке таблицы разделов GPT (байты 56-71 из LBA 1). Это - произвольная случайная строка, а не маркировка по Вашему выбору, но это похоже на маркировку, в которой это является персистентным, пока Вы не решаете ударить таблицу разделов. В Linux Вы видите диск использование GUID gdisk -l /dev/sdX.

3
27.01.2020, 19:40

Для ответа на вопрос, если возможно маркировать диск в противоположность разделу ответ нет. Я не знаю ни о каком методе, чтобы сделать так.

Можно использовать метод, обрисованный в общих чертах @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" 
3
27.01.2020, 19:40
  • 1
    у установки, являющейся системно-зависимым. От вопроса я думаю, что OP знает об этом: они хотят маркировать отсеки HDD, а не фактические жесткие диски в них. Я добавляю его как примечание к моему ответу на всякий случай. –  Joseph R. 02.10.2013, 17:53
  • 2
    @Marco, Но blkid кажется, только перечисляет разделы не устройства, который не является тем, чем интересуется OP. –  Joseph R. 02.10.2013, 18:17
  • 3
    Нет, я на самом деле хотел маркировать диски, не отсеки. Но я рассмотрю эту возможность. –  dummzeuch 02.10.2013, 19:58
  • 4
    Возможно маркировать диск, сам Linux выполняет в этом /dev/disk/by-id и можно сделать это udev- разработайте как показано в этом ответе. –  Tom Hale 11.01.2017, 06:51
  • 5
    @TomHale - Вы упускаете мою суть. Та маркировка не применяется к самому жесткому диску, а скорее сохраняется в самой системе Linux. Если необходимо было удалить тот жесткий диск из системы, маркировка больше не доступна в других системах, к которым был бы смонтирован жесткий диск. Это системно-зависимо, поэтому мой совет корректен. Инвертируйте свой DV. –  slm♦ 11.01.2017, 20:33

Диск уже маркирован как sda, sdb, sdc... Разделы затем маркированы, например, на sda: sda1, sda2...

Можно перечислить все маркировки для дисков и разделов с ls /dev/sd*

-1
27.01.2020, 19:40
  • 1
    К сожалению, эти имена устройств изменяются, если я перемещаю диск от одного компьютера до другого или от одного контроллера до другого. –  dummzeuch 02.10.2013, 19:57

На основе ответов я добрался (Спасибо парни!), кажется, нет никакого способа на самом деле маркировать диски, но только разделы. Таким образом, ответ, вероятно, является "НЕТ".

Я пойду с предложениями, предложенными @cas и @200_success: я продолжу работать порядковые номера дисков с этикеткой к дверям отсека.

Создание небольшого раздела на каждом диске только, чтобы смочь маркировать этот раздел (как предложено @Stephane Chazelas) является также опцией, но я думаю, что это слишком сбивало бы с толку кого-то еще, кому, возможно, придется обслужить систему в более позднее время.

1
27.01.2020, 19:40

Если вы ls /dev/disk-by-path/pci*...

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

Используйте blkid /dev/disk-by-path/pci*чтобы увидеть, какие разделы дисков находятся на пути PCI.

Вы также можете монтировать по этому пути.

0
27.01.2020, 19:40

Мне нравится Решение @cas, но вот мой 2 ¢

for i in /dev/sd?
do
  echo "$i"
  /usr/sbin/smartctl -a "$i" | grep Serial
  /usr/sbin/smartctl -a "$i" | grep "Device Model"
  echo
done
0
27.01.2020, 19:40

Создайте правило udev , используя гарантированный уникальный WWN диска (если он есть), в противном случае используйте объединенные идентификаторы поставщика и серийный ID:

  1. Получите требуемые значения:

     udevadm info -q all / dev / <ВАШЕ- УСТРОЙСТВО- ЗДЕСЬ> | egrep "(WWN | SERIAL | VENDOR_ID) =" 
     
  2. Помассируйте эти значения в udev правила , например:

     ENV {DEVTYPE} == "disk", ENV {ID_WWN} == "0x5000c1cd31d48c87", SYMLINK + = "4TBseagate" 
     
    ENV {DEVTYPE} == "disk", ENV {ID_VENDOR_ID} == "0781", ENV {ID_SERIAL} == "SanDisk_Cruzer_Blade_4C530263101009 121490-0: 0", SYMLINK + = "8GBsandisk" 
     
  3. триггер udevadm

Для автоматического наименования символической ссылки с использованием значений, заданных udevadm info -q all / dev / , вы можете использовать:

SYMLINK+="disk-$env{ID_VENDOR}-$env{ID_SERIAL_SHORT}"

Также возможно создать переменные ENV из значений ATTRS , чтобы получить более короткий уникальный идентификатор.

1
27.01.2020, 19:40

Существует возможность на пустом диске :использовать опцию -L для форматирования полного диска в режиме btrfs:

mkfs.btrfs -L MYLABEL /dev/sdz

затем заново создайте таблицу разделов...

0
27.01.2020, 19:40

Теги

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