С какими файловыми системами в Linux вы работали и какие подводные камни встречали?

«С какими файловыми системами в Linux вы работали и какие подводные камни встречали?» — вопрос из категории Linux, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В работе с серверами чаще всего сталкиваюсь с ext4, XFS и ZFS.

Опыт и подводные камни:

  • ext4:

    • Плюсы: Стандарт де-факто, надежная, отличная поддержка.
    • Минусы: Может сильно фрагментироваться при интенсивной записи мелких файлов (например, логов). Требует периодической проверки fsck на больших томах, что занимает время.
    • Проверка: fsck -f /dev/sdX
  • XFS:

    • Плюсы: Высокая производительность с большими файлами, онлайн-дефрагментация (xfs_fsr), быстрое создание снапшотов.
    • Минусы: Критично: Нельзя уменьшить размер существующей файловой системы. Планирование LVM/разделов должно быть с запасом.
    • Проверка метаданных: xfs_repair -n /dev/sdX
  • ZFS:

    • Плюсы: Потрясающая надежность (copy-on-write), встроенное сжатие, дедупликация, снапшоты.
    • Минусы: Требует много RAM (особенно с включенной дедупликацией). Сложнее в администрировании, не входит в стандартное ядло многих дистрибутивов.
    • Мониторинг: zpool status, zfs list

Общие подводные камни для всех:

  1. Закончились inodes: Файловая система полна, но df -h показывает свободное место. Решение: df -i для мониторинга, увеличение числа inodes при создании ФС (опция -N для mkfs.ext4).
  2. LVM Thin Provisioning: Можно выделить томов больше, чем есть физического пространства (overcommit). При реальном заполнении пула данные теряются. Необходим мониторинг lvs и vgs.
  3. NFS в высоконагруженных средах: Проблемы с блокировками файлов (stale file handles), особенно при сетевых сбоях. Важно настраивать таймауты (timeo, retrans).