Force fsck.ext4 при перезагрузке, но на самом деле "силовой"

18

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

Я пробовал:

touch /forcefsck

Также попытался:

shutdown -rF now

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

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

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

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

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

[email protected]:~# 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 24.11.2010 в 14:27
источник

6 ответов

10

Из справочной страницы e2fsck:

"Note that in general it is not safe to run e2fsck on mounted filesystems. The only exception is if the -n option is specified, and -c, -l, or -L options are not specified. However, even if it is safe to do so, the results printed by e2fsck are not valid if the filesystem is mounted. If e2fsck asks whether or not you should check a filesystem which is mounted, the only correct answer is ''no''. Only experts who really know what they are doing should consider answering this question in any other way."

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

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

e2fsck -cy /dev/sda5

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

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

    
ответ дан Nyamiou The Galeanthrope 24.11.2010 в 21:27
источник
23

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

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

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

FSCKFIX=no

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

FSCKFIX=yes

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

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

    
ответ дан Brian 12.11.2014 в 14:50
12
sudo touch /forcefsck
sudo reboot

У тебя есть опечатка, которую ты трогаешь / forcefcsk. «C» и «s» меняются местами. fsck не подходит для FileSystemChecK.

    
ответ дан Dan Benamy 31.05.2012 в 15:09
3

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

    
ответ дан charlie-tca 24.11.2010 в 19:33
1

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

Tune2fs -c 5 -i 10 / dev / sda1

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

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

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

    
ответ дан hk3jld 01.01.2017 в 00:00
0

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

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

например.

sudo tune2fs -c 1 /dev/sda1

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

    
ответ дан Clock ZHONG 17.12.2016 в 09:21