是否可以以某种方式检查 LVM 的 dm-X(即 dm-0、dm-1、dm-2、dm-3 等)节点的内容?
我这样问是因为我迫切需要从我的 Linux 系统中恢复大量数据,并且我想我可以在这些节点中找到它。
(如果我的数据不在剩余的可见 dm-X 节点中,我想我将不得不雇用一名取证 IT 技术人员以某种方式扫描所有硬盘驱动器。)
答案1
如果你需要知道各个/dev/dm-*
节点对应什么,dmsetup ls -o blkdevname
会告诉你的。
如果您需要知道每个节点涉及哪些物理设备dm-X
,dmsetup ls --tree -o blkdevname
应该会有帮助。
如果您的dmsetup
年龄足够大,不支持该选项,您可以省略它,然后您将看到表格-o blkdevname
中的设备编号。(major:minor)
只需运行ls -l /dev/dm-*
,您就会在表单中看到设备编号而不是文件大小major, minor
。
识别每个映射的类型dmsetup table
可能会有所帮助。
每个设备节点的“内容”dm-X
只是通过映射查看的底层设备的内容。您可以file -s /dev/dm-X
尝试识别其中文件系统的类型(可能还有 LABEL 和 UUID)。如果设备上有文件系统,您可以简单地安装它,然后照常访问它 - 假设一切正常。但既然你提到了这个词恢复,我怀疑你有类似磁盘故障的问题,使情况变得更加复杂。
因此,这里有一些提示,以防您在恢复情况下需要它们:
如果发生故障的系统仍在运行,请dmsetup table
尽可能在重新启动系统之前尝试获取信息。如果系统已重新启动,则/etc/lvm/backup
包含人类可读形式的当前 LVM 配置的备份,并/etc/lvm/archive
包含先前每次配置更改之前的多个配置备份。
linear
是最简单的映射,它将一段磁盘块映射到其他磁盘设备上的相同大小的段。 LVM 使用linear
映射,除非您在创建 LV 时明确指定了更高级的内容(例如条带或镜像)。
例如,如果您运行dmsetup table /dev/dm-3
并且它告诉您:
0 293601280 linear 8:1 2048
293601280 209715200 linear 8:1 817891328
这意味着该设备dm-3
由两个线性映射组成。首先(从 的块 #0 开始dm-3
)是一段 293601280 个块,线性映射到/dev/sda1
从块 #2048 开始的设备 8:1(块设备,主设备号 8,次设备 1 = )。第二个映射从 的块#293601280 继续dm-3
,持续 209715200 个块,并/dev/sda1
从块#817891328 开始线性映射到 。这就是已扩展一次的基本 LVM 逻辑卷在查看时的样子dmsetup table
。
要将其中包含的文件系统复制dm-3
到图像文件或其他设备,您可以运行两个dd
命令:(或者ddrescue
如果您的磁盘出现故障)
dd if=/dev/sda1 bs=512 skip=2048 count=293601280 >/rescue/image
dd if=/dev/sda1 bs=512 skip=817891328 count=209715200 >>/rescue/image
在正常情况下,这应该完全等同于简单地做
dd if=/dev/dm-3 bs=512 >/rescue/image
首先。