获取所有 root 相关设备的列表

获取所有 root 相关设备的列表

如何获取所有依赖于根的设备列表,即安装在根文件系统上或从根设备创建的设备(位于物理卷顶部的逻辑卷,即根设备)。

编辑

答案必须是一个脚本(可能是 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 /将列出根目录下所有打开的文件。
  • lvslvscanlvdisplay用于 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 上测试过它。

相关内容