Что находится позади дискового соглашения о присвоении имен Linux с sdX и hdX?

Кто-то может сказать мне, что находится позади hdX и sdX соглашения о присвоении имен для жестких дисков в соответствии с Linux? Я понимаю, что это - "конвенция", но что это означает? Это означает, например, что диск SCSI нужно назвать sdX, или он не будет работать?

Фон - то, что я слоняюсь без дела с пользовательской основанной на Linux ОС и VMware, и таким образом, я могу назвать диски вообще, я хочу. Я знаю, что конвенция хороша для пользователей, я просто задаюсь вопросом, требуется ли она ядром.

6
задан 01.11.2014, 20:08

3 ответа

Ядро имеет дело с двумя типами дисков:

  • IDE-диски, как старые жесткие диски и многие CD/DVD-приводы - они используют hd$x имени
  • Диски SCSI - они используют sd$x имени

SATA, SAS и Карты памяти все использование подсистема SCSI, потому что это имеет определенные преимущества, которые не имеют более старые драйверы IDE. Таким образом, эти устройства контроллера абстрагированы для сходства с контроллерами SCSI, содержа устройства SCSI, к компьютеру хостинга.

С IDE-дисками соглашение о присвоении имен довольно твердо:

  • hda является ведущим приводом на первой шине
  • hdb является ведомым диском на первой шине
  • hde является ведущим приводом на третьей шине

... и так далее. (И да возможно иметь больше чем две Шины IDE.) Поэтому, когда у Вас есть CD или DVD-привод на Шине IDE, весьма распространено видеть те диски, подвешенные на второй Шине IDE (потому что это - способ, которым это всегда делалось - но это - другое обсуждение). Таким образом, довольно возможно иметь hdc, не имея hda и hdb.

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

Поэтому скажите, что Вы имели олдскульную шину SCSI и подвесили диски в идентификаторе 0, 3 SCSI, и 5. Те диски обнаружить как sda, sdb, и sdc соответственно.

Теперь предположите покупку четвертого диска, и по причинам, только бывшим известным себе Вы присваиваете его идентификатору 4 SCSI. Этот новый диск теперь обнаруживается как sdc, тогда как существующий ранее диск на идентификаторе 5 SCSI теперь sdd. Это могло вызвать все виды веселья, если Вы обращаетесь к разделам абсолютным именем - после начальной загрузки со вставленным новым диском,/dev/sdc1 не то, чем это раньше было, Вы имеете в виду/dev/sdd1 теперь.

Это - одна причина, почему Redhat (и другие) как e2label функциональность, где Вы присваиваете уникальную маркировку разделу и монтируете его в отношении этого.

Я не знаю, почему Linux был создан как это. Более старо-школьное OSs как Солярис вынуждает Вас обратиться к диску адресом SCSI - так/dev/dsk/c0t0d0s0 (контроллер 0, цель (или идентификатор) 0, диск 0 (наследие, не спрашивайте), часть (или раздел) 0) будет абсолютным, независимо от того, что другие диски находятся на шине. Это действительно переносит ту же проблему, если Вы вставляете новый scsi контроллер, представляя новый идентификатор шины, но это относительно редко, и большинство компьютеров знает для предпочтения их внутренних контроллеров по, добавленным позже. Linux путь может быть более простым - Вы не должны знать, или забота о, Ваша информация о контроллере/идентификаторе. Вы просто знаете, что это - первый, или второй диск. И для большинства пользователей это верно, у Вас только есть самое большее несколько дисков иметь дело с, таким образом, Вы действительно не заботитесь о том, чем это называют, пока можно найти его.

Числа раздела - что-то еще снова. Стандартный MS (DOS) таблица разделов, которая используется на ПК, имеет четыре основных раздела в нем. Ни больше, ни меньше. Они могут быть с 0 длинами, и нет никакой потребности запуститься путем определения раздела 1. Можно запустить с раздела 3, если Вы хотите. Я не думаю, что они даже должны быть непрерывными на диске - можно определить раздел 3 для запуска в блоке 0 и разделе 1 для запуска где-нибудь после этого. Большинство инструментов разделения Linux запишет таблицы разделов, запускающиеся с раздела 1 и так далее. Большинство ядер Linux будет рассматривать раздел с 0 длинами как пустой или несуществующий раздел и не объявит о его существовании.

При необходимости в большем количестве разделов необходимо отметить одного из Вас основной контейнер для "расширенных" разделов. Затем можно подразделить это на столько расширенных разделов, сколько Вам нравится (подвергающийся некоторому пределу, который я не знаю первое, что пришло на ум). Различие - то, что расширенные разделы всегда перечисляются ядром, запускающимся в разделе номер 5. Таким образом, если бы у Вас есть диск hda с двумя основными разделами и двумя расширенными разделами (по любой причине), они перечислить как hda1, hda2, hda5, и hda6. Раздел 3 был бы отмечен как содержащий расширенные разделы и не будет перечислен.

Таким образом, это - много слов для объяснения имен устройств. Это должно действительно только сигнализировать Вам, что устройством является IDE или управляемое SCSI устройство и давать Вам некоторое представление, как устройство делится.

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

6
ответ дан 07.12.2019, 15:54

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

Пока главные и незначительные номера устройств были правильными, что-то названное/dev/sda3 НЕ могло бы быть третьим разделом первого устройства SCSI на цепочке (или безотносительно); это мог на самом деле быть Энный раздел 2-го IDE-диска вместо этого.

Обратите внимание, что некоторые утилиты поддержки могут или не могут быть рады обработать не - "стандарт" dev имена. У каждого программиста есть их собственное понятие того, что делает разумную "проверку работоспособности".

2
ответ дан 07.12.2019, 15:54

IDE-диски снабжаются префиксом HD, в то время как SCSI, SATA и диски SAS снабжаются префиксом sd.

например:

первый раздел на первом диске SCSI:

/dev/sda1

третий раздел на третьем IDE-диске:

/dev/hdc3

эти префиксы определяются Linux в порядке, они присоединяются. Соглашение о присвоении имен устройства не может быть изменено, хотя можно изменить имена, они появляются как (маркировка) использование e2label:

e2label /dev/sdb1 /Docs
1
ответ дан 07.12.2019, 15:54

Теги

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