![查找设备上未被文件系统使用的所有块](https://linux22.com/image/137429/%E6%9F%A5%E6%89%BE%E8%AE%BE%E5%A4%87%E4%B8%8A%E6%9C%AA%E8%A2%AB%E6%96%87%E4%BB%B6%E7%B3%BB%E7%BB%9F%E4%BD%BF%E7%94%A8%E7%9A%84%E6%89%80%E6%9C%89%E5%9D%97.png)
如何列出设备上当前正在使用的所有块不是被文件系统使用?有问题的文件系统是一个 btrfs RAID1,带有两个 LUKS 加密硬盘和一个 Arch Linux。
我尝试过fstrim /path/to/fs
用 记录所有内容blktrace
。这实际上有效,但前提是硬盘驱动器支持 TRIM - 即不是这里的情况。 (我已经设置dmcrypt
允许TRIM)。
这个问题背后的原因是这样的:
两块传统硬盘组成RAID,mdadm
上面是LVM+ext4。现在,这两个硬盘已设置为 LUKS、btrfs RAID1,并将数据写入其中。
不幸的是,在覆盖操作之前并未备份所有内容。硬盘驱动器有不是在打开 LUKS 之前已被随机数据覆盖,因此旧数据存在于当前文件系统中尚未写入任何内容的地方(我已经验证了这一点)。
现在我正在努力尽可能地恢复。我的恢复策略如下:
btrfs 文件系统现在使用的所有内容显然都可以不是是旧数据。所以我想找到设备上当前的所有块不是正在被 btrfs 使用。然后,我想创建一个与这些硬盘驱动器大小相同的高清图像,其中包含所有未使用的块。那将是我的旧数据。
实际上,我真的不需要发出真正的修剪,我只需要知道修剪会做什么。或者,只需找到文件系统当前未使用的所有块,这是我的问题。
有什么办法吗?