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

1473
Harry

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

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

Вопрос:

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

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

Я на Ubuntu 16.04.

2
Существуют инструменты для изменения размера разделов, но я не понимаю, как вы планируете оставить части жесткого диска нераспределенными. Это имеет гораздо больше смысла на ВМ. Julie Pelletier 7 лет назад 0
Что означает «использовать» в этом контексте? Deltik 7 лет назад 0
@Deltik Под словом «нанять» я подразумеваю использование любого из этих форматов жестких дисков на основе файлов в операционной системе без VirtualBox. Например, если я монтирую этот основанный на файлах жесткий диск на моей операционной системе, и если главная программа (например, `cat`) записывает в файл, находящийся на этом жестком диске, этот жесткий диск должен автоматически расширяться, если это необходимо. Harry 7 лет назад 0
Если вы имеете в виду запись в монтирование раздела в необработанном образе, а необработанный образ изначально создавался редко, то да, он будет расширяться по мере записи данных в необработанный образ. Deltik 7 лет назад 0
@ Делтик Отлично! Тогда нужно ли использовать `qemu-img`? Я думаю, что ключевой момент в вашем ответе - ** редкие файлы **, которые я не знал, поддерживал ext4. Я мог бы создать разреженный файл и использовать `losttup` и` mke2fs`, верно? Harry 7 лет назад 0
Да, Гарри. Вторая часть моего ответа была моей догадкой относительно того, что вы имели в виду под «наймом». Ключ действительно ** разреженных файлов **, и вы правы в создании файловой системы на устройстве обратной петли разреженного файла. Deltik 7 лет назад 0
Вы сделали мой день, товарищ! Harry 7 лет назад 0

1 ответ на вопрос

5
Deltik
  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 
+1 за `усечь`. Название команды не в полной мере оправдывает его, так как оно может расширять и это, и это тоже, редко! Harry 7 лет назад 0

Похожие вопросы