XFS — файловая система Linux для серверов | Глоссарий | Глоссарий FREEHOSTING

XFS

XFS File System
XFS — 64-битная журналируемая файловая система, разработанная Silicon Graphics в 1993 году. Используется по умолчанию в RHEL, CentOS Stream, AlmaLinux, Rocky Linux. Оптимизирована под параллельный ввод-вывод и тома до 8 ЭБ.

Определение простыми словами

XFS — файловая система, изначально созданная для рабочих станций IRIX, а в 2001 году портированная в Linux. Сегодня это стандарт для серверных дистрибутивов на базе Red Hat: RHEL, AlmaLinux, Rocky. XFS проектировалась под большие объёмы и параллельный доступ — её аллокаторы делят том на «группы аллокации», каждая из которых обслуживается независимо. Это позволяет нескольким потокам писать в файловую систему одновременно без блокировок.

В отличие от Btrfs и ZFS, XFS не делает copy-on-write по умолчанию и не объединяет функции менеджера томов — для снимков и RAID нужен LVM или mdadm. Зато XFS показывает почти линейный рост производительности при увеличении числа CPU и не деградирует на больших каталогах с миллионами файлов.

Сравнение (таблица)

Параметр XFS ext4 Btrfs
Максимальный том 8 ЭБ 1 ЭБ 16 ЭБ
Параллельная запись Высокая (allocation groups) Средняя Средняя
Уменьшение тома Не поддерживается Только offline Онлайн
Дефрагментация xfs_fsr (онлайн) e4defrag btrfs filesystem defrag
Reflinks Да (с XFS v5) Нет Через CoW
Поведение при обрыве питания Журнал метаданных, нулевые файлы возможны Журнал данных и метаданных CoW исключает повреждения

Кейсы использования

  • СУБД PostgreSQL, MySQL, MariaDB — стабильная производительность на случайной записи в крупные файлы.
  • Файловые хранилища с миллионами файлов — например, S3-совместимое MinIO или Ceph OSD на голом железе.
  • Виртуальные диски qcow2/raw для KVM-гипервизоров — низкие накладные расходы.
  • Рендер-фермы и видеомонтаж: параллельный доступ к одному тому с нескольких воркеров.
  • Негативный сценарий: root-раздел рабочей станции, который вы планируете уменьшать. XFS не умеет shrink — придётся пересоздавать том. Для таких сценариев берите Btrfs или ext4.

Технические детали

# Создание XFS на разделе
mkfs.xfs -L data /dev/sdb1

# Монтирование с типичными опциями
mount -o noatime,inode64,logbufs=8 /dev/sdb1 /mnt/data

# Расширение тома (только в большую сторону)
xfs_growfs /mnt/data

# Дефрагментация в онлайне
xfs_fsr /mnt/data

# Проверка целостности (только на размонтированном томе)
umount /mnt/data
xfs_repair /dev/sdb1

# Создание копии-reflink (без дублирования блоков)
cp --reflink=always backup.tar /mnt/data/backup-2026.tar

Опции noatime и inode64 снимают типовые узкие места: первая отключает обновление времени доступа, вторая разрешает разместить inodes по всему диску, а не только в первых 1 ТБ.

Частые вопросы

Можно ли уменьшить том XFS?

Нет. XFS поддерживает только расширение через xfs_growfs. Если нужно уменьшить том — выгрузите данные через xfsdump, пересоздайте файловую систему меньшего размера и восстановите данные через xfsrestore.

XFS теряет данные при сбое питания?

Журналируются только метаданные. Файлы, открытые на запись в момент сбоя, могут оказаться нулевой длины. Для серверов на UPS это не проблема, для рабочих станций включайте барьеры записи (по умолчанию включены).

Что такое reflinks в XFS?

Это «дешёвые копии» файлов: cp --reflink создаёт второй файл, который указывает на те же блоки, и расходится с оригиналом только при изменении. Появились в XFS v5 с включённой опцией reflink=1 при mkfs.