ブロックデバイス(またはその一部)が何らかの方法でマウントされているかどうかを簡単に確認する方法


10

ブロックデバイス(たとえばsdb)またはその一部がマウントされているかどうか(およびその一部)を判別する(root権限なしで)最も簡単な方法は何ですか?

LVMがそのパーティションの1つを使用している可能性がある/proc/mountsため、sdbのチェックだけでは不十分sdbです。チェックすることはできますが、チェックするために名前に解決する/sys/block/sdb/sdb*/holders/必要があるdm-xエントリが表示され/dev/mapperます/proc/mounts。可能ですが、より簡単な解決策がある場合...(ルート権限は必要ありません)


2
気になるのですが、デバイスがマウントされているかどうかを確認するだけではありませんか?* / holdersおよび* / * / holdersは、デバイスが/ proc / mountsテーブルに存在しない場合にマウントされていることを通知するのに十分です。さらに、なぜそれを解決する必要があるのですか?つまり、cryptsetupはそれをホルダーに追加します。これは、/ dev / mapperがマウントされていない場合や、暗号化が破損している場合でも、ドライブをいじる必要がないことを示します。ドライバーを介して内部的にマウントされているだけです。また、ドライブがパーティションなしで「保持」される可能性があるため、/ sys / block / sdb / holdersも確認することを忘れないでください。
ラーリー2017

回答:


12

これは基本的に、コーナーケースのバッグ全体をチェックすることです。

  • ドライブは/ proc / mountsに表示できます
  • ドライブはスワップとして使用できます(/ proc / swapsを使用)
  • ドライブをアクティブなLVM pvの一部にすることができます(pvdisplayを使用)
  • ドライブはdm-mapper RAIDグループの一部にすることができます(/ proc / mdstatを使用)
  • アプリケーションはドライブに直接アクセスできます(たとえば、Oracleはファイルシステムではなくドライブまたはパーティションへの直接書き込みをサポートしています)(フューザーを使用)
  • ドライブは仮想マシンから直接アクセスできます(フューザーを使用)
  • :ドライブは、ループバック・デバイス(例えば、で参照することができる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

どうしてそうするか?通常、それは以前にひどく間違っていた状況を含みます。

また、名前空間機能がメインライン(unshareを参照)になっているため、マウントされているものとマウントされていないものについて、プロセスごとにビューが異なる可能性があることにも注意してください。ここで物事は少し赤い丸薬を取得し始めます。


1

デバイスをマウントする方法はもっとたくさんあり、それらすべてを組み合わせることができるので、多くの場合、あなた次第です。

つまり、lvmで使用されるもの: pvdisplay

したがって、nfs、cifs、raid、loop、cryptなども含める必要があります。/proc/mountsあなたがすでに述べたように、良い出発点は常にです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.