Como posso desenvolver um sistema de arquivos ext4 dentro de um volume dm-crypt / LVM?

1

Eu tenho um disco com este formato:

sdc                          8:32   0   1,8T  0 disk  
└─sdc1                       8:33   0   1,8T  0 part  
  ├─vg-lv1 (dm-0)          254:0    0   900G  0 lvm   /media/lv1
  └─vg-lv2 (dm-1)          254:1    0   923G  0 lvm   
    └─lv2 (dm-9)           254:9    0   923G  0 crypt /media/lv2

lv2 é um sistema de arquivos ext4, mas o dispositivo de bloco abaixo dele (o volume lógico vg-lv2 ) é criptografado com dm-crypt .

Quais são as etapas para o crescimento seguro desse sistema de arquivos?

Já ampliei o volume lógico e sei que terei de resize2fs , mas acredito que terei que fazer algo na camada dm-crypt .

Eu criei primeiro este sistema de arquivos com duas etapas (em pseudo-shellscript):

  • Limpar o dispositivo de bloco

    1. lvcreate vg-lv2
    2. $randompassword = $(pwgen)
    3. cryptsetup luksFormat --cipher aes-cbc-essiv:sha256 --key-size 256 /dev/mapper/vg-lv2 , com $randompassword como chave.
    4. cryptsetup luksOpen /dev/mapper/vg-lv2 sanitize
    5. nice -20 ionice -c 3 dd if=/dev/zero of=/dev/mapper/sanitize bs=1M
    6. cryptsetup remove sanitize

  • Prepare o dispositivo de bloco para uso em produção

    1. Escolha uma frase secreta
    2. cryptsetup luksFormat --cipher aes-cbc-essiv:sha256 --key-size 256 /dev/mapper/vg-lv2 , com a nova chave.
    3. cryptsetup luksOpen /dev/mapper/vg-lv2 lv2
    4. mke2fs /dev/mapper/vg-lv2 (não me lembro dos argumentos, mas provavelmente não havia nenhum)

Quando pronto para uso em produção, o dispositivo de bloco não criptografado foi zerado (efetivamente gravando dados pseudo-aleatórios no dispositivo criptografado).

Agora, como quero aumentar o sistema de arquivos, também devo dar o primeiro passo e higienizá-lo antes de usá-lo. Isto é o que eu não sei como fazer:

  1. Eu posso apenas chamar as funções de redimensionamento e eventualmente vou usar todo o espaço, mas não me sinto confortável com essa idéia.
  2. Eu posso diminuir o volume lógico para o tamanho que ele era antes, criar um novo, fazer essas etapas nele, excluí-lo, aumentar novamente o LV e esperar que ele ocupe o espaço do volume lógico previamente higienizado ( "esperança" é a razão pela qual eu não gosto dessa abordagem)
  3. Preciso saber, sem sombra de dúvida, quais são os deslocamentos em /dev/mapper/vg-lv2 e dd if=/dev/zero of=/dev/mapper/vg-lv2 bs=1M skip=$SKIPBLOCKS . Eu posso não obter essa $SKIPBLOCKS variável errada, então o que eu realmente preciso saber é como eu posso saber, dado um sistema de arquivos já existente, que é o primeiro bloco vazio após ele, então eu posso randomize esse espaço em diante.
por Valmiky Arquissandas 18.07.2014 / 05:43

1 resposta

3

Você pode redimensionar um volume dmcrypt com resize :

cryptsetup --help|grep -i resize
    resize <name> - resize active device

Depois de concluído, você pode resize2fs .

Quanto a você comentar sobre os dados aleatórios: você também pode fazer isso dentro do sistema de arquivos. Então, redimensione, monte e preencha todo último byte com um arquivo aleatório:

dd if=/dev/urandom of=/deleteme bs=1M

E, em seguida, exclua o arquivo.

(para obter melhores resultados, use tune2fs para definir a contagem de blocos reservados para 0% (temporariamente))

    
por 18.07.2014 / 08:03