XFS использует больше места, чем объем сохраненных файлов [дубликат].

Вопрос или проблема

У нас есть том XFS, подключенный к RHEL9.5 (5.14.0-503.22.1.el9_5.x86_64) с 88K файлов:

$ find /mnt -type f | wc -l
87739

Файловая система сообщает о ~200 ГБ свободного места. Тем не менее, общее – реально используемое составляет ~4ТБ.

$ df /mnt
Файловая система  1K-блоков     Использовано Доступно Использование% Смонтировано в
/dev/sda1      558602657792 558397210232 205447560 100% /mnt

$ du -s /mnt
554502450484    /mnt

Разница между общим размером файловой системы и суммой размеров файлов

558602657792 - 554502450484
4100207308

Где потерянное пространство и как его восстановить? Как предлагали другие ответы, мы попробовали xfs_fsr и xfs_repair, но ничего не изменилось.

Потерянное пространство, вероятно, выделено самой файловой системой.

Я создал LVM объемом 540ТБ с использованием нескольких дисков с тонким выделением и отформатировал его в XFS. Вот результат:

$ sudo mkfs.xfs /dev/mapper/vg_test-lv_test
meta-data=/dev/mapper/vg_test-lv_test isize=512    agcount=540, agsize=268435455 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=1
         =                       reflink=1    bigtime=1 inobtcount=1 nrext64=0
data     =                       bsize=4096   blocks=144955133952, imaxpct=1
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=521728, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
$ sudo mount /dev/mapper/vg_test-lv_test /mnt
$ df -h /mnt
Файловая система                   Размер Использовано Доступно Использование% Смонтировано в
/dev/mapper/vg_test-lv_test  540T   11T  530T   2% /mnt
$ du -hs /mnt
0       /mnt

Ни одного файла на нем и 11ТБ из 540ТБ занято.

Я также повторил тесты из этого ответа с более крупной файловой системой, запустив mkfs.xfs с различными значениями для reflink и crc.

$ df -h /mnt/
Файловая система                   Размер Использовано Доступно Использование% Смонтировано в
/dev/mapper/vg_test-lv_test  540T   11T  530T   2% /mnt (reflink=1, crc=1)
/dev/mapper/vg_test-lv_test  540T  7.2T  533T   2% /mnt (reflink=0, crc=1)
/dev/mapper/vg_test-lv_test  540T   58M  540T   1% /mnt (reflink=0, crc=0)

Как видите, используемое пространство заметно варьируется в зависимости от настроек xfs.

Тесты проводились на Ubuntu 24.04 с настройками по умолчанию, если не указано иное.

.

Ответ или решение

Используя файловую систему XFS на сервере под управлением Red Hat Enterprise Linux 9.5, может возникнуть ситуация, когда, несмотря на относительно небольшое количество файлов, занятость места на диске оказывается гораздо большей, чем ожидалось. Рассмотрим, почему это происходит и какие шаги можно предпринять для утилизации этого "пропавшего" пространства.

Теоретический аспект (Theory)

Файловая система XFS известна своей производительностью и масштабируемостью, что делает ее предпочтительным выбором для систем, требующих обработки больших объемов данных. Однако, XFS также выделяет пространство для различных метаданных, которые необходимы для обеспечения ее функциональности. Это включает журналы транзакций (journaling), ассоциированные метаданные для фрагментации данных, таблицы extents для отслеживания растянутых данных, снятие блокировок (reflink) и контрольные суммы (CRC), которые могут потреблять значительное количество дискового пространства, в зависимости от настроек.

Одной из основных причин, по которым файловая система может занимать больше места, чем данные в файлах, является отражение (reflink) и контроль ошибок (CRC). Оба этих параметра обеспечивают улучшенные функции, такие как поддержка снимков (snapshots) и целостность данных, но требуют дополнительного дискового пространства для хранения информации о блоках данных и их зависимости.

Пример (Example)

В приведенном примере точно так же, даже без значительного числа файлов, файловая система XFS показывает использование 11 ТБ из 540 ТБ из-за активированного режима reflink и crc=1. Это наглядная демонстрация того, как настройки XFS могут повлиять на доступное пространство:

  1. Настройки reflink=1, crc=1: Используемое пространство составляет 11 ТБ.
  2. Настройки reflink=0, crc=1: Используемое пространство уменьшается до 7.2 ТБ.
  3. Настройки reflink=0, crc=0: Используемое пространство значительно уменьшается до 58 МБ.

Эти примеры указывают на то, как определенные функциональные возможности могут занимать существенное количество пространства, даже если оно на первый взгляд представляется пустым.

Применение (Application)

Разобравшись с теорией и примерами, можно рассмотреть подходы к решению проблемы и высвобождению занятых ресурсов:

1. Анализ настроек XFS:

Первый шаг заключается в понимании текущих настроек файловой системы. Вы можете использовать команду xfs_info для получения информации о текущем состоянии и активированных функциях файловой системы. Это позволяет оценить, какие специфические функции XFS могут являться причиной роста конфигураций.

2. Оптимизация настроек форматирования:

Если ваш конкретный случай не требует определенных функций, таких как reflink или crc, вы можете переформатировать файловую систему с отключенными ненужными параметрами. Однако важно учитывать, что это приведет к полной потере данных, и предварительно следует выполнить резервное копирование.

3. Использование встроенных инструментов:

Как уже упоминалось, инструменты, такие как xfs_repair и xfs_fsr, могут помочь с дефрагментацией и восстановлением файловой системы. Хотя в представленном случае это не помогло, эти команды могут быть полезны в других сценариях, таких как исправление поврежденных метаданных или улучшение производительности накопителя.

4. Журналирование и мониторинг:

Настройка систем мониторинга для отслеживания использования диска и состояния файловой системы позволит своевременно реагировать на неожиданные изменения и предотвращать проблемы до их появления.

5. Консультация с экспертами и обновление знаний:

Файловые системы продолжают эволюционировать, и прошлые лучшие практики могут изменяться. Регулярные консультации с сообществом и информационное сопровождение помогут оставаться в курсе изменений и следовать лучшим практикам в области управления данными.

В заключение, понимание того, как различные функции XFS влияют на использование пространства, является ключевым шагом перед выбором подхода к решению или утилизации "потерянного" пространства. Учет всех факторов позволяет не только оптимизировать текущие настройки, но и планировать использование файловой системы более эффективно в будущем.

Оцените материал
Добавить комментарий

Капча загружается...