我不确定“映射”是否是正确的术语。
短的:
我运行了以下命令:
$ sudo e2fsck -b 32768 /dev/sde1
e2fsck 1.46.3 (27-Jul-2021)
/dev/sde1 was not cleanly unmounted, check forced.
Pass 1: Checking inodes, blocks, and sizes
Error reading block 77071131 (Input/output error) while getting next inode from scan. Ignore error<y>? yes
Force rewrite<y>? yes
我注意到它已经在那里待了一段时间,然后偶然发现有问题的驱动器不再是 /dev/sde,而是已更改为 /dev/sdh。我让该过程运行了一整夜,现在仍在继续,但现在我想知道它是否会因为更改而完成。我应该取消这个过程吗?
导致这种情况的原因:
我注意到我的一个驱动器(ext4,8TB,去壳的 WesternDigital)前一天晚上工作正常,但一天早上却没有安装。夜间运行python3 /opt/snapraid-runner/snapraid-runner.py
花费了相当长的时间,最终出现了错误。尝试安装时,我收到错误...无法读取超级块(udisks-error-quark,0)。我运行了以下命令:
$ sudo fsck /dev/sde1
fsck from util-linux 2.36.1
e2fsck 1.46.3 (27-Jul-2021)
/dev/sde1: recovering journal
/dev/sde1 contains a file system with errors, check forced.
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
Error reading block 87556096 (Input/output error) while reading inode and block bitmaps. Ignore error<y>? yes
Force rewrite<y>? yes
Block bitmap differences: +(87556096--87560223)
Fix<y>? yes
/dev/sde1: ***** FILE SYSTEM WAS MODIFIED *****
/dev/sde1: 4438/244191232 files (0.8% non-contiguous), 1232265894/1953506385 blocks
它仍然无法安装,因此我找到并按照一篇关于修复此问题的文章(https://www.linuxbabe.com/desktop-linux/fix-cant-read-superblock-error)这导致我运行上述命令:$ sudo e2fsck -b 32768 /dev/sde1
答案1
设备映射不仅仅是改变。如果突然出现新的sdh
,则意味着该磁盘被重新检测到(例如,因为它完全停止响应并且内核必须重置 SATA 端口) - 但这也可能意味着使用旧设备节点的程序将不会再取得任何进展。
当发生这种情况时(即如果内核认为磁盘已断开连接),旧映射通常会变为“死”状态,如果不是因为进程fsck
仍将其保持打开状态(这就是新检测到的磁盘变为“sdh”的原因),那么旧映射就会被删除。进程仅在“打开”时引用映射,生成的文件句柄与特定设备相关联,而不是与特定姓名。
检查dmesg
磁盘相关错误。fsck 发出的“写入”命令可能实际上从未完成。(ext4 文件系统的完整 fsck 应该需要几分钟,而不是几天。)此时,尝试就地执行任何文件系统修复可能不是一个好主意,并且可能会使情况变得更糟 - 磁盘已经显示无法保存数据。
至少你应该使用ddrescue
它来克隆它原样到另一个在职的磁盘,然后才尝试修复 ext4 结构。(最好有两个克隆,一个作为备份,以防文件系统修复出错而必须重新启动……)