Estamos tendo um problema estranho ao anexar um volume EBS a uma instância do Linux (NixOS neste caso) em execução (com a finalidade de aumentar o sistema de arquivos nesse volume anexado; nele está o sistema de arquivos raiz NixOS para outra máquina que fechamos baixa).
Antes de anexar, tudo está normal:
# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda 202:0 0 100G 0 disk
└─xvda1 202:1 0 100G 0 part
Após a anexação, lsblk
estranhamente afirma que a partição do volume anexado contém a /
partição montada da máquina atual:
# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda 202:0 0 100G 0 disk
└─xvda1 202:1 0 100G 0 part /nix/store
xvdf 202:80 0 400G 0 disk
└─xvdf1 202:81 0 200G 0 part /
Isso não faz o menor sentido:
Apenas "conectar" esse disco faz o Linux pensar que a montagem do sistema de arquivos raiz acabou de "virar" para o novo disco. O /nix/store
(que é uma montagem de ligação somente leitura do NixOS) permanece no disco adequado de alguma forma.
Não há mensagens no dmesg
/ journalctl
além do Linux notando que um disco foi anexado:
Apr 28 11:57:21 mymachine kernel: blkfront: xvdf: barrier or flush: disabled; persistent grants: disabled; indirect descriptors: enabled;
Apr 28 11:57:21 mymachine kernel: xvdf: xvdf1
Em fdisk -l
, os dois discos parecem normais e têm Disk identifier
s diferentes.
É impossível umount /dev/xvdf1
; diz que a montagem está ocupada.
Para o objetivo de aumentar a partição, growpart /dev/xvdf 1
funciona de qualquer maneira, mas resize2fs /dev/xvdf1
falha com:
Filesystem at /dev/xvdg1 is mounted on /; on-line resizing required
old_desc_blocks = 25, new_desc_blocks = 50
resize2fs: No space left on device While checking for on-line resizing support
O que está acontecendo aqui, por que o Linux confunde esses discos?
O motivo são as
by-label
montagens.Por motivos de automação declarativa (temos muitas máquinas), cada um dos sistemas de arquivos raiz de nossa máquina tem o mesmo rótulo de sistema de arquivos ext4
nixos
:Anexar dois desses à mesma máquina confunde o Linux.
Então as soluções são:
by-label
com o mesmo rótulo.