Медленная перезагрузка - понимание fsck и tune2fs

У меня проблема с моим веб-сервером: когда он долго работал, а потом по какой-то причине отключается, загрузка занимает целую вечность.

Мой обходной путь к этому заключался в создании cron для периодической перезагрузки сервера (я был оскорблен за это, будьте добры). Перезагрузка была настолько быстрой, что сервер смог ответить на запросы до того, как они истекли, поэтому я с этим справился.

Но теперь мне сказали, что причиной этого может быть форсирование fsck через X дней, а также после монтирования Y, так что мое исправление мало чем поможет.

Итак, вопрос в том, что мне делать с fsck? Принудительно запускать его чаще или отключить? Может ли он работать в любое время или во время загрузки? Пример того, как это сделать с помощью tune2fs, также приветствуется.

2 ответа

Решение

Сначала ответим на самый простой вопрос: проверка файловой системы "в любое время" (т. Е. Когда система запущена) называется "оперативной" проверкой, и в целом она не поддерживается. Причина проста: когда монтируется файловая система, ядро ​​выполняет произвольные действия с фактическим блочным устройством - это нормально, потому что оно отслеживает то, что оно делает. Но когда вы добавляете fsck в микс, он тоже портится с необработанным блочным устройством и не сообщает ядру о том, что он делает. Таким образом, они, по сути, наступают друг другу на ноги, когда вносят изменения в диск, и в результате вы получаете поврежденную файловую систему. Даже если вы просто "проверите" в режиме только для чтения, результаты, возвращаемые fsck, будут бессмысленными, опять же, потому что fsck не имеет представления о том, что делает ядро.

Чтобы изменить частоту проверки файловой системы при ее монтировании, вы будете использовать tune2fs, как вы упоминали. Предположим, вы хотите каждые 30 перезагрузок fsck. Делать

# tune2fs -c 30 /dev/sdaX

(Замените блочное устройство для вашей файловой системы.)

Или, если по какой-то причине вы хотите полностью отключить проверку на основе количества подключений,

# tune2fs -c 0 /dev/sdaX

Если вы хотите проверить календарь, вы можете использовать -i, Например, чтобы проверить каждую неделю, сделайте

# tune2fs -i 1w /dev/sdaX

Ты можешь использовать d несколько дней, w в течение нескольких недель и m месяцами. Опять же, чтобы отключить проверку на основе календаря, укажите значение 0 за интервал. Пожалуйста, пожалуйста, пожалуйста, не отключайте все проверки. В какой-то момент вы испортите вашу файловую систему.

В общем, вы можете получить немного более длинные интервалы, если файловая система занесена в журнал, хотя это не замена. Для получения дополнительной информации прочитайте справочные страницы для e2fsck и tune2fs; они где я получил большую часть информации для этого. Надеюсь это поможет!

Измените запланированную перезагрузку, чтобы включить одно из следующих

touch /forcefsck; reboot

или же

shutdown -rF now

Существование /forcefsck скажет ОС сканировать диски (я уверен, что именно так и поступает вторая команда).

Используйте cron, чтобы запланировать это на период, когда сервер имеет наименьшую нагрузку, и отключите другие запланированные проверки (дата / количество подключений), если вы уверены, что он работает правильно.

Другие вопросы по тегам