私は最近、論理ファイルシステムと物理ファイルシステムという2つの異なる種類のファイルシステムをマウントできることに気づきました。
私が理解したように、物理ファイルシステムはマシンに物理的に接続されたディスク上のハードウェアです。
論理ファイルシステムはリモートのどこかに存在し、ネットワーク経由でマウントされます。
1日前にサーバーにSSH経由でコマンドを実行し、mount | wc -l
17という応答を受けました。今日私は同じコマンドを実行し、70を得ました。mount
物理的および論理的にマウントされたファイルシステムの両方がリストされているようです。
マウントされた物理ファイルシステムの数だけを計算する方法はありますか?短いコマンドを使用する方が良いですか?
答え1
「論理」ファイルシステムは必ずしもネットワークにマウントする必要はありません。たとえば、70個のファイルシステムがマウントされているシステムでは、ほとんどはネットワークファイルシステムではなくカーネル機能に対応するファイルシステムです。論理ファイルシステムにはsysfs
、、proc
すべてのcgroupファイルシステム、、tmpfs
などが含まれ、devtmpfs
すべて「ローカル」ファイルシステムです。
「非物理」ファイルシステムは、使用/proc/filesystems
時にカーネルで認識されるため、nodev
次のように「物理」ファイルシステムのみを一覧表示できますfindmnt
。
findmnt -t $(grep -v nodev /proc/filesystems | paste -sd, - | tr -d \\t)
ファイルシステムの数を計算するには、ヘッダーを削除して出力を次に供給しますwc -l
。
findmnt -n -t $(grep -v nodev /proc/filesystems | paste -sd, - | tr -d \\t) | wc -l
イメージファイル、その他の非デバイスファイル、またはネットワーク上のリモートブロックデバイスからこれらのファイルシステムタイプをマウントできますが、このアプローチはほとんどのシステムで良い結果を提供します。
別のアプローチは、ディスクデバイス自体から始めることですlsblk
。 ;を使用すると、lsblk -f
物理マウントされたファイルシステムに到達するのに必要なレベルの数に関係なく、物理デバイスツリーが出力されます。組み合わせることができますそれ物理ファイルシステムに関する上記の情報を使用して、システムのブロックデバイスと一致するファイルシステムのみを一覧表示します。
lsblk -f | grep -F -f <(grep -v nodev /proc/filesystems | tr -d \\t)
希望の結果を計算します。
lsblk -f | grep -F -f <(grep -v nodev /proc/filesystems | tr -d \\t) | wc -l