Как Linux узнает, какой жесткий диск USB какой?

24

В настоящее время на моем компьютере установлена ОС Linux Mint с установленным разделом жесткого диска USB /home. Это работает хорошо.

Если я установлю второй жесткий диск USB, есть ли шанс, что Linux запутается между ними, и попытается смонтировать раздел второго жесткого диска, как /homeпри загрузке? Это было бы плохо.

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

Я предполагаю, что главный вопрос: как Linux на самом деле знает, что такое жесткий диск USB, /dev/sdbа какой /media/misha/my_2nd_drive?

misha256
источник
с разделом жесткого диска USB, смонтированным как/home Вы можете объяснить, как вы это сделали?
AL
Я сделал это во время установки Linux Mint. На данный момент это довольно просто. Мой SSD появился как sda, а жесткий диск USB - как sdb . Я ставил /и swapна sda , и /homeна sdb . Но я не знаю, как изменить существующее /homeмонтирование установки, слишком новое для этого!
misha256
Ответы говорят, что вы должны делать, но я не думаю, что они прямо говорят, что sd[a-z]просто названы в порядке обнаружения. Не делается никаких попыток сохранить имена одинаковыми. Обычно он детерминирован (то же самое ядро ​​на том же HW будет давать то же наименование), но новое ядро ​​с обновлением драйвера контроллера SATA может заставить его сканировать диски SATA в обратном порядке. Вместо того, чтобы даже пытаться переименовывать блочные устройства (как это делается с nameifили с / с для имен устройств Ethernet, обычно с правилами udev), существуют имена UUID, label и id (по серийному номеру диска).
Питер Кордес
Я видел серверы с дисками SAS, где перезагрузка обычно приводила к другому порядку sd[a-z]: проверка дисков выполняется одновременно (параллельно), и какой бы диск ни обнаруживался в первую очередь, это делается sdaи т. Д.
wurtel

Ответы:

26

Обычно расположение порта USB (шина / устройство) определяет порядок, в котором он обнаружен. Однако не полагайтесь на это.

Каждая файловая система имеет UUID, который обозначает универсально уникальный идентификатор ( FAT и NTFS используют немного разные схемы, но они также имеют идентификатор, который можно использовать в качестве UUID). Вы можете полагаться на (Linux) UUID, чтобы быть уникальным. Для получения дополнительной информации о UUID см. Эту статью в Википедии .

Используйте UUID диска в качестве аргумента монтирования. Чтобы узнать, что такое UUID, запустите:

$ sudo blkid /dev/sdb1

( blkidНеобходимо прочитать устройство, следовательно, ему нужны полномочия root, отсюда и sudo. Если вы уже стали пользователем root, то в sudoэтом нет необходимости.)

Затем вы можете использовать этот UUID /etc/fstabследующим образом:

UUID=7e839ad8-78c5-471f-9bba-802eb0edfea5 /home ext4 defaults 0 2

Тогда не может быть никакой путаницы относительно того, какой диск должен быть смонтирован в / home.

Для ручного монтажа вы можете использовать /dev/disk/by-uuid/.....

wurtel
источник
1
Круто, я даже не знал об этом fstabдо сих пор (вот как я новичок в Linux). Я посмотрел на мой fstabфайл, и все уже идентифицировано UUID. Установщик Linux Mint сработал.
misha256
Вы можете улучшить этот ответ, кратко объяснив, что такое UUID и почему он уникален, что делает его надежным идентификатором.
AL
11

Если вы fstabссылаетесь на разделы как /dev/sdx, то добавление нового диска, безусловно, может запутать систему. Однако недавняя практика заключается в использовании UUID разделов для идентификации разделов.

Если ваша система udevустановлена ​​(должно быть в случае с ядром Linux 2.6+), вы можете использовать постоянное именование в fstab. По умолчанию разделы идентифицируются с помощью UUID:

/dev/disk/by-uuid/31f8eb0d-612b-4805-835e-0e6d8b8c5591

Однако вы можете создать значимую метку раздела, например «home», и сослаться на свой раздел следующим образом:

/dev/disk/by-label/home

Эти идентификаторы могут быть использованы в качестве замены /dev/sdxв fstab.

Дмитрий Григорьев
источник
Хотел бы я отметить ваш ответ правильно. Wurtel был в контакте ранее. Но все равно спасибо, вы получите мой +1.
misha256
@ misha256 Ирония в том, что я даже не использую UUID в своих системах (потому что вывод из dfи mountстановится нечитаемым). Внутренние жесткие диски имеют достаточно высокие шансы быть обнаруженными первыми и в том же порядке каждый раз.
Дмитрий Григорьев
1
Если вы используете метки, вы можете использовать LABEL=homeв своем fstab. Мне нравится использовать ярлыки, например, t-homeдля домашнего каталога на моей машине под названием tesla. Поэтому, если я вставлю диск в другую систему, не будет двух файловых систем с одинаковой меткой. Вот почему установщики Linux генерируют случайные UUID и используют их в fstab вместо меток по умолчанию, которые дают большинству систем одинаковые метки для их FS. @ misha256, вы можете подумать об этом, если вы маркируете свои FS.
Питер Кордес
1
@PeterCordes Я действительно использую лаборатории, и у меня есть схема именования, нацеленная на то, чтобы сделать эти этикетки уникальными.
Дмитрий Григорьев
1
UUID отличные и работают, как отмечено в ответах. Но они не дружат с людьми. Всякий раз, когда я создаю разделы (где угодно), я даю им уникальные удобочитаемые ярлыки, которые имеют смысл для меня. Это особенно полезно при написании сценариев резервного копирования для нескольких дисков. Вы не хотите, чтобы источник и пункт назначения изменились случайно! Кроме того, всякий раз, когда вы переформатируете раздел, он получает новый UUID, и вам нужно редактировать все, что использовало этот UUID, тогда как вы все равно можете использовать ту же метку, что и раньше, и не нужно ничего менять.
Джо