Czy można zmienić rozmiar obrazu dysku QEMU?

12

Jak mówi tytuł: Czy można zmienić rozmiar obrazu dysku QEMU w systemie Linux? A jeśli tak, co stanie się z partycjami w nim zawartymi? Czy są one również automatycznie zmieniane (wątpliwe), czy jest po nich tylko nowy blok niewykorzystanej przestrzeni?

Richie Marquez
źródło

Odpowiedzi:

12

Od tutaj :

!!! Utwórz kopię zapasową obrazu dysku przed wypróbowaniem poniższej instrukcji !!!

Jeśli używasz rzadkiego surowego obrazu, zrób to

dd if=/dev/zero of=hdd.img seek=N obs=1MB count=0"

gdzie hdd.img to obraz w formacie RAW, którego rozmiar chcesz zmienić, a N to nowy rozmiar, jaki ma mieć obraz, w megabajtach. Aby zmienić jednostki N, zmień obs na coś innego, na przykład 1 GB dla jednostek w gigabajtach (1000 x 1000 x 1000).

Jeśli chcesz zmienić rozmiar surowego obrazu, ale nie chcesz, aby stał się rzadki (tak naprawdę chcesz, aby te zera były w pliku), wykonaj „dd if = / dev / zero of = image seek = S count = NS obs = 1” zamiast tego, gdzie N to nowy rozmiar, a S to stary rozmiar (w bajtach).

Jeśli chcesz zmienić rozmiar obrazu qcow2, nie jest to jeszcze obsługiwane.

ten e-mail pokazuje eksperymentowanie ze zmianą rozmiaru obrazów qcow za pomocą edytora szesnastkowego.

Według mojej najlepszej wiedzy zmiana rozmiaru lub powiększanie obrazów w innych formatach (VMware, Bochs, krowa lub cloop) nie jest obsługiwana.

Na hoście z systemem Windows można zmienić rozmiar obrazu dysku w formacie surowym za pomocą polecenia „kopiuj”. W razie potrzeby możesz użyć qemu-img do konwersji istniejącego obrazu do formatu raw. Użyjemy tymczasowego obrazu dysku w formacie RAW, który zostanie dołączony na końcu istniejącego obrazu dysku w formacie RAW. Rozmiar tego obrazu tymczasowego to rozmiar istniejącego obrazu zostanie rozszerzony o:

qemu-img create -f raw temp.img 300M

Następnie należy wydać poniższe polecenie - orig.img to istniejący obraz w formacie RAW, który chcesz powiększyć, temp.img to utworzony wcześniej plik obrazu tymczasowego, a new.img to wynikowy obraz o zmienionym rozmiarze:

copy /b orig.img+temp.img new.img

Będziesz musiał ponownie podzielić na partycje i zmienić rozmiar istniejących partycji i systemów plików na nowym obrazie. Jedną z metod wykonania tego jest uruchomienie gparted w QEMU za pomocą gparted livecd iso i nowego obrazu dysku.


Inne linki, które możesz sprawdzić, jeśli powyższe nie działa:

http://qemu-forum.ipi.fi/viewtopic.php?p=12362
http://kev.coolcavemen.com/2007/04/how-to-grow-any-qemu-system-image/
http: / /bryan-murdock.blogspot.com/2007/12/resize-qemukvm-windows-disk-image.html
http://www.larsen-b.com/Article/329.html
http://www.brabbel.net / wp / archives / 174

fretje
źródło
17

Można zmienić rozmiar obrazu qcow2, aby rosnąć dzięki nowej / bieżącej wersji qemu. Na przykład mam arch.qcow2 czyli 2G i chcę, aby stał się 50G, w takim przypadku wpisuję:

qemu-img resize arch.qcow2 50G

wtedy qemu mówi mi:

image resized

to wszystko, właśnie to dzisiaj zrobiłem. redhat faktycznie ma kilka fajnych dokumentów na qemu:

użytkownik1026169
źródło
3
Jednak zwiększone miejsce zostanie nieprzydzielone. Musisz zmienić rozmiar dysku wirtualnego za pomocą narzędzia do partycjonowania.
Yamaneko
Doskonałe rozwiązanie!
RckLN,
qemu-img wersja 1.0 mówi miqemu-img: This image format does not support resize
HDave
4

Krótka odpowiedź na rok 2017: Aby dodać np. 30 GB do istniejącego surowego obrazu, właśnie użyłem tego polecenia:

qemu-img resize nameofimg.img +30G

Dodaje to 30 GB do istniejącego pliku obrazu (nie trzeba tworzyć nowego pliku). Następnie na maszynie wirtualnej gościa można rozszerzyć istniejące partycje, w systemie Windows 10, np. Z „Zarządzanie dyskami”, łatwo.

Więcej informacji i opcji:

man qemu-img

Zobacz też: qemu wiki> qemu-img

firepol
źródło
1

Tak, możesz. I nie, nie zmieni to partycji ani tabeli. Tabela partycji może wymagać aktualizacji w celu uzyskania pełnego rozmiaru dysku, a jeśli ją powiększysz, na końcu będzie puste, nieużywane miejsce, a jeśli podzielisz partycję i stracisz ją lub ostatnią część jej danych, jeśli ją zmniejszysz .

Jeśli jesteś na monitorze qemu (lub prawdopodobnie używasz QMP ), a interfejs go obsługuje (np. Virtio-scsi-pci z rbd, które tutaj testowałem), to bez ponownego uruchamiania maszyny wirtualnej możesz to zrobić:

(qemu) info block -v disk1
disk1 (#block165): rbd:rbd/manjaro (raw)
    Cache mode:       writeback

Images:
image: rbd:rbd/manjaro
file format: raw
virtual size: 4.0G (4294967296 bytes)
[...]

(qemu) block_resize disk1 5120

I poof, obraz jest zmieniany do rozmiaru określonego w MiB, a maszyna wirtualna pokaże nowy rozmiar.

Testowałem następujące na qemu 2.7.0:

  • RBD od Ceph - działa szybko, rośnie lub kurczy się
  • Plik dyskowy qcow2 - działa, wolniej, tylko rośnie
  • plik na dysku nieprzetworzonym - działa, szybko, rozwija się lub zmniejsza
  • surowy dysk LVM - w monitorze wygląda normalnie, ale nie ma efektu
Piotr
źródło
Doceń tabelę na dole. To było bardzo pomocne.
cloaked1