Файловый динамически распределяемый жесткий диск в Linux
Я могу создать обычный файл в существующей файловой системе (скажем, ext4), превратить его в блочное устройство (через losetup
), и отформатируйте его с помощью собственной файловой системы ext4.
Но вышеупомянутый жесткий диск имеет фиксированный размер.
Вопрос:
VirtualBox
позволяет создавать жесткие диски VDI, VMDK и VHD с фиксированным или динамическим размером. Есть ли способ создать файловый жесткий диск динамического размера для использования операционной системой Linux?Можно ли использовать любой из этих трех типов файловых жестких дисков динамического размера вне
VirtualBox
на операционной системе Linux?
Я на Ubuntu 16.04.
1 ответ
Да, если ваша файловая система поддерживает разреженные файлы. (ext4 поддерживает разреженные файлы.)
Вот как вы создаете
64GiB
сырое изображениеdisk.img
что изначально занимает почти нет места:truncate -s 64G disk.img
Теперь вы можете использовать
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