Как сделать файловую систему ext4 разреженной?


10

Я использую Linux в качестве гостевой ОС в VirtualBox. Я удалил огромное количество файлов из своей файловой системы. Теперь я хочу сжать файл образа файловой системы (VDI). Сжатие работает путем сжатия образа файловой системы, где он имеет «нулевое» значение на диске.

Кажется, что приложение с именем zerofree может записать « ноль » в свободное пространство файловой системы таким образом, что оно становится разреженным. Но инструкции говорят, что это работает только на ext2 / ext3. У меня есть ext4 на моей гостевой ОС.

  1. Почему он не работает на ext 4 (причина называется "экстентами", но может кто-то пролить на это больше света)?

  2. Будет ли это работать, если я подключу ext 4 как ext 3, а затем перемонтировать как ext 4 ?

  3. Любые другие инструменты, которые могут сделать что-то похожее на ноль бесплатно в Ext?


2
По ссылке там zerofree работает на ext4.
psusi

Я не уверен, работает ли он в ваше время или нет, но на man-странице сказано, что он поддерживает ext4
phuclv

Ответы:


23

На странице, на которую вы ссылаетесь ( http://intgat.tigress.co.uk/rmy/uml/index.html ), говорится:

The utility also works on ext3 or ext4 filesystems.

Так что я не уверен, откуда вы взяли, что это не работает на файловых системах ext4.

Обратите внимание, что утилита zerofree отличается от патча ядра zerofree , упомянутого на той же странице (который, похоже, не имеет версии для ext4).

Обновление: по крайней мере, в случае VirtualBox, я не думаю, что вам вообще нужна эта утилита. В моем тестировании на стандартной Ubuntu 10.04, установленной на ext4, вы можете просто обнулить файловую систему следующим образом:

$ dd if=/dev/zero of=test.file

... дождитесь заполнения виртуального диска, затем

$ rm test.file

и выключите виртуальную машину. Затем на вашем хосте VirtualBox выполните:

$ VBoxManage modifyhd --compact yourImage.vdi

и вы восстановите все неиспользуемое пространство.


Спасибо за ваш ответ. На странице zerofree не указано ext4, поэтому мне нужна альтернатива.
rajaganesh87

1
Предлагаемая альтернатива (dd if = / dev / zero of = test.file) сработала для меня! Гораздо проще, чем другие решения.
Пису

3
Это должен быть принятый ответ. Работает красиво.
Крис Пратт

Сделать syncпосле dd.
Игнис

ddИдея работала для меня тоже. Красиво сделано!
Стефан

1

Вы можете использовать e2fsprogs, есть версия, которая может использоваться с ext4.

Сделай себя суперпользователем:

# su

Размонтируйте ваш диск:

# umount /dev/sda1

Удалить журнал вашего диска:

# tune2fs -O ^has_journal /dev/sda1

А затем измените размер вашей файловой системы:

# resize2fs /dev/sda1 30G


Спасибо за ваш ответ, но я не хочу уменьшать раздел, а образ файловой системы (vdi) гостя.
rajaganesh87
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.