Nomeação de HDD no Linux?

5

O Linux tenta dar uma unidade a mesma letra a cada vez?
Por exemplo, se era para conectar duas unidades ao meu computador, em seguida, desconectá-los e reconectá-los na ordem inversa seria sdb e sdc correspondem às mesmas unidades físicas?

É isso que eu quero:

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.

A questão é que o Linux faz isso automaticamente? Se não como eu faria algo assim? (Eu quero ter três unidades que podem ser inicializadas em qualquer ordem, mas ainda montadas no mesmo ponto).

Billylegota
fonte

Respostas:

12

Não, o sd* os nomes são atribuídos sequencialmente, com base em qual disco foi detectado primeiro.

Se você precisar de um nome persistente, o udev já os fornece com base em várias propriedades, como rótulos / UUIDs do sistema de arquivos; rótulos / UUIDs de partições (somente GPT); caminhos de anexos de disco; WWNs SCSI; e assim por diante.

Dê uma olhada /dev/disk:

┌ rain ~ 
┘ tree /dev/disk/
/dev/disk/
├── by-id  (ID baseada em hardware)  Ata ├── ata-SlimtypeDVD_A_DS8A5SH_012160166091 - & gt; ../../sr0
Ata ├── ata-ST9640320AS_5WX1ZH91 - & gt; ../../sda
Ata ├── ata-ST9640320AS_5WX1ZH91-part7 - & gt; ../../sda7
Mm ├── mmc-SD4GB_0x0054b5cf - & gt; ../../mmcblk0
Mm ├── mmc-SD4GB_0x0054b5cf-part1 - & gt; ../../mmcblk0p1
W ├── wwn-0x5000c5002f0e9ce1 - & gt; ../../sda
W ├── wwn-0x5000c5002f0e9ce1-part1 - & gt; ../../sda1
│ └──…
By── por rótulo  (nome codificado no cabeçalho do sistema de arquivos)  Key ├── keycard - & gt; ../../mmcblk0p1
Rain ├── raindows - & gt; ../../sda6
Rain ├── rainhome - & gt; ../../sda5
│ └──…
By── por-partlabel  (nome codificado na tabela de partições GPT)  Arch ├── Arch - & gt; ../../sda4
E ├── EFI - & gt; ../../sda1
Home ├── casa - & gt; ../../sda5
Swap ├── swap - & gt; ../../sda8
│ └──…
By── por-partuuid  (Codificado por UUID na tabela de partições GPT)  14420948-2cea-4de7-b042-40f67c618660 - & gt; ../../sda4
? 1c737f60-8667-4d1a-9c92-5f5caf69be60 - & gt; ../../sda3
267bbb83-0bb5-48b8-aa4c-ffe328328f5b - & gt; ../../sda5
│ └──…
By── por-uuid  (UUID codificado no cabeçalho do sistema de arquivos)  0── 0C5C17E25C17C57C - & gt; ../../sda7
    4── 413b42fe-77f7-41d0-8d40-a7578f70995d - & gt; ../../sda4
    4── 4b30e8db-563e-4947-8d41-f242d94a6d3a - & gt; ../../mmcblk0p1
    8594cc4c-9c42-436a-8723-9a0611b1f97d - & gt; ../../sda5
    ───… 

Você pode usá-los como tal:

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

No fstab, uma sintaxe alternativa também funciona label e uuid Campos:

LABEL=arch_boot               /boot  ext4  rw,auto  0  1

Nota: Em algumas distribuições mais antigas do Linux, várias regras do udev tentativa para tornar o sd* nomes persistentes. Mas isso não podes trabalhar de forma confiável; muitas vezes o "renomear" falha porque outro disco foi atribuído o nome desejado. Esta função foi removida nas versões posteriores do udev. Não confie em sd* nomes sendo persistentes, mesmo que pareçam ser.

grawity
fonte
Todos os meus discos permanentes são montados pelo UUID, ou via LVM (que usa o UUID do PV abaixo). Isso inclui / boot. Afinal, o que acontece se você conecta outro disco rígido de outro sistema Linux (o que você pode fazer em algum momento)? Em qualquer caso, você nunca deve contar com sd* nomes sendo consistentes.
Michael Hampton
Então eu poderia apenas usar um script de shell para olhar o UUID de um HDD e montá-lo em um certo ponto baseado em seu UUID, certo? EX: se uuid == xxxxxxxxxx então monte / dev / sdb / whatever / meu / mount / point / é
Billylegota
@Billylegota: Hã? Não. Você pode usar UUIDs diretamente em / etc / fstab. Eu até dei dois exemplos exatamente para isso. O que você precisa de um script de shell?
grawity
@grawity: Desculpe, não vi essa parte. Apenas vi a árvore de / dev / disk e disse: "parece um trabalho para bash"; D
Billylegota
Existe uma maneira de obter o disco de forma consistente em vez da partição? / dev / sda em vez de / dev / sda1?
sep332