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 0Se 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, existe a possibilidade de /dev/xvdf1 se tornar o volume raiz pelo qual a instância inicializa depois que o ramdisk inicial é executado, substituindo o volume /dev/xvda1 que você pretendia usar para inicialização. 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/xvdf1old/ -
Verifique se o volume tem a nova identificação.
[ec2-user ~]$sudo e2label /dev/xvdf1old/
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 -Lwriting 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 /.