Como posso reduzir uma partição LUKS, o que 'cryptsetup resize' faz?

10

Estou em processo de redimensionamento de uma partição criptografada LUKS que contém um único sistema de arquivos ext4 (sem LVM ou algo assim). A FAQ sobre cryptsetup recomenda remover a partição antiga e recriá-la, mas isso é como perder muito tempo. Portanto, eu quero prosseguir manualmente, redimensionando cuidadosamente a partição.

Até agora, acho que preciso fazer:

  1. Crie um backup (criptografado) do sistema de arquivos. Importante! Você não será o primeiro a perder seus dados enquanto executa as seguintes tarefas.
  2. Desmonte o sistema de arquivos ext4 existente (por exemplo, inicializando em um Live CD). Se inicializar de um Live CD, monte a partição criptografada usando cryptsetup luksOpen /dev/sdXY ExistingExt4
  3. Redimensione o sistema de arquivos ext4 existente .
  4. cryptsetup resize /dev/mapper/ExistingExt4 -b $SECTORS
  5. Fechar / "desmontar" a partição LUKS usando cryptsetup luksClose ExistingExt4
  6. Diminuir o tamanho da partição.

Os passos acima estão corretos?

No passo 4, o que devo escolher para $SECTORS ? Esta etapa é necessária? A página de manual cryptsetup não é realmente descritiva na opção resize :

resize <name>
    resizes an active mapping <name>.
    If --size (in sectors) is not specified, the size of the underlying
    block device is used.

Por fim, se eu reduzir a partição ext4 em 15 GiB, posso assumir com segurança que 15 GiB podem ser removidos da partição existente usando parted ? Se sim, como fazer isso? Meu disco é particionado pelo GPT, se isso for importante.

    
por Lekensteyn 18.06.2012 / 23:30

2 respostas

12

Após o backup (etapa 1) e a desmontagem (entre 2 e 3), execute fsck para garantir que o sistema de arquivos seja íntegro:

e2fsck -f /dev/mapper/ExistingExt4

Além disso, os passos estão bem.

what should I choose for $SECTORS? Is this step even necessary?

Esta etapa é necessária, caso contrário, a partição ainda será exibida no lado antigo. Isso é confirmado com o Nautilus, mesmo após o redimensionamento com resize2fs , a partição LUKS apareceu como o tamanho antigo. Depois de executar cryptsetup resize , o número correto é mostrado. Esta etapa não é necessária. Ela afeta apenas o status do tamanho atual, conforme mostrado no navegador de arquivos. Depois de alterar o tamanho e fechar / abrir a partição novamente, o número é restaurado. Então, ao fechar a partição LUKS conforme mostrado mais tarde, isso ficará obsoleto.

$SECTORS pode ser determinado observando a saída de cryptsetup status ExistingExt4 :

    /dev/mapper/ExistingExt4 is active.
      type:    LUKS1
      cipher:  aes-cbc-essiv:sha256
      keysize: 256 bits
      device:  /dev/sda2
      offset:  2056 sectors
      size:    156049348 sectors
      mode:    read/write

Um setor é sempre 512 bytes (mencionado na página de manual cryptsetup ). Assim, para subtrair 15 GiB, use um tamanho de setor de 156049348 - 15 * 1024 * 1024 * 2 = 124592068 :

cryptsetup resize ExistingExt4 -b 124592068

Quanto ao redimensionamento da partição, parted funciona bem com partições GPT. O comando resize não funciona, porém, como uma solução alternativa (ou solução), remova as informações da partição e crie uma nova partição conforme inspirado em link :

# cryptsetup luksClose ExistingExt4
# parted /dev/sda2
GNU Parted 2.3
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) unit s
(parted) p
Model: ATA INTEL SSDSA2CW08 (scsi)
Disk /dev/sda: 156301488s
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start    End         Size        File system  Name    Flags
 1      34s      2082s       2049s                    Boot    bios_grub
 3      2083s    250034s     247952s     ext2         RootBoot
 2      250035s  156301438s  156051404s               Everything

Como 15 GiB precisam ser removidos, a nova extremidade se torna 156301438 - 15 * 1024 * 1024 * 2 = 124844158 . Desde que eu quero mudar a partição 2, primeiro tenho que removê-lo e, em seguida, recriá-lo com o rótulo "Tudo" (isso pode ser alterado se você quiser). Nota : este disco tem um layout GPT. Para o MBR, você deve substituir Everything por primary ou extended (não testado, o redimensionamento de uma partição no MBR foi não testado e é não recomendado porque é não testado).

AVISO : os seguintes comandos possuem dados destruídos . Não copie sem entender o que está acontecendo. As dimensões do setor devem ser alteradas, caso contrário você WILL destruirá sua (s) partição (ões). Eu não sou de forma alguma responsável por sua estupidez, BACKUP BACKUP BACKUP seus dados para um meio de armazenamento segundo antes de arriscar seus dados.

(parted) rm 2
(parted) mkpart Everything 250035s 124844158s
Warning: The resulting partition is not properly aligned for best performance.
Ignore/Cancel? ignore
(parted) p
Model: ATA INTEL SSDSA2CW08 (scsi)
Disk /dev/sda: 156301488s
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start    End         Size        File system  Name    Flags
 1      34s      2082s       2049s                    Boot    bios_grub
 3      2083s    250034s     247952s     ext2         RootBoot
 2      250035s  124844158s  124594124s               Everything
(parted) quit

No exemplo acima de parted , meus setores não estão alinhados, o que é um erro de uma instalação anterior, não preste muita atenção a ele.

É isso! Você pode usar cryptsetup status e file -Ls /dev/... para verificar se tudo está OK e, em seguida, reinicialize.

    
por 19.06.2012 / 00:59
3

Note que o KDE Partition Manager 2.2.0 pode fazer essas etapas e o redimensionamento das partições do LUKS funciona bem.

    
por 09.05.2016 / 13:25