С какими проблемами файловых систем в Linux вы сталкивались в работе?

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

Ответ

В работе с серверами и контейнерами я сталкивался с несколькими типичными проблемами файловых систем.

Основные проблемы и их решение:

  1. Исчерпание inodes (No space left on device, но df -h показывает свободное место).

    • Причина: Файловая система хранит ограниченное количество метаданных (inodes). Множество маленьких файлов (логи, кэш) может исчерпать лимит.
    • Решение:
      # Диагностика
      df -i  # Показать использование inodes
      # Поиск директорий с большим количеством файлов
      find / -xdev -type f | cut -d "/" -f 2 | sort | uniq -c | sort -n | tail
      # Очистка (например, старых логов или кэша пакетов)
      sudo journalctl --vacuum-time=7d  # Очистить журналы старше 7 дней
      sudo apt-get clean  # Для Debian/Ubuntu
  2. Диск заполнен, но du и df показывают разную занятость.

    • Причина: Процесс удалил файл, но держит его дескриптор открытым (часто — лог-файлы). Место освободится только после перезапуска процесса.
    • Решение:
      # Поиск удаленных, но еще открытых файлов
      lsof +L1  # Показать файлы со счетчиком ссылок <1
      # Или более конкретно
      lsof | grep '(deleted)'
      # Перезапуск проблемного сервиса (например, nginx)
      sudo systemctl restart nginx
  3. Повреждение файловой системы (после сбоя питания).

    • Решение: Проверка и восстановление при загрузке с live-CD или в режиме single-user.
      # Для ext4
      sudo fsck -f /dev/sdX1
      # Для xfs (только проверка, восстановление сложнее)
      sudo xfs_repair /dev/sdX1
  4. Проблемы с правами доступа, например, после некорректного выполнения chmod -R на системных директориях.

    • Решение: Восстановление прав из бэкапа или использование пакетного менеджера для переустановки системных пакетов.
      # Для RHEL/CentOS: переустановка пакета для восстановления стандартных прав
      sudo rpm --setperms <package-name>