Каждый более-менее опытный пользователь линукса, наверное, хотя бы слышал про данную файловую систему. А многие, включая и меня, используют ее повседневно. Рассматривать достоинства и недостатки XFS я не стану, а вместо этого напишу о поддержании ФС в оптимальном состоянии. А конкретно: о дефрагментации.
Есть очень хорошая статья на эту тему здесь. Я частично переведу некоторые моменты.
Немного теории
Архитектура XFS такова, что содержимое файла в ней располагается в так называемом "пространстве переменной длины" (extent). Данные пространства представляют собой смежные регионы, расположенные в файловой системе. То есть, при копировании файла на ФС он обычно занимает один extent. Однако, если позже содержимое файла меняется, то возможна ситуация, что пространство, находящееся после файла, уже занято другими данными. В этом случае содержимое файла может быть помещено в два разных extent'а, физически находящиеся на удаленных друг от друга местах диска. Конечно, какой-либо процесс/программа по-прежнему без проблем может обращаться к файлу, однако скорость работы снижается при обращении к разным удаленным друг от друга секторам диска.
В зависимости от аспектов использования ФС, файлы на ней могут довольно значительно фрагментироваться.
Программа xfs_bmap: просмотр информации о расположении файла
С помощью программы xfs_bmap можно увидеть карту extent'ов, в которых хранится конкретный файл.[alsvartr@bust ~]$ xfs_bmap -v /media/storage/VL5.9-Light-B2.iso
/media/storage/VL5.9-Light-B2.iso:
EXT: FILE-OFFSET BLOCK-RANGE AG AG-OFFSET TOTAL
0: [0..416991]: 392994088..393411079 10 (26702088..27119079) 416992
1: [416992..532679]: 392631640..392747327 10 (26339640..26455327) 115688
2: [532680..641599]: 64962272..65071191 1 (28333072..28441991) 108920
3: [641600..712959]: 63823592..63894951 1 (27194392..27265751) 71360
Опция -v (verbose) выводит дополнительную информацию.
Как видно, файл VL5.9-Light-B2.iso фрагментирован: хранится в четырех разных extent'ах. Можно попробовать его дефрагментировать.
xfs_fsr: дефрагментация XFS
Данная программа предназначена для реорганизации XFS. Достаточно указать ей нужный файл:[alsvartr@bust ~]$ xfs_fsr /media/storage/VL5.9-Light-B2.iso
Дефрагментация длится некоторое время в зависимости от объема файла. Можно теперь снова проверить карту extent'ов:[alsvartr@bust ~]$ xfs_bmap -v /media/storage/VL5.9-Light-B2.iso
/media/storage/VL5.9-Light-B2.iso:
EXT: FILE-OFFSET BLOCK-RANGE AG AG-OFFSET TOTAL
0: [0..712959]: 394944045..395411741 10 (26702088..27119079) 712960
Теперь файл занимает один extent.
Для того, чтобы дефрагментировать всю файловую систему целиком, достаточно указать в качестве параметра к программе устройство ФС, вместо файла:[alsvartr@bust ~]$ xfs_fsr /dev/sdb1
/media/storage start inode=0
Полезными опциями также могут быть -v (выводит информацию о файле, обрабатывающемся в данный момент) и -t (время работы программы).
Про последнюю опцию стоит сказать отдельно. Она ограничивает время работы программы указанным значением в секундах. То есть запуск xfs_fsr -t 7200 /dev/sdb1 ограничит время работы двумя часами. После истечения указанного времени xfs_fsr сохранит текущее состояние работы в файл /var/tmp/.fsrlast, чтобы продолжить с этого же места в следующий раз, когда будет указана опция -t. С помощью этой опции можно, например, автоматически выполнять дефрагментацию регулярно небольшими интервалами по cron'у.
Нужно отметить, что механизм работы xfs_fsr состоит в том, что при обработке каждого отдельного файла его содержимое копируется в отдельный extent и метаданные ФС меняются так, что новый файл заменяет старый. Поэтому для дефрагментации необходимо иметь достаточно свободного места - столько, чтобы поместилась копия любого файла на диске.
После выполнения xfs_fsr полезно взглянуть на текущий процент фрагментации ФС.
Статус фрагментации при помощи xfs_db
Программа xfs_db может быть использована для просмотра информации о фрагментации файлов:[alsvartr@bust ~]$ xfs_db -r /dev/sdb1
xfs_db> frag
actual 101181, ideal 95800, fragmentation factor 5.32%
xfs_db> quit
Опция -r (readonly) нужна для проверки ФС, которая в данный момент примонтирована и используется.
Для получения более подробной информации о конкретных программах стоит обратиться к соответствующим руководствам man.
P.S. Для некоторых операций могут потребоваться права root.
Дополнительные материалы:
Wikipedia: File system fragmentation
Wikipedia: Extent (file systems)
3 авг. 2008 г.
Оптимизация файловой системы XFS
Подписаться на:
Комментарии к сообщению (Atom)
31 комментарий:
Спасибо огромное!
Именно то, что я искал. Буквально вчера-позавчера разочаровался напрочь в JFS потому что тормозить слала не по детски именно при работе с большими файлами. Решил переехать на XFS, и Ваша статья очень удачно подвернулась под руку Гуглу :)
Хорошая статья. Как выяснилось у меня фрагментация 98% - видимо закачка торентов приводит к фрагментации закаченного. Файл на 8Гб имел несколько тысяч фрагментов... Он же скопированный имел пару десятков фрагментов, после дефрагментации его - стал один.
Теперь поставил дефрагментироваться все 3Тб.
Спасибо за статью.
Кстати, в Gentoo утилита xfs_fsr находится в пакете xfsdump
Между прочим, если вам однажды захочется заглушить чей-либо сотовый телефон или другое средство связи, то попробуйте использовать для этого Блокиратор мобильного телефона.
В принципе если на данном проекте будут писаться в такой же тематике и дальше, буду читать.
как говориться, Без пользы жить - безвременная смерть.
Хорошо написано, надо будет скинуть ссылочку товарищам, чтобы и они оценили вашу статью.
Без преувеличения можно сказать, что пост тему раскрыл на все 100.
Как хорошо что удалось отыскать такой замечательный блог, и тем более отлично, что есть такие автора толковые!
Хорошо написано, надо будет скинуть ссылочку товарищам, чтобы и они оценили вашу статью.
как говориться, Без пользы жить - безвременная смерть.
Отличная статья.Респект автору.
В принципе если на данном проекте будут писаться в такой же тематике и дальше, буду читать.
Без преувеличения можно сказать, что пост тему раскрыл на все 100.
Вчера подруга скинула на мыло адрес вашего сайта. Но я не придал особого значения, я сегодня зашел и понял что она была права - сайт действительно СУПЕР!
Вчера подруга скинула на мыло адрес вашего сайта. Но я не придал особого значения, я сегодня зашел и понял что она была права - сайт действительно СУПЕР!
Супер статья! Подписался на RSS, буду следить =)
Хехе… Мда… Таким взглядам и отношению к работе многие только будут завидовать! Молодцом!
Оригинальная идея. Интересно сколько времени он на это потратил
Можно ли взять одну картинку с Вашего блога? Очень понравилась. Линк на Вас есстественно поставлю.
Отличная статья.Респект автору.
Спасибо за познавательную статью!
как говориться, Без пользы жить - безвременная смерть.
Спасибо за познавательную статью!
Комплекс текстов неплохой, добавлю сайт в закладки.
I understand this question. It is possible to discuss.
“В принципе если на данном проекте будут писаться в такой же тематике и дальше, буду читать.”
[url=http://www.serota.ru] [/url]
“Отличный пост, прочитала с удовольствием! Не плохое начало. Удачи в дальнейшем!”
[url=http://www.serota.ru] [/url]
Отличная статейка, прочитал с удовольствием! :) Так держать )
Спорный момент описан в статье, но всё равно, пожалуй, добавлю Вашу страницу в избранное ))
Почистите статью, уважаемый, от воды - в целом, нравится. Отлично написано
Отправить комментарий