Como um disco sem partição pode ser “particionado” sem perder dados?

Como um disco sem partição pode ser “particionado” sem perder dados?

Tenho um disco rígido portátil de 1 TB que uso para backups. A unidade inteira ( /dev/sdb) foi formatada como um ext4sistema de arquivos.

Tenho lido sobre os benefícios dos btrfsbackups (somas de verificação, autocorreção, etc.) e estou pensando em converter esse disco ext4para btrfs.

Tenho certeza de que ainda posso redimensionar o disco ( e2fsck -f /dev/sdb && resize2fs /dev/sdb 500G && fdisk /dev/sdbou algo parecido). No entanto, não sei como "introduzir" partições em um dispositivo que não tinha partições para começar.

Isso pode ser feito? Se sim, como?

(Observe que os próprios sistemas de arquivos - ext4, btrfs, etc - são praticamente irrelevantes - a questão é puramente particionar um dispositivo que foi inicialmente criado sem partição - e fazê-lo sem perder o sistema de arquivos existente.)

Responder1

As tabelas de partição (pelo menos no estilo MBR ou GPT) ficam no início e/ou no final dos discos, para que você possa introduzi-las se puder liberar o espaço necessário.

Trabalhando com um disco de terabyte, eu procederia da seguinte forma.

  1. Redimensione o sistema de arquivos ext4 para 499G (errando pelo lado seguro). Isso garante que todos os dados, estrutura do sistema de arquivos, etc. caibam nos primeiros blocos 499G do disco. Idealmente, você deve reduzir o sistema de arquivos tanto quanto possível, o que reduzirá a quantidade de dados que você precisa copiar nas etapas subsequentes.
  2. Copie os blocos para a segunda metade do disco, usando dduma ferramenta semelhante.
  3. Particione o disco, criando uma partição um pouco maior que o sistema de arquivos (500G). Use GPT para isso; você substituirá blocos no início e no final do disco, portanto, a cópia do sistema de arquivos no início do disco agora está pronta.
  4. Copie os blocos brutos da segunda metade do disco para a partição recém-criada, novamente usando ddou algo semelhante. Você precisará calcular os deslocamentos e tamanhos com base no que fez na etapa 2, mas o objetivo é fácil ( /dev/sdX1).
  5. Redimensione o sistema de arquivos novamente para que ocupe toda a partição.

Com uma ferramenta comoddrescueque pode ser copiado ao contrário, você pode simplificar um pouco:

  1. Redimensione o sistema de arquivos de origem tanto quanto possível.
  2. Calcule onde a primeira partição começaria (sem realmente criar a tabela de partições).
  3. Mova os blocos que compõem o sistema de arquivos de origem para que comecem onde a primeira partição começaria. (É aqui que você precisa começar a copiar do final.)
  4. Particione o disco.
  5. Redimensione o sistema de arquivos.

Dada a quantidade de cópias envolvidas, seria mais fácil fazer backup dos dados em outro lugar e restaurá-los! Você pode limitar a quantidade de cópias salvando o início do sistema de arquivos ext4 e restaurando-o seguido pelo restante dos dados, mas isso requer uma contabilidade mais cuidadosa.

Responder2

Reparticionei com sucesso uma unidade de 2 TB sem perda de dados. Eu queria realizar backups de uma caixa GNU/Linux e de uma caixa Windows, então reduzi a partição EXT4 para 1 TB e criei uma nova partição de 1 TB que formatei como um sistema de arquivos NTFS.

Tudo que precisei fazer foi usar o aplicativo GUI Disks no Ubuntu. Outras distribuições devem ter um aplicativo GUI semelhante para gerenciar partições. Imagino que usar BTRFS em vez de NTFS também funcionaria.

Claro, você também deve ser capaz de realizar o reparticionamento a partir do terminal.

Responder3

Estou confuso.

Você disse que o disco está formatado como ext4, então vocêtenhouma partição. Talvez o fdisk não mostre porque a tabela de partição do disco é gpt e o seu fdisk não suporta isso. Neste caso você pode usar parted

sudo parted -l /dev/sdb

Além disso, você pode converter ext4 em btrfscomo dito neste guia do arch linux.

informação relacionada