Файловый динамически распределяемый жесткий диск в Linux

Я могу создать обычный файл в существующей файловой системе (скажем, ext4), превратить его в блочное устройство (через losetup), и отформатируйте его с помощью собственной файловой системы ext4.

Но вышеупомянутый жесткий диск имеет фиксированный размер.

Вопрос:

  1. VirtualBox позволяет создавать жесткие диски VDI, VMDK и VHD с фиксированным или динамическим размером. Есть ли способ создать файловый жесткий диск динамического размера для использования операционной системой Linux?

  2. Можно ли использовать любой из этих трех типов файловых жестких дисков динамического размера вне VirtualBoxна операционной системе Linux?

Я на Ubuntu 16.04.

1 ответ

Решение
  1. Да, если ваша файловая система поддерживает разреженные файлы. (ext4 поддерживает разреженные файлы.)

    Вот как вы создаете 64GiB сырое изображение disk.img что изначально занимает почти нет места:

    truncate -s 64G disk.img
    
  2. Теперь вы можете использовать disk.img как петлевой блочный прибор, и он будет расширяться при записи в него.


Бонус Особенности

Если вы хотите конвертировать образ диска disk.img в другой формат, как на физический диск /dev/sdbиспользовать qemu-img:

qemu-img convert -O raw disk.img /dev/sdb

Это полезно, если вы хотите конвертировать VDI, VMDK, VHD или другие форматы контейнеров в RAW, чтобы вы могли манипулировать выходным изображением с помощью встроенных инструментов, таких как losetup/kpartx,

Не имеет значения, в каком формате находится исходное изображение. qemu-img может работать с более чем VDI, VMDK, VHD и необработанными изображениями. Чтобы увидеть список поддерживаемых изображений, выполните эту команду:

    root@node51 [~]# qemu-img --help | grep 'Supported formats:'
    Supported formats: bochs vvfat rbd vpc parallels tftp ftp ftps raw https qcow http dmg qcow2 quorum null-aio cloop vdi null-co vhdx blkverify file vmdk host_cdrom blkdebug host_device sheepdog iscsi qed nbd
Другие вопросы по тегам