Como fazer o sistema de arquivos em determinado byte offset

1

Eu tenho um disco de 3 TB com o btrfs que começa no início do disco (por exemplo, / dev / sdx em vez de / dev / sdx1). Enquanto isso, decidi que quero criptografar totalmente o disco (com luks), mas não tenho disco reserva para pegar os dados. Felizmente esse disco é preenchido com apenas ~ 1TB, e eu já encolhi o sistema de arquivos. Eu sei que um pode montar sistemas de arquivos em byte offset, mas existe uma maneira de criar sistemas de arquivos em byte offset ?

Para resolver meu problema, eu gostaria de criar um sistema de arquivos a 1.5TB, mover dados para lá, criar 1TB btrfs no sistema de arquivos luks no início do disco, mover os dados de volta, expandir o btrfs. Existe outra solução que não requer discos / espaços extras? E esta solução funcionaria no SSD? (a última pergunta é por mera curiosidade, eu tenho um HDD)

Nota: eu usaria dd para cp btrfs para outra parte do disco, mas eu ouvi que o btrfs não iria lidar com isso muito bem devido ao mesmo uid, ou algo assim.

    
por Olivetree 31.07.2016 / 00:33

1 resposta

0

A maneira normal de acessar um sistema de arquivos em um deslocamento em um disco é com uma partição. No entanto, como você não tem espaço para uma tabela de partições no início do disco, precisará passar por um método mais complexo.

Você pode usar um dispositivo de loop . Os dispositivos de loop são usados principalmente para fazer um arquivo aparecer como um dispositivo de bloco, mas você pode fazer o dispositivo de bloco iniciar em um deslocamento (e terminar em um deslocamento também) e o arquivo subjacente pode ser um dispositivo de bloco. um dispositivo de bloco que corresponde a um segmento de outro dispositivo de bloco. O comando para manipular dispositivos de loop é losetup .

losetup -o 1600g /dev/loop0 /dev/sda

Certifique-se de que seu sistema de arquivos realmente termine antes do início do dispositivo de loop. Então você pode copiá-lo por atacado. Não vejo por que você precisaria criar um sistema de arquivos diferente¹: você não deve duplicar um sistema de arquivos btrfs na mesma máquina, mas mover um (ou seja, você ganhou) nunca acesse os dois ao mesmo tempo) está ok.

head -c 1100g /dev/sda >/dev/loop0
mount -r /dev/loop0 /mnt
# Check that the filesystem looks fine
umount /mnt
losetup -d /dev/loop0

Você também pode fazer isso por uma chamada adequada de dd , mas isso é propenso a erros. É mais fácil prosseguir passo a passo e verificar os tamanhos antes de destruir os dados, se você configurar os dispositivos de bloco e, em seguida, alterar os dados aleatoriamente.

Agora que você moveu o sistema de arquivos, crie partições para não se deparar com esse problema novamente.

fdisk /dev/sda
…

Crie uma partição que comece no mesmo deslocamento que você passou para losetup acima. Escreva as alterações e verifique se você pode montar essa partição.

Agora crie uma partição para o volume LUKS, crie o volume LUKS ( cryptsetup luksFormat ) e mova o sistema de arquivos btrfs novamente para o volume LUKS. Verifique se o sistema de arquivos ainda está bem. Exclua a partição no final do disco e estenda a partição no início do disco. Estenda o volume LUKS ( cryptsetup resize ) e, em seguida, estenda o sistema de arquivos.

¹ É simples fazê-lo - mkfs.btrfs /dev/loop0 - mas esta não é a melhor solução para o seu problema.

    
por 31.07.2016 / 01:52