![从文件名获取挂载点、设备、LV、VG、PV 名称](https://linux22.com/image/118117/%E4%BB%8E%E6%96%87%E4%BB%B6%E5%90%8D%E8%8E%B7%E5%8F%96%E6%8C%82%E8%BD%BD%E7%82%B9%E3%80%81%E8%AE%BE%E5%A4%87%E3%80%81LV%E3%80%81VG%E3%80%81PV%20%E5%90%8D%E7%A7%B0.png)
给定一个相对路径名,我如何获取它:
- 挂载点
- 设备
- 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")