Inicialização a partir do volume errado - Amazon Elastic Compute Cloud

Inicialização a partir do volume errado

Em algumas situações, é possível descobrir que um volume além do volume associado a /dev/xvda ou /dev/sda tornou-se o volume do dispositivo raiz da sua instância. 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
  1. Use o comando e2label para alterar a identificação do volume para outra coisa além de /.

    [ec2-user ~]$ sudo e2label /dev/xvdf1 old/
  2. 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 old/ /dev/xvdf1 writing all SBs new label = "old/"

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 /.