Linux 服务器断电-数据完整性和操作系统损坏检查

Linux 服务器断电-数据完整性和操作系统损坏检查

如果发生意外断电(或 VM 主机故障),检查/恢复潜在的 Linux 操作系统损坏的最佳实践步骤是什么?

当然,这“取决于”安装和设置,但我正在寻找针对大多数 Linux 操作系统(Debian、Ubuntu、Mint 等)和文件系统(XFS、ZFS、EXT4、vfat)执行的常见操作/检查。

这并不是为了防止非正常关机 - 而是为了在非正常关机发生时进行处理,并尝试确保最佳恢复情况。

我知道操作系统往往会检测文件系统是否未卸载(就像在正常关机期间一样),因此会在启动时自动执行检查,但这些检查是什么以及如何手动执行它们?

Ege2fsck -f就是这样一种工具,但是对于初学者来说,什么时候可以/应该使用它,什么时候不能用(或者它不起作用)?

例如,在 Windows 中你可以执行以下操作:

  • chkdsk使用旧版或新版repair-volume(在 PowerShell 中)检查 NTFS 文件系统是否损坏
  • 使用以下方法验证操作系统核心系统文件的完整性sfc.exe /scannow

特定于应用程序的验证/恢复步骤(如MySQL databaseLDAP directories等)超出了该问题的范围 - 除非它是非常常见的东西,例如某些操作系统数据库aptsnap数据库。

你做什么工作?

答案1

现代文件系统具有元数据日志记录,这意味着普通的断电不会对文件系统完整性本身造成任何问题:已完成但未提交的事务会被重播,而部分事务则会回滚。

但是,传输中的或缓存的数据丢失或部分写入 - 毕竟,如果应用程序将一些数据处理到操作系统进行异步写入(即:正常写入),但机器在操作系统能够将它们写回到永久存储之前断电,数据将要迷路。

正是由于这个原因,数据库等关键应用程序(除外MyISAM)都实现了自己的日志记录并使用同步语义写入数据 - 使用fsync()等等。

简而言之:计划外关机通常不需要任何文件系统修复(自动日志重放除外)。应用程序检查取决于应用程序本身,大多数数据库不受突然断电的影响 - 除非MyISAM使用需要跑步mysqlcheck

相关内容