我的硬盘有一些问题 - 也许它坏了,也许 SATA 电缆坏了,我正在调查它。有一点很奇怪。
我可以使用以下方法从此设备读取原始数据:
# cat /dev/gcw/root > /dev/null
但是当我尝试使用以下命令安装此设备时:
# mount -o ro /dev/gcw/root /mnt/lvroot
我收到错误。德梅格 说:
[ 3561.281369] ata6.01: failed command: WRITE MULTIPLE EXT
[ 3561.281384] ata6.01: cmd 39/00:08:27:92:1c/00:00:39:00:00/f0 tag 0 pio 4096 out
[ 3561.281384] res 51/84:01:2e:92:1c/84:00:39:00:00/f0 Emask 0x10 (ATA bus error)
[ 3561.281393] ata6.01: status: { DRDY ERR }
我的问题是:当我尝试以只读方式安装此设备时,为什么操作系统尝试写入此设备(命令“WRITE MULTIPLE EXT”用于写入)?
答案1
对于某些文件系统,只读挂载会触发写入操作。我知道的一种情况是日志文件系统,如果您安装了一个没有完全卸载的文件系统,就会触发日志的重播,即使是只读安装。
对于 Linux 上的 ext3 或 ext4,传递noload
挂载选项:
mount -o ro,noload /dev/gcw/root /mnt/lvroot
不幸的是,这会导致日志根本无法重播,甚至在内存中也无法重播,这可能会使文件系统显示不一致的数据。
我认为可以创建一个虚拟块设备,以便写入到内存层,但原始内容由磁盘块设备提供。看GNU/Linux:覆盖块设备/可堆叠块设备举一个接近您的场景的例子。