Рейтинг:0

Смонтированный файл .img не освобождает место на диске при удалении файлов

флаг cn

У меня есть требование использовать больше инодов, чем обычно доступно в большинстве файловых систем. Поэтому я создаю и монтирую файловую систему ext4 с пользовательской настройкой inode:

dd if=/dev/zero of=loop0.img bs=1MB count=5000
проиграть --find --show `pwd`/loop0.img
mkfs -t ext4 -i 1024 /dev/loop0
смонтировать /dev/loop0 /mnt

Это создаст на диске файл размером 5000 МБ (через лс /мнт), но когда я проверяю с помощью дф это показывает, что диск не занят (пространство на диске не увеличивается на 5000 МБ). Я подозреваю, потому что он обнулен на диске и выглядит как неиспользуемое пространство.

Когда диск заполняется, у меня есть программа, которая пытается удалить недавно использовавшиеся файлы до тех пор, пока не исчезнет нехватка места на диске. Ну получается, что несмотря на удаление файлов в /млн, он по-прежнему регистрируется как занимающий место на моем диске, по крайней мере, согласно дф и другие системные вызовы без диска.

Так есть ли особый способ, который мне нужен г.м. файлы на этом виртуальном диске, чтобы зарегистрировать, что место свободно? или нужно нестандартным способом запросить свободное место?

Изменить: полная команда и вывод, обратите внимание, что использование диска для /dev/vda1 не увеличивает 5000MB.

root@localhost:~# df
Файловая система Используемые 1K-блоки Доступно Использование % Установлено на
udev 490064 0 490064 0% /dev
tmpfs 101092 3188 97904 4% /запуск
/dev/vda1 19343152 2699088 15660656 15% /
tmpfs 505448 0 505448 0% /dev/shm
tmpfs 5120 0 5120 0% /выполнить/заблокировать
tmpfs 505448 0 505448 0% /sys/fs/cgroup
tmpfs 101088 0 101088 0% /выполнить/пользователь/0
root@localhost:~# dd if=/dev/zero of=loop0.img bs=1MB count=5000
5000+0 записей в
5000+0 записей
5000000000 байт (5,0 ГБ, 4,7 ГиБ) скопировано, 6,20117 с, 806 МБ/с
root@localhost:~# lossup --find --show `pwd`/loop0.img
/dev/loop0
root@localhost:~# mkfs -t ext4 -i 1024 /dev/loop0
mke2fs 1.44.5 (15 декабря 2018 г.)
Отбрасывание блоков устройств: сделано
Создание файловой системы с 1220703 блоками по 4k и 4884000 инодов
UUID файловой системы: 4f308a54-6ddd-4ef6-b685-c193dfec8b84
Резервные копии суперблоков, хранящиеся в блоках:
        8176, 24528, 40880, 57232, 73584, 204400, 220752, 400624, 662256,
        1022000

Размещение групповых столов: сделано
Написание таблиц inode: сделано
Создание журнала (16384 блока): сделано
Запись суперблоков и учетной информации файловой системы: сделано

root@localhost:~# смонтировать /dev/loop0 /mnt
root@localhost:~# df
Файловая система Используемые 1K-блоки Доступно Использование % Установлено на
udev 490064 0 490064 0% /dev
tmpfs 101092 3216 97876 4% /запуск
/dev/vda1 19343152 2769404 15590340 16% /
tmpfs 505448 0 505448 0% /dev/shm
tmpfs 5120 0 5120 0% /выполнить/заблокировать
tmpfs 505448 0 505448 0% /sys/fs/cgroup
tmpfs 101088 0 101088 0% /выполнить/пользователь/0
/dev/loop0 3594900 45080 3289556 2% /млн
Tom Yan avatar
флаг in
Обратите внимание, что когда вы используете `dd if=/dev/zero` без `conv=sparse` для создания образа, то, насколько увеличится использование файловой системы (файловой системы, состоящей из образа), вероятно, зависит от файловой системы. Если вы все равно хотите, чтобы изображение было разреженным файлом, вы можете просто использовать `truncate` для его создания.
Рейтинг:0
флаг in

Ты можешь использовать фстрим:

$ рм /tmp/test.img
rm: невозможно удалить '/tmp/test.img': нет такого файла или каталога
$ усечь -s 1G /tmp/test.img
$ sudo lossup --show -f /tmp/test.img 
/dev/loop0
$ sudo mkfs.ext4 -E root_owner=1000:1000 /dev/loop0
mke2fs 1.46.2 (28 февраля 2021 г.)
Отбрасывание блоков устройств: сделано                            
Создание файловой системы с 262144 блоками по 4k и 65536 inodes
UUID файловой системы: 70f9b205-0ada-43b1-8636-36983ad79394
Резервные копии суперблоков, хранящиеся в блоках: 
    32768, 98304, 163840, 229376

Размещение групповых столов: сделано                            
Написание таблиц inode: сделано                            
Создание журнала (8192 блока): сделано
Запись суперблоков и учетной информации файловой системы: сделано

$ sudo mount /dev/loop0 /tmp/meh/
$ openssl enc -pbkdf2 -aes-256-ctr -in /dev/zero -pass file:/dev/urandom -nosalt 2>/dev/null | дд of=/tmp/meh/fill iflag=count_bytes count=768M
1572864+0 записей в
1572864+0 записей вышло
805306368 байт (805 МБ, 768 МБ) скопировано, 2,15669 с, 373 МБ/с
$ sudo размонтировать /tmp/meh/
$ sudo mount /dev/loop0 /tmp/meh/
$ rm /tmp/meh/заполнить 
$ sudo размонтировать /tmp/meh/
$ sudo mount /dev/loop0 /tmp/meh/
$ du -h /tmp/test.img 
802M /tmp/test.img
$ sudo fstrim -v /tmp/meh/
/tmp/meh/: 973,4 МБ (1020678144 байта) обрезано
$ du -h /tmp/test.img 
33M /tmp/test.img

Неиспользуемое (с точки зрения файловой системы на образе) пространство будет преобразовано в «дыры» (в разреженный файл смысл).

Как вы уже догадались, монтировать можно с помощью -о отбросить также - просто обратите внимание, что результат может быть немного задержан.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.