web-dev-qa-db-ja.com

ファイル名からマウントポイント、デバイス、LV、VG、PV名を取得します

相対パス名を指定すると、次のように取得できます。

  • マウントポイント
  • 端末
  • LVMLV名
  • LVMVG名
  • LVMPV名
4
Tom Hale

概要

相対的な$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ファイルシステムは複数のデバイスにまたがることがありますが、ここでは1つだけをリストします。

LVおよびVG名

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

man lvm(8) のように、名前に含まれる可能性のあるホイットスペースについて心配する必要はありません。

VGおよびLV名の有効な文字は次のとおりです。a-z A-Z 0-9 + _ . -

PVデバイス

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

VGをホストしているPVが複数ある場合があります。

デバイス名の特殊文字のエッジケースに対処するには、pvs --reportformat jsonの解析を調べてください。

ボーナス:ループデバイスバッキングファイル

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