Работа с qcow-диском из командной строки

  1. Создать файл c точным размером. Можно выполнив следующие команды:

    $ dd if=/dev/zero of=ff.img bs=1G count=1

    или

    $ truncate -s 1G ff.img

    или

    $ qemu-img create -f raw ff.img 10M
  2. Подключить его, как блочное устройство, выполнив команду:

    $ sudo kpartx -a ff.img
  3. Проверить, выполнив команду:

    $ losetup -l
    NAME       SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE                                      DIO LOG-SEC
    /dev/loop1         0      0         1  1 /var/lib/snapd/snaps/core18_2284.snap            0     512
    /dev/loop4         0      0         0  0 /home/sudo/ff.img                                 0     512
  4. Создать раздел:

    sudo parted /dev/loop4
    p a
    mklabel gpt
    mkpart
  5. Проверить разделы, выполнив команду:

    lsblk
    NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
    loop0         7:0    0  43,4M  1 loop /var/lib/snapd/snap/snapd/14549
    loop4         7:4    0     1G  0 loop
    ├─loop4p1
  6. Форматировать, выполнив команду:

    sudo mkfs -t ext4 /dev/loop4p1
  7. Смонтировать, выполнив команду:

    sudo mount /dev/loop4p1 /mnt
  8. Создать тестовый файл, выполнив команду:

    sudo -c bash 'mkdir /mnt/1; echo "Hello, world" > /mnt/1/test.txt'
  9. Отмонтировать, выполнив команду:

    sudo umount /mnt
  10. Удалить устройство обратной связи, выполнив команду:

    kpartx -d ff.img
  11. Конвертировать в формат qcow2, выполнив команду:

    qemu-img convert -f raw -O qcow2 ff.img ff2.img
  12. Проверить, выполнив команду:

    qemu-img info ff.img
    image: ff2.img
    file format: qcow2
    virtual size: 1 GiB (1073741824 bytes)
    disk size: 2.13 MiB
    cluster_size: 65536
    Format specific information:
    compat: 1.1
    compression type: zlib
    lazy refcounts: false
    refcount bits: 16
    corrupt: false
    extended l2: false
  13. Можно добавлять в виртуальную машину.