Ответ
В работе с серверами и контейнерами я сталкивался с несколькими типичными проблемами файловых систем.
Основные проблемы и их решение:
-
Исчерпание 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
-
Диск заполнен, но
duиdfпоказывают разную занятость.- Причина: Процесс удалил файл, но держит его дескриптор открытым (часто — лог-файлы). Место освободится только после перезапуска процесса.
- Решение:
# Поиск удаленных, но еще открытых файлов lsof +L1 # Показать файлы со счетчиком ссылок <1 # Или более конкретно lsof | grep '(deleted)' # Перезапуск проблемного сервиса (например, nginx) sudo systemctl restart nginx
-
Повреждение файловой системы (после сбоя питания).
- Решение: Проверка и восстановление при загрузке с live-CD или в режиме single-user.
# Для ext4 sudo fsck -f /dev/sdX1 # Для xfs (только проверка, восстановление сложнее) sudo xfs_repair /dev/sdX1
- Решение: Проверка и восстановление при загрузке с live-CD или в режиме single-user.
-
Проблемы с правами доступа, например, после некорректного выполнения
chmod -Rна системных директориях.- Решение: Восстановление прав из бэкапа или использование пакетного менеджера для переустановки системных пакетов.
# Для RHEL/CentOS: переустановка пакета для восстановления стандартных прав sudo rpm --setperms <package-name>
- Решение: Восстановление прав из бэкапа или использование пакетного менеджера для переустановки системных пакетов.