Назад | Перейти на главную страницу

QCOW2 уменьшение виртуального размера

Я пытаюсь получить виртуальный размер qcow2 контейнер вниз, чтобы он мог поместиться в версии openstack с диском 10 ГБ.

root@node-10:~# qemu-img info zztop.qcow 
image: zztop.qcow
file format: qcow2
virtual size: 80G (85899345920 bytes)
disk size: 2.6G
cluster_size: 65536
Format specific information:
compat: 1.1
lazy refcounts: false

Я следую за гидом Вот и заполните конец диска нулями, затем запустите qemu-img convert -O qcow2. Однако полученный qcow2 сохраняет тот же размер диска и виртуальный размер.

Как уменьшить виртуальный размер qcow2, чтобы он мог поместиться в версии openstack размером менее 80 ГБ?

Если вы хотите уменьшить виртуальный размер, вам нужно использовать virt-resize

  1. Вам нужно преобразовать образ qcow2 в raw
    qemu-img convert -O raw guest.img guest.raw
  2. Затем измените размер необработанного файла
    qemu-img resize guest.raw 3G
  3. Затем преобразуйте его обратно в qcow2
    qemu-img convert -O qcow2 -o compat=0.10 guest.raw guest.img
  4. Затем запустите гостевую систему и измените размер файловой системы.

Улучшенный ответ @ user370956

Мне удалось успешно уменьшить фактический размер моего изображения с 5,9 ГБ до 3,5 ГБ, а также размер v.

  1. Сделайте резервную копию вашего изображения cp guest.img quest.backup
  2. Вам нужно преобразовать образ qcow2 в raw
    qemu-img convert -O raw guest.img guest.raw
  3. Загрузите некоторые live iso, смонтированные как -cdrom и ваш guest.raw установлен как -drive qemu-system-x86_64 -machine type=pc,accel=kvm -boot order=d -drive file=guest.raw,format=raw -cdrom ~/Downloads/debian-live-9.6.0-amd64-lxde.iso -m 2G
  4. Используйте gparted (инструмент gui), чтобы уменьшить раздел внутри гостевой системы. Оставьте немного свободного места, чтобы система могла загружаться (достаточно 100 МБ). Оставшееся пространство оставьте нераспределенным. Проверьте файловую систему. fsck -a
  5. Затем измените размер необработанного файла
    qemu-img resize guest.raw 3G
  6. Затем преобразуйте его обратно в qcow2
    qemu-img convert -O qcow2 guest.raw guest.img
  7. На этом этапе вы можете изменить размер виртуального изображения qcow2, чтобы добавить немного места, и это не повлияет на размер файла изображения. Это может потребоваться для обеспечения стабильности виртуальной машины. qemu-img resize guest.img +1G
  8. Повторите шаги 2, 3, чтобы выделить дополнительное место для гостевого корневого раздела, если вы выполнили шаг 6.

Манипулирование только со стороны хоста может привести к повреждению гостевой файловой системы.

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

1 - Отключить файл подкачки в fstab, если он есть

2 - Установите gparted на компакт-диск виртуальной машины

3 - запустите виртуальную машину, загрузите gparted и уменьшите размер раздела

4 - Удалите раздел подкачки и создайте заново или убедитесь, что все разделы выровнены рядом друг с другом в начале диска. У меня были проблемы с тем, что своп находился в конце диска после сжатия раздела, так что это было исправление.

5 - выключить ВМ

6 - Найдите файл qcow2 и в том же каталоге запустите qemu-img create -f qcow2 -o preallocation = metadata new-disk.qcow2 80G (где 80G - новый размер диска)

7 - используйте virt-resize - 'virt-resize old-disk.qcow2 new-disk.qcow2'

8 - copt new-disk, чтобы исправить имя файла для виртуальной машины, запустить виртуальную машину и повторно включить подкачку, например: 'swapon / dev / sda5'

9 - отредактируйте fstab, чтобы добавить подкачку, то есть: '/ dev / sda5 swap swap swap defaults 0 0'

СДЕЛАНО.