Redimensionar uma imagem de partição com o GParted?


15

Já redimensionei partições no GParted antes. Agora eu gostaria de mover uma partição grande, mas quase vazia, para uma unidade menor. Em vez de redimensioná-lo, prefiro fazer uma cópia em uma terceira unidade (imagem da unidade usando dd), redimensionar a cópia e copiar a cópia para a nova unidade. Mas eu não acho que o Gparted opera com imagens de disco? Como eu faria isso? Posso usar as ferramentas que o GParted usa diretamente?

Ooh! Ou posso usar uma coisa de loopback para fazer o arquivo de imagem parecer uma unidade física na qual o gparted pode operar?


Respostas:


3

Você não pode fazer isso com o GParted, mas pode usar o ntfsresizecomando diretamente em uma imagem de disco.

Primeiro, clone a imagem do disco. Você pode encontrar o nome do dispositivo de disco usando blkidou gParted e, em seguida, execute:

sudo dd if=<disk device> of=<image file>

Por exemplo:

$ sudo dd if=/dev/sda2 of=disk.img
1000000+0 records in
1000000+0 records out
512000000 bytes (512 MB) copied, 9.33361 s, 54.9 MB/s

Em seguida, verifique se você pode redimensioná-lo para o tamanho necessário executando:

ntfsresize -i <image file>

Por exemplo:

$ ntfsresize -i disk.img
ntfsresize v2011.4.12 (libntfs-3g)
Device name        : disk.img
NTFS volume version: 3.1
Cluster size       : 4096 bytes
Current volume size: 511996416 bytes (512 MB)
Current device size: 512000000 bytes (512 MB)
Checking filesystem consistency ...
100.00 percent completed
Accounting clusters ...
Space in use       : 4 MB (0.6%)
Collecting resizing constraints ...
You might resize at 3035136 bytes or 4 MB (freeing 508 MB).
Please make a test run using both the -n and -s options before real resizing!

Neste exemplo, eu posso redimensionar até 4 MB porque acabei de criar uma imagem de disco em branco para fins de ilustração!

Agora você pode executar o teste, se desejar, embora não seja estritamente necessário, pois você está operando em uma imagem. Você pode especificar o tamanho em kilobytes, megabytes ou gigabytes anexando um k, Mou G, respectivamente:

ntfsresize -cnvs <size> <image file>

Por exemplo:

$ ntfsresize -cnvs 256M disk.img 
ntfsresize v2011.4.12 (libntfs-3g)

Nenhuma saída é boa saída! Agora faça isso de verdade:

ntfsresize -vs <size> <image file>

Último exemplo:

$ ntfsresize -vs 256M disk.img 
ntfsresize v2011.4.12 (libntfs-3g)
Device name        : disk.img
NTFS volume version: 3.1
Cluster size       : 4096 bytes
Current volume size: 511996416 bytes (512 MB)
Current device size: 512000000 bytes (512 MB)
New volume size    : 255996416 bytes (256 MB)
Checking for bad sectors ...
Checking filesystem consistency ...
100.00 percent completed
Accounting clusters ...
Space in use       : 4 MB (0.6%)
Collecting resizing constraints ...
Needed relocations : 625 (3 MB)
WARNING: Every sanity check passed and only the dangerous operations left.
Make sure that important data has been backed up! Power outage or computer
crash may result major data loss!
Are you sure you want to proceed (y/[n])? y
Schedule chkdsk for NTFS consistency check at Windows boot time ...
Resetting $LogFile ... (this might take a while)
Relocating needed data ...
Relocate record       1:0x80:00000001:0x00000000:0x0000f423 --> 0x00007a11
Relocate record       2:0x80:00000624:0x00000000:0x0000f424 --> 0x00007a12
100.00 percent completed
Updating $BadClust file ...
Updating $Bitmap file ...
Updating Boot record ...
Syncing device ...
Successfully resized NTFS on device 'disk.img'.
You can go on to shrink the device for example with Linux fdisk.
IMPORTANT: When recreating the partition, make sure that you
  1)  create it at the same disk sector (use sector as the unit!)
  2)  create it with the same partition type (usually 7, HPFS/NTFS)
  3)  do not make it smaller than the new NTFS filesystem size
  4)  set the bootable flag for the partition if it existed before
Otherwise you won't be able to access NTFS or can't boot from the disk!
If you make a mistake and don't have a partition table backup then you
can recover the partition table by TestDisk or Parted's rescue mode.

É isso aí! Agora você pode copiar essa imagem de disco para o novo dispositivo.


Hmmm ... a partição lógica está dentro de uma partição estendida. Devo copiar a própria partição lógica ao fazer a cópia?
endolith 15/06

Eu usei o resize2fs em um arquivo de imagem ext3 ontem à noite, e o arquivo em si foi reduzido em tamanho depois! :) Eu pensei que seria uma etapa separada porque o sistema de arquivos não é o mesmo que a partição.
Endolith

@ endolith: Sim, dda partição lógica. Se você fizesse a partição estendida, obteria todas as partições lógicas dentro dela!
Patches

@ Patches: Bem, há apenas uma partição lógica dentro dela, do mesmo tamanho. :)
endolith 15/06

1
@ endolith: Ainda assim, acho que dda partição estendida trará informações extras que confundirão e2fsprogse ntfsprogs. Eles não sabem nada sobre partições, como você descobriu anteriormente.
Patches

14

Não sei ao certo qual era a situação há 5 anos, mas hoje é bolo.

$ sudo udisksctl loop-setup -f disk.img
Mapped file disk.img as /dev/loop0.
$ sudo gparted /dev/loop0

Agora você pode comer o bolo.


0

Você poderia redimensioná-lo no lugar com GParted e usar o Clonezilla para mover a partição para o novo disco?


2
Eu não quero redimensioná-lo no lugar. Não quero estragar o original, se eu não precisar.
Endolith

0

Uso o GParted há muitos e muitos anos e nunca perdi um pouco. Também gosto da edição inicial gratuita do Easus para Windows.

Qual é o tamanho / tamanho da sua partição? Você pode copiar os dados para USB / DVD / um sistema de armazenamento on-line gratuito, para não perdê-los - e depois redimensioná-los? As duas ferramentas mencionadas acima não perderão seus dados se você deixá-las em execução até a conclusão.

Você diz I've resized partitions in GParted before- então por que a preocupação agora? E o DD fará um pouco de cópia em bits ... então você terá que redimensionar mesmo assim (desfragmentar primeiro).


Estou convertendo uma partição da Unidade A (que eu quero somente leitura) em um arquivo de imagem na Unidade C, redimensionando-a e movendo-a para uma partição na Unidade B, que é menor que A (então eu tenho que redimensionar primeiro).
endolith 15/06
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.