Когда fsck опасен?

37

Недавно я видел, как корневая файловая система компьютера в удаленном центре обработки данных перемонтировалась только для чтения в результате проблем с согласованностью.

При перезагрузке эта ошибка была показана:

UNEXPECTED INCONSISTENCY: RUN fsck MANUALLY (i.e., without -a or -p options)

После запуска fsck, как было предложено, и принятия исправлений вручную с помощью Y, ошибки были исправлены, и система теперь в порядке.

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

Мой вопрос: почему fsck по умолчанию запрашивает ручное вмешательство? Как и когда коррекция, выполняемая такой программой, будет небезопасной? В каких случаях системный администратор может захотеть оставить предлагаемое исправление на некоторое время (для выполнения некоторых других операций) или отменить его полностью?

scristalli
источник
15
Если бы разработчики были на 100% уверены, что ошибка может быть исправлена ​​автоматически, то в первую очередь это не будет ошибкой.
user253751

Ответы:

42

fsckопределенно наносит больше вреда, чем пользы, если базовое оборудование каким-то образом повреждено; плохой процессор, плохая оперативная память, умирающий жесткий диск, контроллер диска вышел из строя ... в таких случаях больше коррупции неизбежно.

Если вы сомневаетесь, хорошей идеей будет просто сделать снимок поврежденного диска с помощью dd_rescueкакого-либо другого инструмента, а затем посмотреть, сможете ли вы успешно исправить этот образ. Таким образом, у вас все еще есть оригинальные настройки.

Янне Пиккарайнен
источник
4
Я много работал с неисправным оборудованием, и я согласен с этим. Последнее, что я хочу сделать, это fsck, если есть подозрение на плохое оборудование любого рода. Я также видел событие с низким энергопотреблением и последующее восстановление, которое было сильно задержано автоматическим fsck.
Йорф
Чтобы привести конкретный пример: я работал на машине с контроллером диска, который «случайным образом» (примерно 1 раз в 10 ^ 5) превратил бы чтение или запись в блок XXXXXXYY на любом устройстве в запись в блок 000000YY на первое устройство. То есть он часто посылал структурированные неправильные и неструктурированные неправильные данные в загрузочный сектор и различные критические структуры файловой системы загрузочного диска. Запуск fsck в такой ситуации (миллионы операций чтения) может исключить любую вероятность восстановления данных.
Эрик Тауэрс
2
1 в 10 ^ 5 - это много ... это 10 байтов за Мб.
Нельсон
1
@ Нельсон: Это как бы ... Единица, в которой есть "передача одного блока", а не "байты". Таким образом, десять неудачных записей на миллион блоков (и блоки значительно больше байтов).
Эрик Тауэрс
21

Вы видели один пример, где fsckработал, но я видел более чем достаточно поврежденных файловых систем, где он не работал вообще. Если он будет работать полностью автоматически, у вас не будет шансов сделать что-то вродеdd дампа диска или чего-то подобного, что во многих случаях было бы отличной идеей, прежде чем пытаться восстановить.

Это никогда, никогда идея хорошо , чтобы попробовать что - то подобное , что автоматический вообще.

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

Свен
источник
7
На самом деле, что не очень хорошая идея, так это говорить « никогда, никогда », когда это неправда. Случай использования, где это хорошая идея: основные разделы сервера могут быть воссозданы с нуля довольно быстро, в случае возникновения проблем. На самом деле важные данные доступны через удаленную файловую систему с соответствующей избыточностью для этих данных. Я бы предпочел воспользоваться шансом fsck -p /и fsck -p /varт. Д., Работать нормально и запустить сервер без ручного вмешательства, и рискнуть малым ненулевым процентом вероятности крупной катастрофы для тех разделов, которые я могу просто воссоздать при необходимости ,
TOOGAM
1
Если система может быть легко переустановлена, я просто сделаю это ...
Свен
1
Это займет больше времени. Варианты: A) Риск, делающий это автоматически. Б) Пусть кто-нибудь скажет fsckприхорашиться, и тогда все будет нормально. Занимает около 2 минут, если что. Простои пока это не произойдет. C) Попросите кого-нибудь переустановить операционную систему. Занимает 30+ минут. Вы выбираете вариант C? Возможно, ключевое отличие у нас в том, что я fsckработал больше времени, чем вы цитируете в своем ответе. Моим главным пунктом было не проектирование системы (эта дешевая система не использует удаленную консоль), а просто то, что выражение « никогда, никогда » было слишком сильным, чтобы быть точным
TOOGAM
Давайте просто согласимся не соглашаться.
Свен
0

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

Ext3, Ext4, ZFS, btrfs, xfs и все современные FS на 100% согласованы после сбоя или перезагрузки системы.

Не журнализируемые FS, такие как ext2 или vfat, являются большим NOGO для системных rootfs.

Теперь, если ваша система требует fsck во время загрузки, вы должны спросить себя: что было причиной этого в первую очередь?

Вы должны изучить журналы ядра, чтобы узнать, когда и что произошло. Вы должны также вернуться назад во времени в журналах, чтобы найти с тех пор, когда ошибка все-таки началась. Вы должны проверить свои диски с Smartctl. И т.д. ... Если вам нужен fsck на журнализированном fs, то практически наверняка произойдет сбой вашего оборудования, если предположить, что fs не был поврежден администратором (с инструментами уровня блока, такими как dd) или ошибкой.

Поэтому глупо использовать fsck, чтобы «исправить» проблему, не исследуя и не устраняя причину (путем замены / обновления неисправного оборудования / прошивки / программного обеспечения).

Делать fsck, завершать загрузку и быть счастливым наивно, если не сказать больше. То, что «у меня работа с fsck больше, чем вы цитируете», заставляет меня задуматься, что вы имеете в виду под «работой fsck». Возможно, fsck вернул ваш fs в согласованное состояние, потеряв при этом некоторые файлы и данные ... Вы сравнивали с резервной копией? Многие люди теряют файлы или получают повреждение данных, не замечая ...

Франсуа Шойрер
источник