9

Как следует из названия: возможно ли изменить размер образа диска QEMU в Linux? И если так, что происходит с разделами в нем? Они также автоматически изменяют размер (сомнительно) или за ними следует новый блок неиспользуемого пространства?

4 ответа4

13

Размер изображения qcow2 можно изменить, чтобы он рос с новой / текущей версией qemu. Например, у меня есть arch.qcow2, который равен 2G, и я хочу, чтобы он стал 50G, в этом случае я набираю:

qemu-img resize arch.qcow2 50G

тогда Кему говорит мне:

image resized

Вот и все, я только что сделал это сегодня. Redhat на самом деле имеет несколько хороших документов по QEMU:

12

Отсюда:

!!! Сделайте резервную копию образа диска, прежде чем пытаться описать ниже

Если вы используете разреженное необработанное изображение, тогда

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

где hdd.img - изображение в необработанном формате, размер которого вы хотите изменить, а N - новый размер изображения в мегабайтах. Чтобы изменить единицы измерения N, измените obs на что-то другое, например, 1 ГБ для единиц в гигабайтах (1000x1000x1000).

Если вы хотите изменить размер необработанного изображения, но не хотите, чтобы оно стало разреженным (вы на самом деле хотите, чтобы эти нули были в файле), тогда выполните команду "dd if =/dev/zero of = image seek = S count = NS obs = 1" вместо этого, где N - новый размер, а S - старый размер (в байтах).

Если вы хотите изменить размер изображения qcow2, это еще не поддерживается.

это письмо показывает некоторые эксперименты с изменением размера изображений qcow с помощью шестнадцатеричного редактора.

Насколько мне известно, изменение размера или увеличение изображений в других форматах (VMware, Bochs, cow или cloop) не поддерживается.

На хосте Windows можно изменить размер образа диска в необработанном формате, используя команду «copy». Вы можете использовать qemu-img для преобразования существующего изображения в необработанный формат, если это необходимо. Мы будем использовать временный образ диска в необработанном формате, который будет добавлен в конец существующего образа диска в необработанном формате. Размер этого временного изображения равен размеру, на который будет расширен существующее изображение:

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

Затем вы должны выполнить следующую команду: orig.img - это существующее изображение в необработанном формате, которое вы хотите увеличить, temp.img - это временный файл изображения, созданный ранее, а new.img - результирующее изображение с измененным размером:

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

Затем вам нужно будет перераспределить и изменить размер существующих разделов и файловых систем в новом образе. Один из способов сделать это - загрузить gparted в QEMU с помощью gparted livecd iso и нового образа диска.


Другие ссылки, которые вы могли бы проверить, если вышеперечисленное не работает:

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

2

Краткий ответ на 2017 год: чтобы добавить, например, 30 ГБ к существующему необработанному образу, я просто использовал эту команду:

qemu-img resize nameofimg.img +30G

Это добавляет 30 ГБ к существующему файлу изображения (нет необходимости создавать новый файл). Затем в гостевой виртуальной машине вы можете легко расширить существующие разделы, например, в Windows 10, например, с помощью "Управление дисками".

Больше информации и опций:

man qemu-img

Смотрите также: qemu wiki> qemu-img

0

Да, ты можешь. И нет, это не изменит разделы или таблицы. Таблица разделов, возможно, потребуется обновить, чтобы иметь полный размер диска, и в конце будет пустое неиспользуемое пространство, если вы увеличите его, и вы порежете раздел и потеряете его или последнюю часть его данных, если вы уменьшите его. ,

Если вы находитесь в мониторе qemu (или, вероятно, используете QMP ), и интерфейс поддерживает его (например, virtio-scsi-pci с rbd, который я тестировал здесь), то без перезагрузки виртуальной машины вы можете сделать это:

(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

И poof, изображение изменяется до размера, указанного вами в MiB, и виртуальная машина покажет новый размер.

Я проверил следующее на QEMU 2.7.0:

  • RBD от Ceph - работает, быстро, растет или сжимается
  • Дисковый файл qcow2 - работает, медленнее, растет только
  • Необработанный файл на диске - работает, быстро, растет или уменьшается
  • сырой LVM диск - на мониторе выглядит нормально, но никак не влияет

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .