Como o Linux sabe qual é o disco rígido USB?

24

Atualmente, tenho o Linux Mint instalado no meu PC com uma partição do disco rígido USB montada como /home. Isso está funcionando bem.

Se eu instalar um segundo disco rígido USB, existe alguma chance do Linux ficar confuso entre os dois e tentar montar a partição do segundo disco rígido como /homena inicialização? Isso seria ruim.

Vindo do Windows, eu já vi muitas vezes acontecer que as letras de unidade não são "lembradas" corretamente, causando todos os tipos de problemas.

Acho que a pergunta principal é: como o Linux realmente sabe qual é o disco rígido USB /dev/sdbe qual é /media/misha/my_2nd_drive?

misha256
fonte
com uma partição do disco rígido USB montada como/home Você pode explicar como fez isso?
AL
Eu fiz isso durante a instalação do Linux Mint. Nesse ponto, é bastante fácil. Meu SSD apareceu como sda e o disco rígido USB apareceu como sdb . Eu coloquei /e swapno sda , e /homeno sdb . Mas eu não saberia como alterar a /homemontagem de uma instalação existente , nova demais para isso!
precisa saber é o seguinte
As respostas dizem o que você deve fazer, mas não acho que elas digam diretamente que sd[a-z]são simplesmente nomeadas na ordem de detecção. Nenhuma tentativa é feita para manter os nomes iguais. É tipicamente determinístico (o mesmo kernel no mesmo HW fornecerá o mesmo nome), mas um novo kernel com uma atualização no driver do controlador SATA pode fazer com que ele verifique as unidades SATA na ordem oposta. Em vez de tentar renomear dispositivos de bloco (como é feito com nameifou sem nomes de dispositivos Ethernet, geralmente com regras udev), existem nomes de UUID, rótulo e identificação (pelo número de série da unidade).
Peter Cordes
Eu vi servidores com discos SAS, onde reiniciar normalmente levam a um ordenamento diferente de sd[a-z]: a sondagem de discos é feito simultaneamente (em paralelo) e tudo o disco passa a ser detectado pela primeira vez torna-se sda, etc.
wurtel

Respostas:

26

Normalmente, a localização da porta USB (barramento / dispositivo) determina a ordem em que foi detectada. No entanto, não confie nisso.

Cada sistema de arquivos possui um UUID que significa identificador universal único (o FAT e o NTFS usam um esquema ligeiramente diferente, mas também possuem um identificador que pode ser usado como um UUID). Você pode confiar no UUID (Linux) para ser único. Para mais informações sobre UUIDs, consulte este artigo da Wikipedia .

Use o UUID do disco como argumento de montagem. Para descobrir o que é o UUID, execute o seguinte:

$ sudo blkid /dev/sdb1

( blkidprecisa ler o dispositivo, portanto, ele precisa de poderes de root, daí o sudo. Se você já se tornou root, sudonão é necessário.)

Você pode usar esse UUID da /etc/fstabseguinte maneira:

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

Não pode haver confusão sobre qual disco deve ser montado em / home.

Para montagem manual, você pode usar /dev/disk/by-uuid/.....

Wurtel
fonte
11
Incrível, eu nem sabia fstabaté agora (é assim que sou novo no Linux). Eu olhei para o meu fstabarquivo e tudo já foi identificado pelo UUID. O instalador do Linux Mint foi bom.
precisa saber é o seguinte
Você pode melhorar essa resposta explicando brevemente o que é o UUID e por que é único, o que o torna um identificador confiável.
AL
11

Se seu fstab referências particionarem como /dev/sdx, adicionar uma nova unidade certamente pode confundir o sistema. A prática recente, no entanto, é usar UUIDs de partição para identificar as partições.

Se o seu sistema tiver udev instalado (deve ser o caso de mais de 2.6 kernels do Linux), você pode usar a nomeação persistente fstab. Por padrão, as partições são identificadas via UUIDs:

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

Você pode, no entanto criar um rótulo de partição significativo como "home" e referenciar sua partição assim:

/dev/disk/by-label/home

Esses IDs podem ser usados ​​como substitutos de /dev/sdxin fstab.

Dmitry Grigoryev
fonte
Gostaria de poder marcar sua resposta correta também. Wurtel entrou em contato mais cedo. Mas, de qualquer forma, obrigado, você recebe o meu +1.
precisa saber é o seguinte
@ misha256 A ironia é que eu nem uso UUIDs em meus sistemas (porque a saída dfe mountfica ilegível). Os HDDs internos têm chances muito altas de serem detectados primeiro e na mesma ordem todas as vezes.
Dmitry Grigoryev 22/09
11
Se você usa etiquetas, pode usar LABEL=homeno seu fstab. Eu gosto de usar etiquetas como t-homepara o diretório inicial na minha máquina chamado tesla. Portanto, se eu colar o disco em outro sistema, não haverá dois sistemas de arquivos com o mesmo rótulo. É por isso que os instaladores do Linux geram UUIDs aleatórios e os usam no fstab, em vez de ter rótulos padrão que dariam à maioria dos sistemas os mesmos rótulos para seus FSes. @ misha256, você pode pensar nisso se rotular seus FSes.
Peter Cordes
11
@PeterCordes De fato, uso labes e tenho um esquema de nomeação destinado a tornar esses rótulos exclusivos.
Dmitry Grigoryev
11
Os UUIDs são ótimos e funcionam como indicado nas respostas. Mas, eles não são humanos. Sempre que crio partições (em qualquer lugar), dou-lhes rótulos legíveis por humanos exclusivos que fazem sentido para mim. Isso é especialmente útil ao escrever scripts de backup que lidam com várias unidades. Você não quer que uma fonte e um destino sejam revertidos por acidente! Além disso, sempre que você reformata uma partição, ela recebe um novo UUID e você precisa editar qualquer coisa que o use, enquanto você ainda pode usar o mesmo rótulo de antes e não precisar alterar nada.
Joe