LINUX.ORG.RU

qcow2 с динамическим размером перенести на другой физический диск

 ,


0

1

Копирование файла машины разворачивает размер файла до фиксированного (максимального) размера, где магия и что делать? Нужна какая-то процедура миграции?


Ответ на: комментарий от futurama

При создании машины указал опцию - динамический диск и хотя ext4 почему-то показывает максимальный размер файла машины, занятое место на диске гораздо меньше, следовательно размер динамический. Но при копировании на другой диск, размер файла машины оказывается максимальным. Наверное используется какая-то опция ext4, позволяющая резервировать место, но не занимать его. Вопрос: возможно ли перенести машины сохранив динамичность размера файла-контейнера qcow2.

vrnd
() автор топика

Скорее всего имеется в виду то, что файл может занимать физически меньше места, чем заявлено. По моему, это называется sparce file. Но если скопировать такой файл, то начинает занимать свой заявленный размер.

usermod ★★
()
Ответ на: комментарий от vrnd

При создании машины

Какими средствами ты её создавал?

хотя ext4 почему-то показывает максимальный размер файла машины

Покажи вывод

ls -lsh файл_образа_диска
qemu-img info файл_образа_диска
stat файл_образа_диска

Но при копировании на другой диск

Как копируешь?

kostik87 ★★★★★
()
Ответ на: комментарий от vrnd
$ ls -lh file.qcow2
-rw-r--r-- 1 libvirt-qemu libvirt-qemu 11G Jun 26 13:24 file.qcow2

$ qemu-img info file.qcow2 | grep size
virtual size: 20 GiB (21474836480 bytes)
disk size: 10.3 GiB
cluster_size: 65536

Вот динамический qcow2, а у тебя нет

futurama ★★★★★
()
Ответ на: комментарий от vrnd

Вообще не понятно про что ты говоришь:

qemu-img create -f qcow2 hdd.qcow2 2G
Formatting 'hdd.qcow2', fmt=qcow2 cluster_size=65536 extended_l2=off compression_type=zlib size=2147483648 lazy_refcounts=off refcount_bits=16

ls -lsh hdd.qcow2
196K -rw-r--r-- 1 root root 193K Dec 15 18:38 hdd.qcow2

qemu-img info hdd.qcow2
image: hdd.qcow2
file format: qcow2
virtual size: 2 GiB (2147483648 bytes)
disk size: 196 KiB
cluster_size: 65536
Format specific information:
    compat: 1.1
    compression type: zlib
    lazy refcounts: false
    refcount bits: 16
    corrupt: false
    extended l2: false

cp hdd.qcow2 /var/share/

ls -ls /var/share/hdd.qcow2
196 -rw-r--r-- 1 root root 196640 Dec 15 18:38 /var/share/hdd.qcow2

qemu-img info /var/share/hdd.qcow2
image: /var/share/hdd.qcow2
file format: qcow2
virtual size: 2 GiB (2147483648 bytes)
disk size: 196 KiB
cluster_size: 65536
Format specific information:
    compat: 1.1
    compression type: zlib
    lazy refcounts: false
    refcount bits: 16
    corrupt: false
    extended l2: false

Вот пример, создал диск в формате qcow2 размером 2Гб, он занимает 196Кб, скопировал на другую файловую систему, на ней файл так же занимает 196Кб.

Что ты делаешь?

kostik87 ★★★★★
()
Ответ на: комментарий от kostik87

Virtual Machine Manager

/mnt/vm/qemu » ls -lsh arch.qcow2                                                                             
4,4G -rw-------. 1 ____  51G ноя  4 23:24 arch.qcow2
------------------------------------------------------
/mnt/vm/qemu » qemu-img info arch.qcow2                                                                       

image: arch.qcow2
file format: qcow2
virtual size: 50 GiB (53687091200 bytes)
disk size: 4.35 GiB
cluster_size: 65536
Format specific information:
    compat: 1.1
    compression type: zlib
    lazy refcounts: true
    refcount bits: 16
    corrupt: false
    extended l2: false
Child node '/file':
    filename: arch.qcow2
    protocol type: file
    file length: 50 GiB (53695545344 bytes)
    disk size: 4.35 GiB
-----------------------------------------------------------------
/mnt/vm/qemu » stat arch.qcow2                                                                                

  Файл: arch.qcow2
  Размер: 53695545344	Блоков: 9116744    Блок В/В: 4096   обычный файл
Устройство: 253/3	Инода: 12582917    Ссылки: 1
Доступ: (0600/-rw-------)  Uid: ( 1000/      )   Gid: ( 1000/      )
Контекст: unconfined_u:object_r:svirt_image_t:s0:c470,c590
Доступ:        2024-12-15 17:09:00.590287453 +0300
Модифицирован: 2024-11-04 23:24:32.153037487 +0300
Изменён:       2024-11-04 23:24:32.153037487 +0300
Создан:        2024-11-04 18:23:15.588519552 +0300

Копирую гномовским файловым менеджером

vrnd
() автор топика
Ответ на: комментарий от vrnd

Наверное используется какая-то опция ext4, позволяющая резервировать место, но не занимать его

Упоминали sparse file, но это к qcow2 не относится

$ ls -lh file.dat
-rw-r--r-- 1 user group 910T Dec 15 18:44 file.dat

$ du -sh file.dat 
0	file.dat
futurama ★★★★★
()
Ответ на: комментарий от kostik87

Копировал с помощью ‘cp’ - порядок - размер «динамический» 4.7Gb Спасибо!

vrnd
() автор топика
Последнее исправление: vrnd (всего исправлений: 1)
Ответ на: комментарий от vrnd
  Файл: arch.qcow2
  Размер: 53695545344	Блоков: 9116744    Блок В/В: 4096   обычный файл

У тебя размер файла 53695545344, т.е. 50 Гб, именно это пространство он занимает на файловой системе.

Вот почитай: https://bytesandbones.wordpress.com/2019/11/06/kvm-qemu-qcow2-sparse-disk-allocation-problem-shrink-sparse-qcow2-disks-howto/

Забей на уровне файловой системы в гостевой ОС на файловой системе виртуального диска всё нулями.

А потом сделай shrink, как описано в статье по ссылке.

kostik87 ★★★★★
()
8 марта 2025 г.

Раньше, лет 15 назад, можно было в Qemu создавать динамически расширяемые в реальном времени qcow2 файловую систему виртуалки. В самой виртуалке создаёшь файл 20мб, и у виртуалки в qcow2 файле добавлялось 20мб, удаляешь файл в 20мб в самой виртуалке и общий объём файла виртуалки qcow2 уменьшался на 20мб. Всё в реальном времени работало прекрасно! Такую фичу угробили тупорылые скоты!

With ★☆☆
()
  • Markdown
Пустая строка (два раза Enter) начинает новый абзац. Знак '>' в начале абзаца выделяет абзац курсивом цитирования.
Внимание: прочитайте описание разметки Markdown.
Используйте Ctrl-Enter для размещения комментария