É sobre online redimensionar.
Por exemplo, se você usar o LVM, criar um LV de tamanho 1G e colocar LUKS, é assim:
# lvcreate -L1G -n test VG
# cryptsetup luksFormat /dev/mapper/VG-test
# cryptsetup luksOpen /dev/mapper/VG-test lukstest
# blockdev --getsize64 /dev/mapper/VG-test
1073741824
# blockdev --getsize64 /dev/mapper/lukstest
1071644672
Portanto, o dispositivo LUKS é aproximadamente do mesmo tamanho que o dispositivo de teste VG (1G menos 2MiB usado pelo cabeçalho LUKS).
Agora, o que acontece quando você aumenta o LV?
# lvresize -L+1G /dev/mapper/VG-test
Size of logical volume VG/test changed from 1.00 GiB (16 extents) to 2.00 GiB (32 extents).
Logical volume test successfully resized.
# blockdev --getsize64 /dev/mapper/VG-test
2147483648
# blockdev --getsize64 /dev/mapper/lukstest
1071644672
O LV agora é 2G grande, mas o dispositivo LUKS ainda está preso em 1G, já que esse foi o tamanho em que foi originalmente aberto.
Quando você tiver luksClose
e luksOpen
, também será 2G - porque o LUKS não armazena um tamanho, o padrão é o tamanho do dispositivo no momento em que você o abre. Então, fechar e abrir (ou simplesmente reinicializar) atualizaria o mapeamento da cripta para o novo tamanho do dispositivo. No entanto, como você só pode fechar um contêiner depois de desmontar / parar tudo dentro dele, isso é basicamente um redimensionamento offline .
Mas talvez você tenha um sistema de arquivos montado no LUKS, ele está em uso e você não quer desmontá-lo para o redimensionamento, e é aí que cryptsetup resize
é redimensionado online operação.
# cryptsetup resize /dev/mapper/lukstest
# blockdev --getsize64 /dev/mapper/lukstest
2145386496
cryptsetup resize
atualiza o mapeamento de criptografia ativo para o novo tamanho do dispositivo, não requer um montante, e então você pode seguir com resize2fs
ou o que quer que também aumente o sistema de arquivos montado online.
Se você não se importa em reinicializar ou remontar, você nunca precisará do cryptsetup resize
, pois isso acontece automaticamente off-line. Mas se você quiser fazer on-line , essa é a única maneira.
Ao encolher ( cryptsetup resize --size x
), o redimensionamento é temporário. O LUKS não armazena o tamanho do dispositivo, então da próxima vez que você luksOpen, ele simplesmente usará o tamanho do dispositivo novamente. Então encolhendo os bastões apenas se o dispositivo de apoio também fosse reduzido de acordo.
Para uma redução bem-sucedida, você tem que trabalhar para trás ... crescer é aumentar a partição primeiro, depois LUKS, depois o sistema de arquivos ... encolher é encolher primeiro o sistema de arquivos e a partição por último.
Se o redimensionamento não funcionar, é muito provável que o dispositivo de apoio não seja redimensionado, por exemplo, o kernel pode recusar alterações na tabela de partição enquanto a unidade estiver em uso. Verifique com o blockdev que todas as camadas de dispositivos têm os tamanhos que você espera que eles tenham.