如何获取所有依赖于根的设备列表,即安装在根文件系统上或从根设备创建的设备(位于物理卷顶部的逻辑卷,即根设备)。
编辑
答案必须是一个脚本(可能是 shell),它将返回所有根依赖设备的列表。我不想使用任何 LVM 特定的包命令(例如 lvdisplay 等)。
2013 年 10 月 23 日
正如@Oli 的回答,
mount | awk '$3 == "/" {printf $1}' | sed s'/.$//'
仅列出设备。但我想知道它的哪个分区实际上是根依赖的。
我尝试使用以下方法获取哪个 LVM 设备映射到物理设备dmsetup deps
我有
ubuntu-swap_1: 1 dependencies : (8, 5)
ubuntu-root: 1 dependencies : (8, 5)
上面给了我映射(可以通过比较(major, minor)
数字获得)但我如何确保 LVM 是根设备?
答案1
df -h
将列出所有设备/挂载。lsof /
将列出根目录下所有打开的文件。lvs
、lvscan
和lvdisplay
用于 LVM 信息。
答案2
为了找出根设备(虚拟或物理),我一直在使用:
mount | awk '$3 == "/" {printf $1}' | sed s'/.$//'
过去,这相当简单。您要么有设备,要么有映射设备。如果它被映射,dmsetup info
可以帮助解析物理设备:
$ ROOTDEV=$(mount | awk '$3 == "/" {printf $1}' | sed s'/.$//')
$ sudo dmsetup info -Co blkdevs_used $ROOTDEV | tail -n+2
sdg,sdf
当然,如果$ROOTDEV
不是映射的设备,一切都会陷入混乱。需要注意的是,dm-mapper 可以映射分区,因此您可能需要递归返回的设备,直到得到sd*
字符串为止。
我不知道这在 LVM 环境中如何工作。我在 JBOD 和 dmraid-1 上测试过它。