
Каковы наилучшие практические шаги по проверке и восстановлению ОС Linux на предмет потенциального повреждения в случае неожиданного отключения электроэнергии (или отказа хоста виртуальной машины)?
Конечно, это «зависит» от установки и настройки, но я ищу общие действия/проверки для большинства ОС Linux (Debian, Ubuntu, Mint и других) и файловых систем (XFS, ZFS, EXT4, vfat).
Речь идет не о предотвращении непредвиденных отключений, а о том, как реагировать на них, когда они происходят, и пытаться обеспечить наилучший вариант восстановления.
Я знаю, что операционные системы, как правило, определяют, когда файловая система не была размонтирована (как это происходит при корректном завершении работы), и поэтому автоматически выполняют проверки при загрузке, но что это за проверки и как их выполнять вручную?
Eg e2fsck -f
— один из таких инструментов, но для непосвященных: когда его можно/нужно использовать, а когда нет (или он не будет работать)?
Например, в Windows вы можете сделать следующее:
- Проверьте файловую систему NTFS на наличие повреждений, используя старый
chkdsk
или современный эквивалентrepair-volume
(в PowerShell) - Проверьте целостность основных системных файлов ОС с помощью
sfc.exe /scannow
Действия по проверке/восстановлению, специфичные для приложений, такие как MySQL database
или LDAP directories
и т. п., выходят за рамки этого вопроса, если только это не очень распространенная вещь, например, какая-нибудь база данных ОС apt
или snap
базы данных.
Что вы делаете?
решение1
Современные файловые системы ведут журнал метаданных, а это значит, что обычное отключение электроэнергии не должно представлять никакой проблемы для целостности самой файловой системы: завершенные, но неподтвержденные транзакции воспроизводятся, а частичные транзакции откатываются.
Однако данные, находящиеся в процессе передачи или кэшированные,можетбыть утеряны или частично записаны - в конце концов, если приложение обрабатывает некоторые данные в ОС для асинхронной записи (т. е. обычной записи), но машина отключается до того, как ОС успевает записать их обратно в постоянное хранилище, данныеволяПотерянный.
По этой причине критически важные приложения, такие как базы данных (за исключением MyISAM
), реализуют собственное журналирование и записывают данные с использованием синхронной семантики fsync()
и тому подобного.
Короче говоря: незапланированное отключение обычно не требует никакого восстановления файловой системы (кроме автоматического воспроизведения журнала). Проверка приложений зависит от самого приложения, при этом большинство баз данных не подвержены влиянию внезапного отключения питания — если только не используется MyISAM
, которыйтребуетбегmysqlcheck