从不同的计算机上获取 bcache 磁盘上的文件

从不同的计算机上获取 bcache 磁盘上的文件

我有一个在 bcache 之上带有 btrfs 文件系统的磁盘,该磁盘在我不再拥有的旧安装中使用(无意中被破坏)。当我插入驱动器时,/dev/bcache0 不会显示,并且不允许我回显/dev/{dev}/sys/fs/bcache/register强制它。我已加载 bcache 模块,当我尝试 rmmod 它时,我收到一条“模块正在使用”消息。lsblk -f表示驱动器上存在 bcache,但我无法将其映射到下面的 btrfs 文件系统并恢复我的数据。

我认为这并不重要,但这一切都在 dmcrypt 加密卷之上,我拥有该卷的密钥文件,并且可以毫无问题地访问该卷。

System information Distro: Arch Kernel: 4.12.5-1-ARCH x86_64 bcache Version: 1.0.8-1

答案1

将 bcache 分区挂载到循环设备上sudo losetup -f /dev/[DEVICE] -o 8192bcache 数据可能只有 1KiB 或更小,但偏移量需要与磁盘的扇区大小对齐,在本例中为 8KiB。这非常有效,我已经连夜将文件传输到稳定的存储池。

如果其他人发现自己遇到了这个问题,请使用sudo smartctl -a /dev/[DEVICE](需要 smartmontools 包)获取磁盘的扇区大小,并使用该大小的增量作为我之前提到的 losetup 命令的偏移量,直到lsblk -f运行时循环设备显示存在文件系统。

答案2

根据答案扩展 PSpacer 的答案这里

D) 在没有 bcache 的情况下恢复数据:

如果 bcache 在内核中不可用,则支持设备上的文件系统在 8KiB 偏移处仍然可用。因此,要么通过使用 --offset 8K 创建的支持设备的loopdev,要么通过 --data-offset 定义的任何值(当您最初使用make-bcache.

例如: losetup -o 8192 /dev/loop0 /dev/your_bcache_backing_dev

https://www.kernel.org/doc/Documentation/bcache.txt

创建环回设备

通过创建环回设备sudo losetup -o 8192 /dev/loop0 /dev/[DEVICE]

安装设备

然后你可以通过安装它sudo mount /dev/loop0 -o loop /mnt/[LOCATION]

之后,您可以转到/mnt/[LOCATION]/并浏览您的分区。

相关内容