Как настроить растущее петлевое устройство?

23

Я знаю, что могу создавать и использовать петлевые устройства, как это:

# Create the file
truncate disk.img --size 2G
# Create a filesystem
mkfs.ext4 disk.img
# Mount to use
mount disk.img /mnt
# Clean up
umount /mnt

Однако в этом случае образ диска фиксируется на 2 ГБ. 2 ГБ, когда он пуст, и 2 ГБ, когда он полон. Это не будет расти.

Существует ли некое петлевое устройство, которое может увеличиваться в размерах? Или есть какое-то петлевое устройство, которому нужно столько места, сколько оно хранит?

phunehehe
источник
1
Поскольку файл разреженный, он должен использовать только столько места, сколько хранится в вашем примере.
Иордания
В зависимости от того, что вы пытаетесь сделать с помощью этого инструмента virt-make-fsможет быть полезным. Может использоваться для создания ext2-изображений с использованием файлов tar.
Котте

Ответы:

17

Создайте устройство с разреженным файлом, используя dd.

df -hm # to show where we started
dd of=sparse-file bs=1k seek=102400 count=0 # creates a 100Meg sparsefile
mkfs.ext4 sparse-file
mkdir blah
mount sparse-file blah
cp somefile blah
ls -lahts sparse-file  # The 's' option will report the actual space taken in the first column
ls -lahts blah
df -hm # doublecheck my work
echo 'profit :)'

Ссылка: статья в редких файлах Википедии

Stephan
источник
10

Комментарий @ jordanm прибил его. Я предположил, что размер файла был зафиксирован, когда я посмотрел на вывод ls -lh disk.img. Когда я использовал, ls -s disk.imgкак в ответе @ Stephan, реальный размер файла показан. В качестве теста я создал файл изображения, который больше моего жесткого диска:

truncate test.img -s 1000G

И это работает просто отлично, что означает ответ в вопросе :)

phunehehe
источник
Truncate работает отлично, кстати, я просто подумал, что покажу альтернативную команду для создания указанного разреженного файла и (в зависимости от вашего дистрибутива linux и набора инструментов), что вам не обязательно использовать потерянный вход, как 'mount' в его текущем Воплощение довольно умно настраивает разумные опции, когда они вам нужны.
Стефан
Немного о горе интересно. Просто на этот раз, потому что мне также нужны LUKS (cryptsetup luksFormat / dev / loop0), мне нужен losttup: D
phunehehe
Еще одна удобная команда linux для создания разреженного файла fallocate(1).
Lloeki
2

Вы можете сделать это вручную с помощью dd seek или проще, так как вы используете truncate:

truncate -s 100M file
mkfs.ext4 -m0 file
#mount, do whatever
umount /mountpoint
#let's grow it to 200 MB
truncate -s 200M file
e2fsck -f file && resize2fs file
#done

2 лайнера для его выращивания, вряд ли требует автоматизации здесь, я бы осмелился сказать :)

Малина салина
источник