对关键磁盘数据分区进行 fsck 安全吗?

对关键磁盘数据分区进行 fsck 安全吗?

我有一个基于 x86 的机器,运行 FreeBSD 10.1。我已经将它与 Red hat Linux 和其他操作系统进行了双引导。现在我正在将 FreeBSD (10.1) 上的 UFS 分区“A”迁移到 Linux 上基于 ext2 的分区。我使用分区“B”作为临时存储。

我正在遵循以下程序。

  1. 在 FreeBSD 中:我将“B”格式化为 ext2,并使用 rsync 将数据从“A”移动到“B”。重新启动盒子。
  2. Box 是随 Linux 一起出现的。我现在在 Linux 中将“A”格式化为 ext2,将 B 安装为 ext2,并使用 rsync 将数据从“B”移动到“A”

问题:Linux 中的“B”安装多次失败并建议运行 fsck。当我fsck在非交互模式下运行时,它会失败并建议手动运行。我无法手动运行“fsck”,因为盒子位于远程。其次我担心是否fsck会导致数据丢失。

查询:

  1. 为什么 linux 要求我运行 fschk?我做错了什么?
  2. fsck在分区上运行有多安全?如果文件在操作中被删除,我的盒子将无法干净地出现。
  3. 有什么方法可以记录fsck我可以用于调试的所有操作

在FreeBSD上完成的操作:

#format raw partition as ext2 
mkfs.ext2  /dev/mfid0s1f

#mount newly formated partition as backup
mkdir -p /backup
mount /dev/mfid0s1f /backup 

#move data for UFS partition mounted as 'data' to ext2 partition 
rsync -a /data/*  /backup 

#reboot the box 
reboot

在Linux中完成的操作(通过rc.local):

case 1: I try to mount 'backup' without fsck

mkdir -p /backup
mount /dev/sda8  /backup 
mount fail with suggestion to run fsck. 

case 2: I add non-interective fsck

mkdir -p /backup
e2fsck -p /dev/sda8 
fail with : /dev/sda8: UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY

答案1

为什么操作系统要求运行fsck

在过去的某个时刻,文件系统没有被干净地卸载。系统需要您运行fsck来清除不一致的地方。

我做错了什么?我使用 rsync 来移动数据。

从概念上讲,我认为你没有做任何错误,除了你应该运行fsck(见上文)。如果能在这里看到你的命令就好了rsync

运行 fsck 有多安全?如果文件被删除,我的盒子将无法干净地出现

文件系统处于不一致状态。这可能只是文件系统没有标记为干净,但其他方面都很好。在另一个极端,整个文件系统可能会损坏,理论上您可能会丢失所有内容。大多数情况下,fsck只会清除已删除但尚未从文件系统中删除的文件。

有没有办法记录在 fsck 下完成的所有操作?

您有多种选择。一种是在其内部使用该命令试运行模式(参见man fsckman e2fsck):

fsck -n /dev/mfid0p7

我强烈建议您不要使用自动恢复标志,-p直到您对它将进行的修复感到满意为止。

答案2

a) 为什么操作系统要求运行 fsck。我做错了什么?

fsck 代表“文件系统一致性检查”。

在大多数系统上,如果检测到某些条件,fsck 就会在引导时运行。通常,这些条件是:

  • 文件系统被标记为“脏”——其写入状态与计划写入的数据不一致。
  • 文件系统已安装一定次数而未经过检查。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~

b) 运行 fsck 安全吗?如果文件被删除,我的机器将无法正常启动。

好吧,这取决于,如果在提示删除错误的 inode 或块时输入 yes,您将丢失数据。这就是为什么使用该-p选项可能并不理想。

不要在已安装的文件系统上运行 fsck!如果您在当前已挂载的文件系统上运行 fsck,您将(最好的情况)收到一条错误消息,并且(最坏的情况)会损坏文件系统数据。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~

c) 有没有办法记录在 fsck 下完成的所有操作?

对于fsck启动时的检查,您可以检查/var/log/boot.logMaybe your OS also has a /var/log/fscknot every Linux fancy has it.

相关内容