Ridimensionare un'immagine della partizione con GParted?


15

Ho ridimensionato le partizioni in GParted prima. Ora vorrei spostare una partizione grande ma per lo più vuota su un'unità più piccola. Invece di ridimensionarlo in posizione, preferirei fare una copia su una terza unità (immagine dell'unità usando dd), ridimensionare la copia, quindi dd la copia sulla nuova unità. Ma non penso che Gparted operi su immagini di unità? Come lo farei? Posso usare direttamente gli strumenti che GParted utilizza?

Ooh! O posso usare una cosa di loopback per far sembrare il file immagine come un'unità fisica su cui gparted può operare?


Risposte:


3

Non puoi farlo con GParted, ma puoi usare il ntfsresizecomando direttamente su un'immagine del disco.

Innanzitutto, clona l'immagine del disco. È possibile trovare il nome del dispositivo disco utilizzando blkido gParted, quindi eseguire:

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

Per esempio:

$ 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

Quindi, verificare se è possibile ridimensionarlo alle dimensioni necessarie eseguendo:

ntfsresize -i <image file>

Per esempio:

$ 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!

In questo esempio, posso ridimensionare fino a 4 MB perché ho appena creato un'immagine del disco vuota a scopo illustrativo!

Ora puoi eseguire il test se lo desideri, anche se non è strettamente necessario poiché stai operando su un'immagine. È possibile specificare la dimensione in kilobyte, megabyte o gigabyte aggiungendo un k, Mo Grispettivamente:

ntfsresize -cnvs <size> <image file>

Per esempio:

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

Nessun risultato è un buon risultato! Ora fallo davvero:

ntfsresize -vs <size> <image file>

Ultimo esempio:

$ 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.

Questo è tutto! Ora puoi copiare l'immagine del disco sul nuovo dispositivo.


Hmmm ... la partizione logica è all'interno di una partizione estesa. Devo usare la partizione logica stessa quando faccio la copia?
endolith,

Ieri sera ho usato resize2fs su un file di immagine ext3, e il file stesso è stato ridotto in seguito! :) Ho pensato che sarebbe stato un passaggio separato perché il filesystem non è lo stesso della partizione.
endolith,

@endolith: Sì, ddla partizione logica. Se facessi la partizione estesa otterrai tutte le partizioni logiche al suo interno!
Patch

@Patches: beh c'è solo una partizione logica al suo interno, delle stesse dimensioni. :)
endolith,

1
@endolith: Tuttavia, penso che ddla partizione estesa porterà informazioni extra che confonderanno e2fsprogse ntfsprogs. Non sanno nulla delle partizioni, come hai scoperto in precedenza.
Patch

14

Non sono sicuro di quale fosse la situazione 5 anni fa, ma oggi è una torta.

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

Ora puoi mangiare la torta.


0

Potresti ridimensionarlo in posizione con GParted quindi utilizzare Clonezilla per spostare la partizione sul nuovo disco?


2
Non voglio ridimensionarlo sul posto. Non voglio rovinare l'originale se non devo.
endolith,

0

Uso GParted da molti, molti anni e non ho mai perso un po '. Mi piace anche l' edizione domestica gratuita di Easus per Windows.

Quanto è grande / piccola la tua partizione? Riesci a copiare i dati su USB / DVD / un sistema di archiviazione online gratuito, in modo da non perderli - e quindi ridimensionarli sul posto? I due strumenti sopra menzionati non perderanno i tuoi dati se li lasci correre fino al completamento.

Tu dici I've resized partitions in GParted before- quindi perché la preoccupazione ora? E DD farà un po 'per la copia bit ... quindi dovrai ridimensionare comunque (prima deframmenta).


Sto convertendo una partizione dall'unità A (che desidero in sola lettura) in un file di immagine sull'unità C, ridimensionandola e quindi spostandola in una partizione sull'unità B, che è più piccola di A (quindi devo ridimensionare primo).
endolith,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.