LINUX.ORG.RU

Есть ли способ найти все свободные блоки на смонтированной ro файловой системе?

 , , ,


0

2

Есть некая, нативно поддерживаемая линуксом файловая система, которая смонтирована в read only. Нужно найти все блоки блочного устройства, которые не заняты данными, в том числе внутренними данными самой FS. Возможно ли это? По сути, нужно что-то наподобие FIBMAP, только наоборот.

Похоже для ext* это как-то можно сделать с помощью libe2fs. Но это только для ext. Хотелось бы чего-нибудь более простого и универсального.

upd. Решение должно быть юзерспейсное, без модификации ядра.

Deleted

Последнее исправление: Deleted (всего исправлений: 1)
Ответ на: комментарий от Deleted

cast i-rinat

Не уверен, что такое вообще есть. FIBMAP точно пропустит директории, FIEMAP — журнал. Про таблицы inode или дерево ключей и речи вовсе нет.

По теме вспомнился только этот патч к xfs: http://comments.gmane.org/gmane.linux.file-systems/68121

i-rinat ★★★★★
()

Насколько я понял, ты хочешь получить информацию о состоянии, которое можно осмыслить, лишь зная специфику конкретной ФС через слой абстракции, который призван эту специфику скрыть.

Кхм, боги хаоса неделимого одобряют.

pathfinder ★★★★
()
Ответ на: комментарий от pathfinder

Насколько я понял, ты хочешь получить информацию о состоянии, которое можно осмыслить, лишь зная специфику конкретной ФС через слой абстракции, который призван эту специфику скрыть.

Для решения моей задачи нужна только эта информация: список адресов и размеров незанятого места, и больше никакой. Более того, если в этом списке будет немного лишнего - нормально и никак не помешает. И срать я хотел на специфику =).

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)

Подмонтировать RW.

cat /dev/zero > /some_file
rm /some_file

После этого анализировать блоки забитые нулями

vromanov ★★★
()
Ответ на: комментарий от vromanov

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

Deleted
()

А почему не просуммировать FIEMAP по всем файлам/каталогам? То что осталось — пустое место.

monk ★★★★★
()
Ответ на: комментарий от monk

То что осталось — пустое место.

Пустое место + таблицы inode + битмапы свободного места + журнал + суперблок + копии суперблока.

i-rinat ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.