Дефрагментация XFS на удалённом сервере
2011-03-30
Этап 1
Входим на целевой сервер через ssh. Запускаем screen
, так как дефрагментация может занять продолжительное время.
Этап 2
Определяем степень фрагментации целевых разделов:
# xfs_db -r /dev/sda2
xfs_db> frag
actual 35, ideal 34, fragmentation factor 2.86%
xfs_db> quit
# xfs_db -r /dev/mapper/lvm-home
xfs_db> frag
actual 113, ideal 111, fragmentation factor 1.77%
xfs_db> quit
В данном примере видна проверка обычного раздела /dev/sda2 и раздела lvm, работающего через device-mapper. Оба раздела не нуждаются в дефрагментации, что видно по выведенной информации. Если фактор фрагментации высок, то завершаем работу приложений, которые могут использовать разделы с файловой системой XFS, так как файлы, заблокированные работающими программами, не могут быть упорядочены.
Причины препятствующие дефрагментации:
- Файл заблокирован каким-либо процессом;
- Мало места на разделе.
Этап 3
Дефраментация запускается не для устройства, а для точки монтирования целевых разделов. Например, ранее проверенный на степень фрагментации раздел /dev/sda2 подмонтирован к /mnt/second. Запускаем дефрагментацию:
# xfs_fsr -v /mnt/second
/mnt/second start inode=0
ino=137
ino=137: file busy
ino=537460065
ino=537460065 already fully defragmented.
Здесь видно, что раздел используется каким-то приложением или демоном, так как “file busy”. В противном случае мы увидели бы:
# xfs_fsr -v /mnt/second
/mnt/second start inode=0
ino=137
extents before:68 after:1 DONE ino=137
После дефрагметации можно убедиться, что фактор фрагментации уменьшился - повторив второй этап. Я замечал, что для разделов, работающих через device-mapper, информация о степени фрагментации может обновиться только после umount/mount. На самом же деле раздел, естественно, уже дефрагментирован.