What guarantees does Linux make regarding the mapping of device names to the physical hard drives?
Which rules does it use to map physical hard drives to files in /dev/?
Eu não posso falar por todas as distribuições do Linux, mas posso falar sobre como o SUSE faz isso, no SUSE estão disponíveis estas opções
montar por
- nome do dispositivo
- código do dispositivo
- rótulo de volume
- caminho do dispositivo
- UUID
por nome do dispositivo Eu diria que é ruim porque faz com que o linux verifique o hardware e a ordem Em que ele vê unidades conectadas é como ele faz o mapeamento para sda, sdb e assim por diante. Portanto, se o dispositivo de inicialização e a partição forem chamados como sda e você simplesmente alternar a ordem das unidades em slots removíveis (em um servidor) ou alternar os cabos sata em um computador doméstico entre duas unidades, isso irá atrapalhar as coisas. Também minha experiência tem sido (em servidores com 8, 16 ou 24 baias de unidade) que muitas vezes vai para trás que o slot 0 não mapeia para sda ... se você tivesse 3 unidades, então o slot 2 é sda, slot 1 sdb, e slot 0 sdc. E adicione qualquer hardware temporário que seja mapeado como /dev/sda
e empurre as unidades para baixo em uma letra que perturba as coisas. Mas eu vou dizer que esse método é bom quando você configura uma unidade de sistema operacional de imagem de ouro que você planeja clonar ... você não precisa se preocupar com IDs de disco rígido ou WWN's mudando em um novo disco por um tempo. .. se for o disco somente no sistema, é provável que sempre apareça como sda.
FSTAB syntax:**
/dev/sdc2 / EXT3 acl,user_xattr 1 1
/dev/sdc1 /boot/efi VFAT
/dev/sdb1 /data XFS defaults 1 0
por device id é o que eu sempre uso porque resolve basicamente todos os problemas mencionados para "por nome de dispositivo", e funcionou bem para mim ao longo dos anos que quase tudo. Uma vez que a montagem é configurada pelo ID do dispositivo, as unidades precisam estar presentes ou conectadas. Se as unidades forem movidas ou o novo hardware for mapeado como /dev/sd?
, isso não afetará nada que tenha sido configurado anteriormente.
FSTAB syntax:
/dev/disk/by-id/scsi-35000aab12345a30-part2 / EXT3 acl,user_xattr 1 1
/dev/disk/by-id/scsi-35000aab12345a30-part1 /boot/efi VFAT
/dev/disk/by-id/scsi-3600404abc123def456-part1 /data XFS defaults 1 0
pelo UUID {identificador universalmente único} Acho que também é um bom, funciona muito parecido com "por device-id", mas não sei como o UUID é criado e se torna único ou se acaba sendo o mesmo que pelo id do dispositivo?
por rótulo de volume também pode funcionar bem desde que você ou alguém tenha feito um bom rótulo de volume para qualquer sistema de arquivos ou partição ou volume a ser montado. Tenho certeza que seria problemático se duas partições tivessem o mesmo rótulo de volume, como por exemplo "boot" por exemplo, suspeito qualquer volume que o lablel linux encontre primeiro é o que ele usaria se ele não relatasse duplicado rótulos de volume.
Além disso, tudo isso é baseado no linux Udev (para responder qual algoritmo é usado). Eu acredito que é o mesmo do Init linux mais antigo, assim como no mais novo linux do Systemd, já que o Udev é o pacote usado na maioria das distribuições do Linux. E eu acho que é principalmente a sintaxe em /etc/fstab
especificamente o primeiro campo ou coluna em cada linha é o que determina o método de montagem que vai acontecer (não algoritmo), que não há algum outro arquivo de configuração em algum lugar e eu digo isso porque você pode ter várias linhas em /etc/fstab
cada montagem algo diferente por um método de montagem diferente (por nome, id, uuid ou label) e tanto quanto eu sei mais nada em qualquer lugar mudou, exceto pela sintaxe no arquivo fstab.