Как я могу создать сценарий для тестирования Zerofree?
Что я делаю
Я изучаю инструмент разрежения изображений файловой системы: Zerofree .
Я предполагаю, что шаги по созданию сценария должны быть следующими:
- создать образ файловой системы.
- используйте какой-нибудь способ заполнить его.
- очистите его, но фактическое использование пространства не изменится, что означает, что в этой файловой системе существует нераспределенное или неиспользуемое пространство.
- при работе с нулевым режимом фактическое использование пространства уменьшается.
Но после запуска Zerofree в fs фактическое использование пространства не уменьшается.
Есть ли что-то, что я неправильно понимаю? Как я могу сделать это правильно?
Любое предложение полезно!
Запись того, что я пробовал
# root❯❯❯ dd if=/dev/zero of=fs.image bs=1M seek=1024 count=0
0+0 records in
0+0 records out
0 bytes copied, 4.8167e-05 s, 0.0 kB/s
# root❯❯❯ du -h fs.image
0 fs.image
# root❯❯❯ mkdir /mnt/test
# root❯❯❯ mkfs.ext3 fs.image
mke2fs 1.45.6 (20-Mar-2020)
Discarding device blocks: done
Creating filesystem with 262144 4k blocks and 65536 inodes
Filesystem UUID: d65a10e7-4620-433b-a135-386d65acf414
Superblock backups stored on blocks:
32768, 98304, 163840, 229376
Allocating group tables: done
Writing inode tables: done
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done
# root❯❯❯ du -h fs.image
33M fs.image
# root❯❯❯ mount fs.image /mnt/test/
# root❯❯❯ yes abcdefghijklmnopqrstuvwxyz0123456789 > /mnt/test/largefile
yes: standard output: No space left on device
# root❯❯❯ du -h fs.image
1005M fs.image
# root❯❯❯ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/loop0 976M 976M 0 100% /mnt/test
# root❯❯❯ rm /mnt/test/largefile
rm: remove regular file '/mnt/test/largefile'? y
# root@oe ~/../project-zerofree ❯❯❯ du -h fs.image
1007M fs.image
# root❯❯❯ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/loop0 976M 1.3M 924M 1% /mnt/test
# root❯❯❯ umount /mnt/test
# root❯❯❯ du -h fs.image
1007M fs.image
# root❯❯❯ zerofree -v fs.image
249255/249500/262144
# root❯❯❯ du -h fs.image
1007M fs.image
2 ответа
Спасибо за ответ Мокубая , который помог мне найти правильный способ тестирования Zerofree.
1. Сделать образ файловой системы
# root❯❯❯ dd if=/dev/zero of=test.img bs=1M count=1024
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 0.49236 s, 2.2 GB/s
# root❯❯❯ mkfs.ext4 test.img
mke2fs 1.45.6 (20-Mar-2020)
Discarding device blocks: done
Creating filesystem with 262144 4k blocks and 65536 inodes
Filesystem UUID: 4423921e-cb7c-4850-b29f-45625ce8e86f
Superblock backups stored on blocks:
32768, 98304, 163840, 229376
Allocating group tables: done
Writing inode tables: done
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done
# root❯❯❯ du -h test.img
33M test.img
2. Заполните его
# root❯❯❯ mount test.img /mnt/test/
# root❯❯❯ yes abcdefghijklmnopqrstuvwxyz0123456789 > /mnt/test/largefile
yes: standard output: No space left on device
# root❯❯❯ du -h test.img
990M test.img
3. Создайте неиспользуемое пространство
# root❯❯ rm -f /mnt/test/largefile
# root❯❯❯ umount /mnt/test
# root❯❯❯ du -h test.img
990M test.img
4. Копирование с разреженной опцией
# root❯❯❯ cp --sparse=always test.img sparsed.img
# root❯❯❯ du -h *
959M sparsed.img
990M test.img
Есть небольшой эффект.
5. Запуск без нуля
# root❯❯❯ zerofree -v test.img
245055/249189/262144
# root❯❯❯ cp --sparse=always test.img zerofreed_and_sparsed.img
# root❯❯❯ du -h *
959M sparsed.img
990M test.img
1.1M zerofreed_and_sparsed.img
Очевидный эффект!
Zerofree
делает не что иное, как запись нулей в свободные области изображения. Само по себе это никак не повлияет на размер изображения на диске.
Со страницы руководства Zerofree
Zerofree находит нераспределенные блоки с содержимым, отличным от нуля, в файловой системе ext2, ext3 или ext4 (например, /dev/hda1) и заполняет их нулями (или другим октетом по вашему выбору).
И
В зависимости от типа образа диска дополнительная утилита может уменьшить размер образа диска после запуска Zerofree.
zerofree
сама по себе не является командой для преобразования изображений в разреженные; в лучшем случае она может облегчить преобразование таких изображений путем эффективного стирания зон, не содержащих реальных данных, но она не может сделать это сама по себе.
Одним из способов его использования является стирание области диска перед сжатием с помощью инструментов виртуальной машины аналогично
sdelete
инструмент для Windows