XFS
Версия от 19:38, 13 ноября 2025; Admin (обсуждение | вклад)
Особенности
- высокая производительность при работе с большими файлами
- есть возможность для оптимизации под геометрию RAID
- есть возможность оптимизации выделения места экстентами (непрерывная последовательность блоков)
- нет возможности уменьшения размера файловой системы
Форматирование
# по умолчанию, bsize=4K mkfs.xfs /path/to/dev # xfs поддерживает bsize от 512b до 64K # при bsize менее 1024b не поддерживается CRC # форматирование с указанием bsize mkfs.xfs -b size=64K /path/to/dev # утилита blkid отображает параметр BLOCK_SIZE который соответствует размеру сектора блочного устройства sectsz, но не блока файловой системы bsize # форматирование с оптимизацией под LVM RAID (не проверено) # размер stripe unit = 32k, количество stripe unit в страйпе = 6 # ??? по умолчанию параметры LVM RAID не определяются автоматом? mkfs.xfs -d su=32k,sw=6 /dev/vg0/lv1
Информация о файловой системе
xfs_info # sectsz - размер блока блочного устройства # bsize - размер блока файловой системы # extsz - ??? # crc=1 - включена CRC проверка # sparse=1 - включена поддержка sparse
Изменение размера файловой системы
# уменьшение размера невозможно # увеличение размера xfs_growfs -d /mount/point
Изменение параметров файловой системы
xfs_admin
Дефрагментация
- дефрагментация имеет смысл только для HDD, на SSD она не повышает производительность и приводит к лишнему износу устройства
- архитектура XFS позволяет избегать лишней фрагментации и в большинстве случаев либо не нужна, либо нужна не часто
- в XFS фрагментация может возникать если файлы часто создаются и удаляются
# опретеделение текущего уровня фрагментации xfs_db -c frag -r /dev/sdX# # дефрагментация xfs_fsr /path/to/dev xfs_fsr /mount/point xfs_fsr /path/to/file # дефрагментация всех устройств перечисленных в /etc/mtab xfs_fsr
Backup и Restore
# дамп файловой системы xfsdump -f /path/to/file.tar /path/to/mountpoint # восстановление файловой системы # предварительно необходимо создать и смонтировать новую файловую систему xfsrestore -f /path/to/backup.tar /path/to/mountpoint # восстановление в интерактивном режиме с возможностью выбора отдельных каталогов для восстановления xfsrestore -i -f /path/to/backup.tar # похоже эти утилиты просто выполняют tar (предположение)
Важные особенности XFS
При работе с XFS необходимо учитывать следующее. • Для распараллеливания дисковых операций XFS делит том на несколько AG (Allocation Group) • Оптимально когда это количество равно количеству потоков/ядер o по умолчанию, mkfs.xfs всегда создает 4 AG (ну или почти всегда) o меньше 4-х это плохо потому что мало распараллеливания o сильны больше количества потоков плохо, потому что будет перебор всех • Размер AG определяется при форматировании и потом его нельзя изменить, только заново отформатировать • Все AG одного размера, только последняя может быть меньше, если размер тома не кратен размеру AG o по расходу места оптимально когда размер тома кратен размеру AG o размер структур зависит от размера AG, у больших много у мелких мало, в сумме примерно одинаково o если при большом AG, том ему не кратен, то полезного места будет меньше • У каждой AG своя независимая структура и свои метаданные, объединяет все небольшой суперблок в начале • При расширении XFS, добавляет новые AG, соответственно их количество растет и может стать не оптимальным • Самый плохой сценарий, когда вы создаете том 10 ГиБ и расширяете его до 2.5 ТиБ, получите 1000 AG по 2.5 ГиБ • Нормальный сценарий o сразу определяем какой размер у нас будет максимальный и как у нас будут расти ядра o задаем размер AG так чтобы по достижении максимального размера их количество было не сильно больше количества ядер o Например, у нас 8 ядер, в перспективе 16. - размер AG задаем 128 ГиБ - создаем том на 4 AG, 512 ГиБ, со временем можем расширить до 1 ТиБ - дальше создаем следующий том - если пришло время добавить ядер до 12, то можем расширять все тома до 1.5 ТиБ - если пришло время добавить ядер до 16, то можем расширять до 2 ТиБ # пример задания размера AG mkfs.xfs -d agsize=128g /path/to/device