Solução de problemas de inicialização da instância do Linux do Amazon EC2 devido a volume errado
Em algumas situações, um volume diferente do volume associado a /dev/xvda
ou a /dev/sda
torna-se o volume raiz de uma instância do Linux. Isso pode acontecer quando você associar o volume do dispositivo raiz de outra instância, ou um volume criado a partir do snapshot de um volume do dispositivo raiz, a uma instância com um volume do dispositivo raiz existente.
Isso ocorre por conta de como funciona o ramdisk inicial no Linux. O volume definido como /
em /etc/fstab
é escolhido e, em algumas distribuições, isso é determinado pelo rótulo anexado à partição do volume. Mais especificamente, você descobrirá que seu /etc/fstab
parece com o seguinte:
LABEL=/ / ext4 defaults,noatime 1 1
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
Se você verificar os rótulos dos dois volumes, verá que ambos contêm o rótulo /
:
[ec2-user ~]$
sudo e2label /dev/xvda1
/
[ec2-user ~]$
sudo e2label /dev/xvdf1
/
Neste exemplo, pode acontecer de /dev/xvdf1
acabar sendo o dispositivo raiz no qual sua instância se inicia após a execução inicial do ramdisk, em vez de o volume /dev/xvda1
do qual você pretendeu inicializar. Para resolver isso, use o mesmo comando e2label para alterar o rótulo do volume associado do qual você não deseja inicializar.
Em alguns casos, especificar um UUID em /etc/fstab
pode resolver isso. No entanto, se ambos os volumes vierem do mesmo snapshot ou o secundário for criado a partir de um snapshot do volume primário, eles compartilharão um UUID.
[ec2-user ~]$
sudo blkid
/dev/xvda1: LABEL="/" UUID=73947a77-ddbe-4dc7-bd8f-3fe0bc840778 TYPE="ext4" PARTLABEL="Linux" PARTUUID=d55925ee-72c8-41e7-b514-7084e28f7334 /dev/xvdf1: LABEL="old/" UUID=73947a77-ddbe-4dc7-bd8f-3fe0bc840778 TYPE="ext4" PARTLABEL="Linux" PARTUUID=d55925ee-72c8-41e7-b514-7084e28f7334
Para alterar a identificação de um volume ext4 associado
-
Use o comando e2label para alterar a identificação do volume para outra coisa além de
/
.[ec2-user ~]$
sudo e2label /dev/xvdf1
old/
-
Verifique se o volume tem a nova identificação.
[ec2-user ~]$
sudo e2label /dev/xvdf1
old/
Para alterar a identificação de um volume xfs associado
-
Use o comando xfs_admin para alterar a identificação do volume para outra coisa além de
/
.[ec2-user ~]$
sudo xfs_admin -L
writing all SBs new label = "old/"old/
/dev/xvdf1
Depois de alterar a identificação do volume como mostrado, será possível reiniciar a instância e selecionar o volume adequado pelo ramdisk inicial quando a instância for inicializada.
Importante
Se você pretende desanexar o volume com o novo rótulo e devolvê-lo a outra instância para ser usado como o volume raiz, deverá executar novamente o procedimento acima e alterar o rótulo do volume de volta ao seu valor original. Caso contrário, a outra instância não é inicializada porque o disco ramdisk não consegue encontrar o volume com o rótulo /
.