Принудительно fsck.ext4 при перезагрузке, но действительно «принудительно»

21

Один из моих серверов Ubuntu 10.04 доставляет мне неприятности. Когда я запускаю, fsck.ext4 -n /dev/sda5он говорит мне, что есть ошибки в подсчете свободных инодов, подсчетах свободных блоков и многом другом.

Я пытался:

touch /forcefsck

Также попробовал:

shutdown -rF now

и все же после перезагрузки я вижу ошибки.

Я также только что проверил на своем нетбуке eeePC, Ubuntu 10.10, и у меня та же проблема!

Как заставить принудительно "принудительно" "принудительно" "серьезно исправить мою файловую систему" fsck файловой системы "/" при перезагрузке?

Пояснение: я запускаю, fsck.ext4 -nпотому что это смонтированная файловая система, чтобы проверить, есть ли ошибки. Это говорит мне, что есть. Я думал, что автоматический fsck каждые 30 монтирует во время процесса загрузки именно для того, чтобы позаботиться об ошибках в корневой файловой системе. Но это не делает это в моем случае. Я мог бы перезагрузиться с LiveCD и исправить ошибки, а затем перезагрузить снова, но это серьезное время простоя для живого сервера. Перезагрузка, auto fsck, затем продолжение загрузки намного более устойчива на работающем сервере, и я считаю, что такое поведение должно быть правильным.

Дополнительная информация: Вот вывод. Похоже, что-то, что исправит autofsck, не так ли?

root@server:~# fsck.ext4 -n /dev/sda5
e2fsck 1.41.11 (14-Mar-2010)
Warning!  /dev/sda5 is mounted.
Warning: skipping journal recovery because doing a read-only filesystem check.
/dev/sda5 contains a file system with errors, check forced.
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
Free blocks count wrong (1849368, counted=1948909).
Fix? no

Free inodes count wrong (545504, counted=552134).
Fix? no


/dev/sda5: ********** WARNING: Filesystem still has errors **********

/dev/sda5: 116752/662256 files (0.2% non-contiguous), 795324/2644692 blocks
UrkoM
источник
Какую версию сервера Ubuntu вы используете?
crncosta
10,04. Я отредактирую свой вопрос.
UrkoM
Я не думаю, что вы на самом деле можете сделать это, на самом деле вам лучше выполнить проверку вручную.
RolandiXor
1
Извините, но мне все еще нужно больше информации. Вы делаете fsck на смонтированных файловых системах? Можете ли вы загрузиться с LiveCD и проверить еще раз (при отключенном / dev / sda5)?
crncosta
Возможно ли, что сломана не файловая система, а жесткий диск? В этом случае можно ожидать, что ext4 не исправляет ошибки так же, как если бы было только несколько плохих секторов.
Стефано Палаццо

Ответы:

10

Со страницы руководства e2fsck:

«Обратите внимание, что в общем случае запускать e2fsck на смонтированных файловых системах небезопасно. Единственное исключение - это, если указана опция -n и не заданы опции -c, -l или -L. Однако даже если это безопасно для этого результаты, напечатанные e2fsck, недействительны, если файловая система смонтирована. Если e2fsck спросит, следует ли проверять смонтированную файловую систему, единственный правильный ответ - «нет». Только эксперты, которые действительно знают, что они должны рассмотреть вопрос об ответе на этот вопрос любым другим способом ".

Так что если вы проверяете смонтированную FS с помощью fsck, даже используя опцию -n, результат может оказаться недействительным. Не проверяйте смонтированные файловые системы. Используйте Live-CD / Live-USB.

Если вы не проверяете файловую систему во время ее монтирования, я не понимаю, зачем вам нужно ее использовать, touch /forcefsckвы можете просто размонтировать ее и исправить. Но если это так, и после исправления у вашей FS все еще есть ошибки, тогда вы можете рассмотреть возможность использования:

e2fsck -cy /dev/sda5

Это устранит проблему, связанную с жестким диском, которая называется «плохие блоки» (это может занять много времени).

Если вы хотите проверить смонтированную файловую систему, я не знаю, как поступить, но я думаю, что вы должны создать еще один вопрос.

Ньямиоу Галеантроп
источник
Вы правы, файловая система смонтирована. И, конечно, мне нужно сделать fsck в размонтированном виде. Но я запускаю fsck -n для проверки во время монтирования, не внося изменений, и он говорит мне, что есть ошибки. И не должен ли fsck при перезагрузке их исправить ???
UrkoM
Я только что заметил, что вы говорите в первом предложении: почему fsck -n недопустим в смонтированной файловой системе? Как я могу проверить, есть ли ошибки в смонтированной файловой системе?
UrkoM
Вы можете проверить справочную страницу e2fsck, которая говорит: «Обратите внимание, что в общем случае запускать e2fsck в смонтированных файловых системах небезопасно. Единственное исключение - это, если указана опция -n, а опции -c, -l или -L не указано. Однако, даже если это безопасно, результаты, напечатанные e2fsck, недействительны, если файловая система смонтирована. Если e2fsck спрашивает, следует ли проверять смонтированную файловую систему, единственный правильный ответ - «» нет ". Только эксперты, которые действительно знают, что они делают, должны рассмотреть вопрос об ответе на этот вопрос любым другим способом".
Nyamiou The Galeanthrope
Я не знаю, как проверить смонтированную файловую систему, может быть, вам следует создать еще один вопрос.
Nyamiou The Galeanthrope
Можете ли вы добавить эти два последних комментария к вашему ответу? Тогда я приму это. Я этого не знал, вот почему ... я думаю, что это потому, что fsck -n не обрабатывает журнал, поэтому состояние файловой системы не соответствует последним изменениям, которые там хранятся.
UrkoM
24

