从文件名获取挂载点、设备、LV、VG、PV 名称

从文件名获取挂载点、设备、LV、VG、PV 名称

给定一个相对路径名,我如何获取它:

  • 挂载点
  • 设备
  • LVM LV名称
  • LVM VG 名称
  • LVM PV 名称

答案1

概括

给定一个relative $pathname,以下命令将设置以下变量:

$absolute $mount $dev $lv $vg $pvs

绝对路径名

absolute=$(readlink -f "$pathname")

挂载点和设备

read -r dev mount <<< $(df --portability "$pathname" | awk 'NR==2{print $1 " " $6}')

注意:btrfs 和 zfs 文件系统可能跨越多个设备,但此处仅列出一种。

LV 和 VG 名称

read -r lv vg <<< $(sudo lvs -o lv_name,vg_name --noheadings  "$dev")

无需担心名称中可能存在空格,因为男人lvm(8)说:

VG 和 LV 名称的有效字符为:a-z A-Z 0-9 + _ . -

光伏器件

pvs=$(sudo vgs -o pv_name --noheadings "$vg")

可能有多个 PV 托管您的 VG。

要处理设备名称中特殊字符的边缘情况,请查看解析pvs --reportformat json

奖励:循环设备支持文件

backing=$(losetup -lnO BACK-FILE "$dev")

相关内容