
A caixa é um microservidor HP, rodando Ubuntu 16.04. Recentemente, "atualizei" o dispositivo de inicialização para um SSD de 64 GB. Além disso, há uma unidade SATA de 1 TB.
geralmente ele inicializa /dev/sda1
como partição primária (no SSD) e /dev/sda5
como swap, e /dev/sdb1
aponta para a partição no HDD de 1 TB, que está montada em /mnt/media0
.
O problema é que às vezes isso muda tudo, e o SSD é agora /dev/sdb1
e /dev/sdb5
a partição de mídia é agora /dev/sda1
.
Isso, é claro, faz com que as montagens de troca e mídia falhem, pois são listadas /etc/fstab
usando seus /dev/sd*
nomes anteriores.
Então eu tenho:
Verifiquei o BIOS e ele lista consistentemente o SSD de 64 GB como a primeira unidade e o IDE de 1 TB como a segunda.
Tentei mudar
/etc/fstab
para fazer referência à unidade de mídia por rótulo de volume, mas isso faz com que o Ubuntu falhe na inicialização e me coloque em modo de recuperação.Tentei mudar
/etc/fstab
para referenciar as partições swap e (ext4) de mídia usando UUID (pois, na verdade, ele lista a partição primária)masEu então encontro o segundo problema que tenho.
Quando executo o seguinte para encontrar os UUIDs das várias partições...
ls /dev/disk/by-uuid
blkid
ambos listam apenas a entrada 1 – o UUID da partição primária. Só consigo ver o UUID da partição de mídia usando (em inicializações onde, de fato, é atribuído sdb1
obviamente)
tune2fs -l /dev/sdb1
mas, novamente, se eu usar esse UUID, /etc/fstab
o Ubuntu falhará ao inicializar e entrará no modo de recuperação.
Então, minhas perguntas são:
Existe alguma maneira de obter
/dev/sda
e/dev/sdb
parar de trocar entre unidades?Como posso fazer com que o sistema veja os UUIDs das outras partições para que eu possa usá-los
fstab
?e/ou existe alguma outra maneira de montar com segurança minhas partições swap e de mídia?
Responder1
Você poderia usar os nomes "disco/por-id" em /etc/fstab
, veja
ls -l /dev/disk/by-id
Observe que esses nomes de dispositivos também podem ser usados em outros arquivos (initrd, grub configs). Portanto, você pode atualizar sua configuração do grub e recriar o initrd também.
Responder2
Ele continua trocando o disco rígido porque diferentes kernels têm suporte ao udev e outros não têm suporte ao udev (eudev)!
Sim, eu também fui mordido por isso quando comecei a experimentar a substituição de sysv, openrc e s6 init (substituição do systemd).
O problema está nos utilitários grub e em seus arquivos de configuração ao construir diferentes imagens Linux vmlinuz dentro do mesmo disco, ESPECIALMENTE ao habilitar GRUB_DISABLE_LINUX_UUID
( /etc/default/grub
, et. al.) para uma construção de kernel e não para outras.
== Causa #1 ==
Então… quem é o culpado? O mais antigo não-systemd. A troca ocorre por não-systemd para tornar a unidade sda sempre o rótulo do disco inicial, independentemente de qual conector SATA/IDE é usado.
A ordenação da unidade é feita pelo dispositivo ATA (biblioteca SATA ou libata) e a reordenação é feita pelo drivers/scsi/ida_probe()
. Remova isso GRUB_DEVICE_BOOT
do seu /etc/default/grub
arquivo.
== Causa #2 ==
Especificar CONFIG_SCSI_DEBUG
como “sim” (ou como “m” se estiver usando initramfs com “ scsi_debug=add_host:1
em seus bootparams vmlinuz) definitivamente IRÁ aumentar o número do índice do rótulo “sd” de seu(s) disco(s) rígido(s) existente(s) em um: ou seja, seu sda1
se torna sdb1
.