Важность fsck при загрузке с файловыми системами Journalled?

10

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

Нужен ли fsck после нечистого выключения и почему?


источник

Ответы:

4

Я отвечаю на это в общем контексте "журналируемых файловых систем".

Я думаю , что если вы сделали несколько «нечистыми остановов» (от потянув за кабель питания или что - то ) , рано или поздно вы получите в состояние файловой системы , что потребует fsckили морального эквивалента FSCK, xfs_repair. ext4Fileystsm на моем ноутбуке , по большей части просто переигрывает журнал при каждой перезагрузке, включены чистые остановы, но каждый раз в то время, он делает полный на fsck.

Но спросите себя, чего добивается «воспроизведение журнала». Воспроизведение журнала просто гарантирует, что дисковые блоки остальной части файловой системы соответствуют порядку, который требуют записи журнала. Воспроизведение журнала составляет небольшую fsckчасть или полную часть fsck.

Я думаю, что происходит некоторая словесная ловкость рук: воспроизведение журнала делает часть того, что fsckделает традиционное , и xfs_repairявляется точно такой же программой, как e2fs.fsck(или любая другая файловая система fsck). Люди XFS просто верили, или их опыт привел их к тому, что они не запускались xfs_repairпри каждой загрузке, а просто воспроизводили журнал.

Брюс Эдигер
источник
3
За исключением ошибки в журналируемом коде или диске, никакое количество нечистых отключений не может оставить диск в состоянии, требующем fsck. ext [34] по-прежнему сохраняет педантичный автоматический fsck после стольких монтирований частично как перенос с ext2 в сочетании с, ну ... педантичным отношением «на всякий случай». По крайней мере, в последних версиях Ubuntu это было отключено по умолчанию.
псуси
По моему опыту, автомат fsckне «педантичный». Я преобразовал ext3 LVMраздел в ext4и начал получать ошибки «ext4_mb_generate_buddy» из-за, как я понимаю, ошибки в ext4коде, которая приводила к несоответствию в копиях на диске и в памяти растрового изображения на преобразованных разделах «LVM». Насколько я могу судить fsck, коррупции не было. Решением было либо отключить UNINIT_BGопцию, либо переместить данные и повторно инициализировать раздел как ext4; Я взял последний курс. Но я все еще думаю, что несколько минут ожидания fsckне стоит потерять данные!
StarNamer
1
В этом ответе очень много недостающей информации, а значит, и ответов, и ответов еще.
Symcbean
4

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

Первое, что следует отметить, это то, что XFS, reiser и большинство конфигураций ext реализуют только журналирование метаданных, что позволяет избежать fsck. Журнал не всегда воспроизводится при запуске - его можно удалить, если он неполный.

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

Таким образом, «несогласованное состояние» и проблемы, устраняемые с помощью fsck, представляют собой несоответствие между метаданными и самими файлами. Чтобы избежать этого, ОС записывает предложенные изменения метаданных в журнал, затем записывает фактические данные на диск, а затем применяет изменения метаданных, которые реплицируются в журнале, на диск. Единственный улов этого заключается в том, что контроллер диска будет буферизовать и потенциально переупорядочивать запросы. Чтобы избежать этого, большинство регистрирующих файловые системы реализуют барьеры: они разделяют каждую операцию и ждут, пока диск подтвердит, что он завершил операцию. Но многие современные диски фактически подтверждают завершение записи до фиксации данных. Следовательно, вещи могут стать грязными.

Нужен ли fsck после нечистого выключения и почему

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

symcbean
источник
Вы смешиваете порядок с барьерами. Диски не сообщают о завершении записи до того, как они попадают на диск, если вы не включите кэш записи, который по умолчанию отключен на дисках уровня пользователя, поэтому для них fs просто нужно дождаться завершения одной записи, прежде чем выдавать следующую. , Для оборудования с кэшированием записи используются барьеры для предотвращения переупорядочения и принудительного сброса диском кэша записи, что предотвращает повреждение файловой системы.
псуси
1
псуси - что ты курил? «Диски не сообщают о том, что записи завершены раньше ...» - да, они делают. «включить кэш записи, который по умолчанию отключен» - не на любом диске, который я когда-либо настраивал. «барьеры используются для предотвращения переупорядочения» - но вы сказали, что я «совмещал порядок с барьерами»
symcbean
Нет, они не Если вы не включите кэш записи диска ( hdparm -W), то диск не выполнит запросы записи, пока не окажется на носителе. Как вы думаете, почему этот вариант существует? Барьеры препятствуют переупорядочению при выдаче нескольких запросов. Без барьеров fs просто не выдает больше запросов до тех пор, пока не завершатся предыдущие, тем самым поддерживая порядок без барьеров ... при условии, что кэш записи на диск не включен. Цель барьеров - позволить вам включить кэш записи, не повреждая fs при сбое.
psusi
Ой, я немного перепутал там и забыл о sync. Дай мне попробовать снова. Процедура записи на диск без барьеров заключается в записи в журнал sync, что приводит к сбросу всех кэшей записи и записи реальных данных. Это гарантирует, что журнал всегда можно будет использовать для восстановления файловой системы после сбоя, но синхронизация замедляет работу и наполовину нарушает назначение кэша записи. Таким образом, барьеры были добавлены в качестве лучшей замены sync, и при надлежащей поддержке диска они могут безопасно восстановить большую часть производительности, которую отнимает синхронизация.
psusi
2

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

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

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

Журналируемая файловая система может быть повреждена по другим причинам - аппаратный сбой, ошибки драйвера, ошибки администратора и т. Д. - поэтому инструменты fsck, безусловно, необходимы. Нет никаких причин вызывать их исключительно из-за нечистого отключения.

Эрик Сандин
источник
как насчет того, чтобы вызывать их каждые n перезагрузки? полезно? или просто дождаться сообщения о проблеме и запустить fsck?
simpleuser