Я знаю, что это действительно старая тема, но недавно мне пришлось решить эту проблему, поэтому я хотел опубликовать, как заставить операционную систему исправлять проблемы, обнаруженные с помощью fsck во время загрузки (для 12.04).

Вам нужно запустить команду sudo touch /forcefsck. Это заставит его выполнить fsck при следующей загрузке. Вы можете увидеть результаты fsck в /var/log/boot.log.

Тем не менее, вы не гарантированы, что fsck исправит все, что найдет. Для этого вам нужно отредактировать файл / etc / default / rcS. В конце этого файла есть строка:

FSCKFIX=no

Это должно быть изменено на следующее:

FSCKFIX=yes

Это будет иметь тот же эффект, что и запуск fsck с параметром -y, который принудительно выполнит все возможные исправления и не потребует взаимодействия с пользователем.

Это позволит вам запустить fsck, как того требовал OP, не прибегая к загрузке с живого диска, что не всегда возможно, особенно если вы работаете в удаленной системе.

Брайан
источник
1
Редактирование этой записи в моем случае Ubuntu EC2 вместе с sudo touch /forcefsckи sudo shutdown -rкоманд успешно решены вопросы файловой системы и предупреждение проверки при входе в систему . Легко и бесперебойно - ура.
c.gutierrez
Тот же вопрос был задан в отношении сбоя сервера, и этот ответ был тем же, который мне помог, в системе Ubuntu 14.04. Просто сделать, sudo touch /forcefsckа затем перезагрузка не сделал; редактирование rcSбыло необходимо.
Теему Лейсти
12
sudo touch /forcefsck
sudo reboot

У вас есть опечатка - вы трогаете / forcefcsk. «С» и «S» поменялись местами. fsck - это сокращение от FileSystemChecK.

Дэн Бенами
источник
Это не будет работать для меня, потому что корневая файловая система монтируется только для чтения из-за ошибок, которые я должен исправить fsck! Проблема с курицей и яйцом, которая может быть решена только с помощью liveCD или с помощью привода на другой машине.
HDave
3

Вы не можете принудительно включить / восстановить fsck, поскольку раздел используется. Попробуйте запустить проверку из другого раздела или live cd.

чарли-TCA
источник
2
Совершенно верно, но автоматический fsck при загрузке должен произойти до того, как раздел будет использован, именно для того, чтобы можно было исправить ошибки в "/". Иначе какой смысл?
UrkoM
3
Я считаю, что проверка происходит перед использованием, однако это скорее консультативная проверка. Вам решать, как исправить ошибки. Простая проверка - при просмотре / etc / fstab. «/» Получает другую проверку, чем другие разделы.
Чарли-тча
Это происходит до того, как рут будет повернут? то есть. НАЧАЛЬНЫЙ RAM диск.
Маккензм
1

Вы можете сделать изменения автоматически следующим образом:

Tune2fs -c 5 -i 10 / dev / sda1

-cмаксимальное количество монтирований перед запуском fsckи -iмаксимальное количество дней перед запуском fsck.

В этом случае будет проводиться каждые 5 раз или каждые 10 дней, в зависимости от того, что наступит раньше.

У меня есть два компьютера, один с Linux SuSE 13.2 и другой с Linux Mint 18.0, и на обоих он отлично работает.

hk3jld
источник
Что такое формы и комментарии в автоматической форме следующим образом: Tune2fs -c 5 -i 10 / dev / sda1 Где: -c - максимальное количество монтирований перед запуском fsck Где: -i - максимальное количество дней перед запуском fsck В этом случае будет проводиться каждые 5 раз или каждые 10 дней, в зависимости от того, что наступит раньше. У меня есть два компьютера, один с Linux SuSE 13.2 и другой с Linux MInt 18.0, и оба работают отлично.
hk3jld
Что такое формы и комментарии в автоматической форме следующим образом: Tune2fs -c 5 -i 10 / dev / sda1 Где: -c - максимальное количество монтирований перед запуском fsck Где: -i - максимальное количество дней перед запуском fsck В этом случае будет проводиться каждые 5 раз или каждые 10 дней, в зависимости от того, что наступит раньше. У меня есть два компьютера, один с Linux SuSE 13.2 и другой с Linux MInt 18.0, и оба работают отлично. Я не знаю английского, но я использую переводчик, я надеюсь, что обучение в порядке
hk3jld
1
Это работает на Ubuntu тоже?
Джордж Удосен
0

touch /forcefsckОдно не гарантировало, что моя система заработала fsckпри следующей загрузке. Мне также нужно было запустить:

sudo tune2fs -c 1 /dev/<my partition>

например

sudo tune2fs -c 1 /dev/sda1

Более подробное объяснение я нашел здесь: Как заставить fsck проверять файловую систему после перезагрузки

Часы ZHONG
источник