Zmienić rozmiar obrazu partycji za pomocą GParted?

15

Wcześniej zmieniłem rozmiar partycji w GParted. Teraz chciałbym przenieść dużą, ale w większości pustą partycję na mniejszy dysk. Zamiast zmieniać rozmiar w miejscu, wolałbym wykonać kopię na trzecim dysku (obraz dysku za pomocą dd), zmienić rozmiar kopii, a następnie dd skopiować na nowy dysk. Ale nie sądzę, że Gparted działa na obrazach dysków? Jak mam to zrobić? Czy mogę bezpośrednio korzystać z narzędzi używanych przez GParted?

Och! Czy mogę użyć funkcji sprzężenia zwrotnego, aby plik obrazu wyglądał jak dysk fizyczny, na którym może działać gparted?

endolit
źródło

Odpowiedzi:

3

Nie możesz tego zrobić za pomocą GParted, ale możesz użyć ntfsresizepolecenia bezpośrednio na obrazie dysku.

Najpierw sklonuj obraz dysku. Możesz znaleźć nazwę urządzenia dyskowego za pomocą blkidlub gParted, a następnie uruchom:

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

Na przykład:

$ 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

Następnie sprawdź, czy możesz zmienić rozmiar do wymaganego rozmiaru, uruchamiając:

ntfsresize -i <image file>

Na przykład:

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

W tym przykładzie mogę zmienić rozmiar aż do 4 MB, ponieważ właśnie utworzyłem pusty obraz dysku w celach ilustracyjnych!

Teraz możesz wykonać test, jeśli chcesz, chociaż nie jest to absolutnie konieczne, ponieważ operujesz na obrazie. Można określić rozmiar w kilobajtach, megabajtach lub gigabajtach przez dodanie k, Mlub G, odpowiednio:

ntfsresize -cnvs <size> <image file>

Na przykład:

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

Żadne wyjście nie jest dobre! Teraz zrób to naprawdę:

ntfsresize -vs <size> <image file>

Ostatni przykład:

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

Otóż ​​to! Teraz możesz skopiować ten obraz dysku na nowe urządzenie.

Łatki
źródło
Hmmm ... partycja logiczna znajduje się w partycji rozszerzonej. Czy podczas tworzenia kopii powinienem dodać samą partycję logiczną?
endolith
Zeszłej nocy użyłem resize2fs na pliku obrazu ext3, a sam plik został później zmniejszony! :) Myślałem, że będzie to osobny krok, ponieważ system plików nie jest taki sam jak partycja.
endolith
@endolith: Tak, ddpartycja logiczna. Gdybyś zrobił partycję rozszerzoną, dostałbyś w niej wszystkie logiczne partycje!
Łaty
@Patch: Cóż, jest tylko jedna partycja logiczna o tym samym rozmiarze. :)
endolith,
1
@endolith: Mimo to myślę, ddże rozszerzenie partycji przyniesie dodatkowe informacje, które wprowadzą zamieszanie e2fsprogsi ntfsprogs. Nie wiedzą nic o partycjach, jak odkryłeś wcześniej.
Łaty
14

Nie jestem pewien, jak wyglądała sytuacja 5 lat temu, ale dziś to ciasto.

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

Teraz możesz zjeść ciasto.

użytkownik7455651
źródło
0

Czy możesz zmienić jego rozmiar za pomocą GParted, a następnie użyć Clonezilli, aby przenieść partycję na nowy dysk?

uSlackr
źródło
2
Nie chcę zmieniać jego rozmiaru w miejscu. Nie chcę zepsuć oryginału, jeśli nie muszę.
endolith
0

Korzystam z GParted od wielu, wielu lat i nigdy nie straciłem. Lubię też darmową edycję domową Easus dla systemu Windows.

Jak duża / mała jest twoja partycja? Czy możesz skopiować dane na USB / DVD / darmowy system pamięci online, aby ich nie utracić - a następnie zmienić rozmiar na miejscu? Dwa wyżej wymienione narzędzia nie utracą danych, jeśli pozwolisz im działać do końca.

Mówisz I've resized partitions in GParted before- więc po co teraz się martwić? A DD zrobi trochę dla kopiowania bitów ... więc i tak będziesz musiał zmienić rozmiar (najpierw defragmentuj).

Mawg mówi, że przywróć Monikę
źródło
Przekształcam partycję z Dysku A (który chcę tylko do odczytu) w plik obrazu na Dysku C, zmieniam jej rozmiar, a następnie przenoszę na partycję na Dysku B, który jest mniejszy niż A (więc muszę zmienić rozmiar pierwszy).
endolith,