在旧笔记本电脑的根设备(HD + SD 卡)上使用 write-around bcache 一年多后,我终于发现我面临着一些严重的文件系统损坏 - 这导致我求助于备份并重新安装一切都两次(!!)——都是由于更新/升级内核后重新启动后,缓存设备上的 bcache 损坏。
解决方法相当“简单”,因为它是读取缓存:当启动过程表明我的设备已损坏超出自动修复能力时,我只需在执行手动 fsck 之前删除缓存设备,重新创建缓存并注册再来一次。 --顺便说一句,永远不要尝试使用损坏的 write-around bcache 来 fsck 据称损坏的文件系统,因为那样的话,您将真正损坏您的数据。
问题:防止这种腐败的可能方法是什么?因此,我使用 archlinux,总是使用最新版本的一切——现在的内核是 4.19.4。
答案1
我找到了一种解决方法,该方法已经在几台机器上进行了多次更新,证明了自己的能力:
正常的系统和内核升级后,在重新启动之前,只需停止 bcache:
echo 1 >/sys/fs/bcache/*/stop;sleep 2;sync;sync;shutdown -r now;logout
下次重新启动时,bcache 将重新启动,不会出现任何损坏。
大多数情况下,bcache 不会将其格式从内核版本更改为内核版本,但事实是:在没有内核更新的情况下重新启动计算机不会损坏 bcache 的缓存设备,而更新内核则会损坏 bcache 的缓存设备。即使这是一个小更新。