首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >fsck不会fsck (无法设置超级块标志)

fsck不会fsck (无法设置超级块标志)
EN

Unix & Linux用户
提问于 2016-12-03 22:57:18
回答 5查看 50.2K关注 0票数 28

在基于SD卡的设备上发生了不干净的关闭之后,我将SD卡取出用于根文件系统的fsck。这导致了以下方面的变化:

代码语言:javascript
复制
e2fsck 1.43.1 (08-Jun-2016)
/dev/sdc2: recovering journal
Superblock needs_recovery flag is clear, but journal has data.
Run journal anyway<y>? no
Clear journal<y>? no
e2fsck: unable to set superblock flags on /dev/sdc2

在这里,我两次都回答了“不”,但是没有一个“是/否”序列不会立即导致相同的结果。

文件系统可以挂载,临时检查也可以;它在设备中也能正常工作,这就是根文件系统(实际上,它不是很好,请参阅注释;tldr一些不可挽回的损坏目录)。

dd将分区(8GB)保存到一个文件中,并对其进行了fsck测试。有趣的是:

代码语言:javascript
复制
e2fsck 1.43.1 (08-Jun-2016)
plush.rootfs: recovering journal
Clearing orphaned inode 18290 (uid=0, gid=0, mode=0100644, size=34096)
Clearing orphaned inode 18270 (uid=0, gid=0, mode=0100644, size=38916)
Clearing orphaned inode 18250 (uid=0, gid=0, mode=0100644, size=1128076)
Clearing orphaned inode 11411 (uid=0, gid=0, mode=0100644, size=293108)
Setting free inodes count to 406127 (was 408580)
Setting free blocks count to 1305622 (was 1347486)
plush.rootfs: clean, 60209/466336 files, 604906/1910528 blocks (check after next mount)

随后的fsck传递干净,图像可以挂载,之后的fsck -f也可以传递。

但是,创建原始块复制映像的卡片上的文件系统仍然存在相同的问题--只是在引导期间发生的systemd-fsck将文件系统记录为“干净”。但随后,适当的关机、取出卡并从另一个框中再次尝试fsck也会出现同样的错误。

每当原始文件安装在另一台计算机上时,syslog就会注意到:

代码语言:javascript
复制
kernel: EXT4-fs (sdc2): 4 orphan inodes deleted
kernel: EXT4-fs (sdc2): recovery complete

既然我把一切都备份好了,我愿意尝试这里的任何事情。我可以简单地忘记这一点,从表面上固定的图像重新燃烧分区,但这似乎不是一个非常令人满意的解决方案,因为它意味着假设fsck在解决一个看起来很小的问题上失败了。

我怀疑这会变成一个关于需要recovery_flag之类的东西的“正式文档请求”问题(或者只是简单的“这意味着什么?”因此,任何类似的建议都会受到赞赏。

EN

回答 5

Unix & Linux用户

发布于 2017-08-18 09:01:21

我只是遇到了同样的问题。在调试了e2fsck维护者的问题后,我们意识到SD卡坏了。它没有错误地接受写,但实际上并没有将数据写到卡片上。SD卡是有效的只读。

这张卡似乎已经进入了某种类型的故障安全模式,在这种模式下,数据仍然可以读取,但什么也不写。

e2fsck消息unable to set superblock flags意味着它试图写入超级块,将日志标记为已处理,这没有出现错误,但是当它再次读取超级块时,它仍然指示需要重放日志。换句话说,写入超级块的更改没有保存在存储介质中。

我使用的卡有这个问题,是三星Evo 16 am的microSD,我提到这是为了防止这些卡的常见问题。

通过使用dd将4096字节从/dev/zero写入到块0的卡上,我能够测试这一点,然后我从卡中读取数据,而不是像我应该的那样获得所有的零,我仍然得到了原始的未修改的ext4超级块。

我现在正在将数据转移到一张新卡上,然后看看我是否能从三星那里得到一个替代产品,三星似乎为SD卡提供了10年保修期。

更新:三星在Evo系列中用32‘t的卡替换了16’t的卡,所以我想我不会抱怨太多!

票数 28
EN

Unix & Linux用户

发布于 2018-07-13 18:30:31

我知道这是个老生常谈,但是,我想我可以提供一些见解。

这似乎是sd卡自然死亡的方式。sd卡可以承受的读/写周期的数量大大低于大多数其他媒体认为的“读/写”。当这已经用尽,卡将进入只读模式,但不会通知你这样做。很多事情都会认为他们是在写卡片,这要归功于操作系统缓存等等,但是没有什么东西能坚持下去。

杀死sd卡的一种很好的方法是将它挂载为交换分区或读写非常密集的东西。你会很惊讶你这么快就能杀了一张卡。我发现在sd卡或usb拇指驱动器上运行knoppix只会持续一两个月,这取决于卡的质量和knoppix的使用强度。(从那以后,我转向了用usb驱动器运行knoppix,该驱动器已经运行了几年)。

票数 15
EN

Unix & Linux用户

发布于 2021-01-29 17:03:42

同样的问题,无法挂载,无法读取超级块,无法设置超级块标志,无法使用超级块备份。

我遇到的问题是在卡适配器上写锁开关;)

票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/327863

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档