В Linux проверка файловой системы и исправление ошибок происходит в автоматическом режиме каждый раз когда сервер загружается.
Если на диске обнаруживаются серьезные ошибки — появляется ошибка Automatic file system check failed. Из нее следует, что один из разделов с существующей на нем файловой системой не может быть проверен.
Linux проверка файловой системы и диска
Полностью ошибка обычно выглядит следующим образом:
Filesystem check failed.
Please repair manually and reboot. Note that the root file system is currently mounted readonly. To remount it read-write type: mount -n -o remount ,rw /
When you exit the maintenance shell the system will reboot automatically.
Увидеть подобные ошибки можно в консоли при старте сервера, в VNC консоли или IPMI интерфейсе. Если проверен быть не может диск или раздел с основной загрузочной записью — система не запустится.
Общий алгоритм устранения проблем с поврежденной файловой системой:
- отмонтировать раздел
- выполнить восстановление файловой системы с помощью fsck
В случае если сервер не загружается в нормальном режиме — повреждена обычно файловая система корневого раздела.
Нужно загрузиться с live-CD или загрузочного USB устройства и вручную запустить проверку. Использовать будет утилиту fsck, она есть в Ubuntu и Debian — системах, которые используют по умолчанию файловую систему ext4.
В CentOS используется xfs и утилита xfs_repair. Принципы сохраняются.
Тип файловой системы для раздела можно увидеть в /etc/fstab, об этом ниже.
Сначала выясним какой раздел корневой, потом проверим его.
Выясняем какой раздел корневой
Запустив сервер нужно проверить список разделов, сделать это можно используя fdisk -l или просмотрев список в /etc/fstab, точную информацию позволяет получить проверка fstab.
fstab нужно проверять на диске сервера, при загрузке с внешнего носителя нужно сначала определить какой диск содержит корневой раздел (обычно это самый большой раздел на диске).
fdisk -l
Раздел предположительно найден, нужно примонтировать его из режима восстановления (при загрузке с внешнего носителя)
mount /dev/vda2 /mnt
Искомый /etc/fstab в результате из режима восстановления будет доступен по пути /mnt/etc/fstab
Проверяем какой раздел должен монтироваться в корень (/), с помощью blkid по идентификатору выясняем имя раздела. В примере это /dev/vda2.
Предположение таким образом подтвердилось.
! Перед тем как переходить к починке файловой системы корневого раздела обязательно отмонтируем его в режиме восстановления
cd / && umount /mnt
Переходим в корень (системы режима восстановления), отмонтируем раздел из /mnt.
Использование fsck для проверки файловой системы
Далее запускаем утилиту fsck (File System ChecK) передавая ей имя партиции или устройства обнаруженного в /etc/fstab
fsck -y /dev/vda2
При больших объемах данных процесс проверки может занять какое-то время. Ключ -y означает yes, это инструкция утилите давать положительный ответ на все вопросы, которые в возникают диалогах.
Когда процесс завершится выводим сервер из режима восстановления отключая внешний носитель. Существовавшие ошибки таким образом будут исправлены.
fsck для несистемных дисков
Проверка других разделов (не корневого) производится так же, но нет необходимости в загрузке из внешней системы. Просто отмонтируется раздел, проверяется и восстанавливается файловая система. Перед этим стоит остановить работу важных служб на сервере.
Например, если есть диск /dev/vdc с разделом /dev/vdc1, который смонтирован в /backup
umount /backup
fsck -y /dev/vdc1
После проверки и восстановления монтируем раздел обратно
mount /dev/vdc1 /backup
fsck можно запускать при загрузке системы автоматически или каждые N-монтирований раздела.