5

Пытается ли Linux каждый раз указывать одну и ту же букву?
Например, если подключить два диска к моему компьютеру, отключите их и подключите их в обратном порядке, будут ли sdb и sdc соответствовать одним и тем же физическим дискам?

Это то, что я хочу:

First:  
    Plug in HDD A, which becomes sdb.
    Plug in HDD B, which becomes sdc.


Then:
    Plug in HDD B, which becomes sdc.
    Plug in HDD A, which becomes sdb.

Вопрос в том, делает ли Linux это автоматически? Если нет, то как бы я сделал что-то подобное? (Я хочу иметь три диска, которые можно инициализировать в любом порядке, но при этом они должны быть смонтированы в одной точке).

1 ответ1

12

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

Если вам нужно постоянное имя, udev уже предоставляет их на основе нескольких свойств, таких как метки файловой системы / UUID; метки разделов / UUID (только GPT); пути к дискам; SCSI WWN; и так далее.

Посмотрите на /dev/disk:

┌ rain ~ 
┘ tree /dev/disk/
/dev/disk/
├── by-id (hardware-based ID)
│   ├── ata-SlimtypeDVD_A_DS8A5SH_012160166091 -> ../../sr0
│   ├── ata-ST9640320AS_5WX1ZH91 -> ../../sda
│   ├── ata-ST9640320AS_5WX1ZH91-part7 -> ../../sda7
│   ├── mmc-SD4GB_0x0054b5cf -> ../../mmcblk0
│   ├── mmc-SD4GB_0x0054b5cf-part1 -> ../../mmcblk0p1
│   ├── wwn-0x5000c5002f0e9ce1 -> ../../sda
│   ├── wwn-0x5000c5002f0e9ce1-part1 -> ../../sda1
│   └── …
├── by-label (name encoded in filesystem header)
│   ├── keycard -> ../../mmcblk0p1
│   ├── raindows -> ../../sda6
│   ├── rainhome -> ../../sda5
│   └── …
├── by-partlabel (name encoded in GPT partition table)
│   ├── Arch -> ../../sda4
│   ├── EFI -> ../../sda1
│   ├── home -> ../../sda5
│   ├── swap -> ../../sda8
│   └── …
├── by-partuuid (UUID encoded in GPT partition table)
│   ├── 14420948-2cea-4de7-b042-40f67c618660 -> ../../sda4
│   ├── 1c737f60-8667-4d1a-9c92-5f5caf69be60 -> ../../sda3
│   ├── 267bbb83-0bb5-48b8-aa4c-ffe328328f5b -> ../../sda5
│   └── …
└── by-uuid (UUID encoded in filesystem header)
    ├── 0C5C17E25C17C57C -> ../../sda7
    ├── 413b42fe-77f7-41d0-8d40-a7578f70995d -> ../../sda4
    ├── 4b30e8db-563e-4947-8d41-f242d94a6d3a -> ../../mmcblk0p1
    ├── 8594cc4c-9c42-436a-8723-9a0611b1f97d -> ../../sda5
    └── …

Вы можете использовать их как таковые:

/dev/disk/by-label/arch_boot  /boot  ext4  rw,auto  0  1

В fstab альтернативный синтаксис также работает для полей label и uuid :

LABEL=arch_boot               /boot  ext4  rw,auto  0  1

Примечание. В некоторых старых дистрибутивах Linux различные правила udev пытаются сделать имена sd* постоянными. Но это не может работать надежно; часто "переименование" завершается неудачно, потому что другому диску присвоено желаемое имя. Эта функция была удалена в более поздних версиях udev. Не полагайтесь на постоянство имен sd* , даже если они кажутся.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .