
Я сделал резервную копию/восстановил файловую систему из системы Ubuntu в Fedora 17. Я заметил, что согласно df
выводу, используемое пространство увеличилось на 30%. В чем могут быть причины этого?
В системе Fedora df
отображается: использовано 78 ГБ
В системе Ubuntu df
отображается: использовано 60 ГБ
Различия между системами:
Ubuntu: ext3 (создано много лет назад)
Fedora 17: ext4 (создано с помощью ванильного mkfs.ext4
вызова)
Восстановление в файловой системе XFS (в Fedora 17) освобождает 78 ГБ занятого пространства.
Резервное копирование и восстановление было сделано с помощью GNU tar. Файловая система содержит широкий спектр различных видов файлов (т. е. от исходных деревьев, почтовых каталогов до ISO и т. д.).
решение1
Первое, что приходит на ум, это «разреженные файлы». Традиционно можно было создать файл с данными по смещению в файле, а затем искать гораздо большее смещение. При записи данных по гораздо большему смещению файловая система не выделяла бы блоки на диске для промежуточных смещений. Программы, которые считывают эти смещения без выделенных блоков на диске, считывают нулевые значения.
При архивировании разреженных файлов смещения разреженного файла, не имеющего выделенных дисковых блоков, приводят к выделению дисковых блоков как в tar-файле (или выходном потоке), так и в воссозданном файле.
Я припоминаю, что некоторые СУБД создавали разреженные файлы, как и такие программы, как MSC/NASTRAN (система моделирования конечных элементов). Резервное копирование этих разреженных файлов в конечном итоге занимает большие объемы офлайн-хранилища, к большому удивлению всех участников.
решение2
Еще одна вещь, на которую следует обратить внимание, когда вы видите несоответствия пространства, — это пространство, зарезервированное для root (обычно 5% на ext{2,3,4}). Это пространство позволяет ОС функционировать (писать файлы журналов и т. д.), даже если пользователь заполняет диск (при условии, что этот пользователь не является root).
Вы можете просмотреть этот параметр с помощью tune2fs -l
:
[root@host ]# tune2fs -l /dev/md0 |grep Reserved
Reserved block count: 1279986
Reserved GDT blocks: 1017
Reserved blocks uid: 0 (user root)
Reserved blocks gid: 0 (group root)
Вы можете отключить это в ваших файловых системах ext с помощьюtune2fs -m 0 /dev/NAME
Если присмотреться, то я не верю, что xfs зарезервировал место для root.