ブロックデバイス(たとえばsdb
)またはその一部がマウントされているかどうか(およびその一部)を判別する(ルート権限なしで)最も簡単な方法は何ですか?.
LVMがsdb
またはそのパーティションの1つを使用している可能性があるため、sdbの/proc/mounts
を確認するだけでは不十分です。 /sys/block/sdb/sdb*/holders/
を確認できますが、dm-x
エントリを取得しますが、/dev/mapper
を確認するには、/proc/mounts
の名前に解決する必要があります。可能ですが、より簡単な解決策がある場合...(ルート権限は必要ありません)
これは基本的に、コーナーケースのバッグ全体をチェックすることです。
mount /dev/sda -o offset=1M /foo
)(losetup -aを使用)これらは私がそれについて考えるために1分半与えられた例にすぎません。他にもダースはたくさんいると思います。
私が思うこの最後の例は最も興味深いものであり、それについて知っている人はほとんどいません。パーティションを使用せずにファイルシステムをマウントできます。開始オフセットを指定するだけで、Linuxはループバックデバイスを透過的に作成します。上記の例では、次の結果が得られます。
# cat /proc/mounts
...
/dev/loop0 /foo ext4 relatime,data=ordered 0 0
# losetup -a
/dev/loop0 [0005]:2048 (/dev/sda), offset 1048576
どうしてそうするか?通常、これは以前にひどく間違っていた状況に関係しています。
また、名前空間機能がメインライン( nshare を参照)になっているため、マウントされているものとマウントされていないものについて、プロセスごとにビューが異なる可能性があることにも注意してください。ここで物事は少し赤い丸薬を取得し始めます。
デバイスをマウントする方法はもっとたくさんあり、それらすべてを組み合わせることができるので、多くの場合、あなた次第です。
つまり、lvmで使用されるもの:pvdisplay
したがって、nfs、cifs、raid、loop、cryptなども含める必要があります。良い出発点は常に/proc/mounts
、すでに述べたように。