ディレクトリツリーにマウントされているすべての「実際の」ファイルシステムを探す

ディレクトリツリーにマウントされているすべての「実際の」ファイルシステムを探す

特定の最上位ディレクトリにどの「本当の」ファイルシステムがマウントされていて、どのデバイスからマウントされているかをどうやって知ることができますか?

背景は、debootstrapの後に実行されるスクリプトでfstab(5)が自動的に生成されることです。ホストOSはGNU / Linuxです(私がサブルーチンで使用するすべてがGNU / kFreeBSDまたはGNU / Hurdで安全であるとは思わない)。

これまでに見つけたものの中で最も近いようfindmnt -l --realですが、まだバインドマウントが表示されますが、これは私のユースケースに比べて「実際」ではありません。ブロックデバイスがサポートするマウントポイントが必要です。 (ここにはリングマウントを含めることができます。)

答え1

Linuxカーネルの観点からは、バインドマウントと「一般」マウントの間に違いはありません。彼ら概念的には、シンボリックリンクよりもハードリンクに近い。

ただし、たとえば、次のようにして範囲を絞り込むことができます。

findmnt -lv --real --output "FSROOT,SOURCE,TARGET,FSTYPE,OPTIONS" | grep "^/\s"

FSROOTこれは、マウントポイントに接続されているマウントされたファイルシステムのパス以外のパスを持つすべてのマウントをフィルタリングします/

バインドマウントはファイルシステム全体を再マウントします。

mount /dev/sda /a
mount --bind /a /b

検出するのが難しいです。SOURCE比較または列に基づいてリストをさらにフィルタリングし、この方法で重複項目を削除する必要がありますMAJ:MIN

それでもいくつかの極端なケースがあります(たとえば、空白文字で始まるサブディレクトリ/ファイルの正規表現が誤って許可されているバインドマウントとBtrfsサブボリュームマウントがバインドマウントのように見えるため、リストから削除されます)。ただし、これは開始点を提供する必要があります。 。

答え2

これが私がすることです(あなたが尋ねたことを私が理解したら)。

  1. alias lsblk2='lsblk -o size,fstype,model,name,serial,uuid'
  2. lsblk2
  3. まず、Linuxが見るすべてのブロックデバイスを観察します。 FSTYPEを見ると、何がどこにあり、何が欲しいのかがわかります。
  4. インストールしないことをお勧めしますデバイス名たとえば、/dev/sdasdaはディスクが行き来しながら別のディスクになる可能性があるため、uuidでマウントするのが最善です。
  5. view /etc/mtab現在インストールされている項目とview /etc/fstab実行時にインストールされる項目を確認してください。
  6. 表示されているとおりに適切にlsblk2追加または調整してください。/etc/fstab

3つのサンプル/etc/fstab項目:

UUID=800e924a-a869-4152-9503-9d9cfecbd16e              /                       xfs     defaults        0 0
UUID=4f3da85a-71a9-4f6e-bc5f-dfd23a880b08              /boot                   xfs     defaults        0 0
/dev/disk/by-uuid/e0791b9e-b620-4274-9857-78389b10f5a5 /data auto nosuid,nodev,nofail,x-gvfs-show 0 0

mount現在マウントされているすべてのファイルシステムを表示するには、入力してください。

findmntrhel 7.9 で と入力すると、次のような結果が得られます。

TARGET                                SOURCE      FSTYPE       OPTIONS
/                                     /dev/sda3   xfs          rw,relatime,seclabel,attr2,inode64,logbsize=64k,sunit=128,swidth=
├─/sys                                sysfs       sysfs        rw,nosuid,nodev,noexec,relatime,seclabel
│ ├─/sys/kernel/security              securityfs  securityfs   rw,nosuid,nodev,noexec,relatime
│ ├─/sys/fs/cgroup                    tmpfs       tmpfs        ro,nosuid,nodev,noexec,seclabel,mode=755
│ │ ├─/sys/fs/cgroup/systemd          cgroup      cgroup       rw,nosuid,nodev,noexec,relatime,seclabel,xattr,release_agent=/usr
│ │ ├─/sys/fs/cgroup/net_cls,net_prio cgroup      cgroup       rw,nosuid,nodev,noexec,relatime,seclabel,net_prio,net_cls
│ │ ├─/sys/fs/cgroup/cpu,cpuacct      cgroup      cgroup       rw,nosuid,nodev,noexec,relatime,seclabel,cpuacct,cpu
│ │ ├─/sys/fs/cgroup/freezer          cgroup      cgroup       rw,nosuid,nodev,noexec,relatime,seclabel,freezer
│ │ ├─/sys/fs/cgroup/pids             cgroup      cgroup       rw,nosuid,nodev,noexec,relatime,seclabel,pids
│ │ ├─/sys/fs/cgroup/devices          cgroup      cgroup       rw,nosuid,nodev,noexec,relatime,seclabel,devices
│ │ ├─/sys/fs/cgroup/blkio            cgroup      cgroup       rw,nosuid,nodev,noexec,relatime,seclabel,blkio
│ │ ├─/sys/fs/cgroup/perf_event       cgroup      cgroup       rw,nosuid,nodev,noexec,relatime,seclabel,perf_event
│ │ ├─/sys/fs/cgroup/hugetlb          cgroup      cgroup       rw,nosuid,nodev,noexec,relatime,seclabel,hugetlb
│ │ ├─/sys/fs/cgroup/memory           cgroup      cgroup       rw,nosuid,nodev,noexec,relatime,seclabel,memory
│ │ └─/sys/fs/cgroup/cpuset           cgroup      cgroup       rw,nosuid,nodev,noexec,relatime,seclabel,cpuset
│ ├─/sys/fs/pstore                    pstore      pstore       rw,nosuid,nodev,noexec,relatime
│ ├─/sys/firmware/efi/efivars         efivarfs    efivarfs     rw,nosuid,nodev,noexec,relatime
│ ├─/sys/kernel/config                configfs    configfs     rw,relatime
│ ├─/sys/fs/selinux                   selinuxfs   selinuxfs    rw,relatime
│ ├─/sys/kernel/debug                 debugfs     debugfs      rw,relatime
│ └─/sys/fs/fuse/connections          fusectl     fusectl      rw,relatime
├─/proc                               proc        proc         rw,nosuid,nodev,noexec,relatime
│ └─/proc/sys/fs/binfmt_misc          systemd-1   autofs       rw,relatime,fd=35,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,p
│   └─/proc/sys/fs/binfmt_misc        binfmt_misc binfmt_misc  rw,relatime
├─/dev                                devtmpfs    devtmpfs     rw,nosuid,seclabel,size=395484100k,nr_inodes=98871025,mode=755
│ ├─/dev/shm                          tmpfs       tmpfs        rw,nosuid,nodev,seclabel
│ ├─/dev/pts                          devpts      devpts       rw,nosuid,noexec,relatime,seclabel,gid=5,mode=620,ptmxmode=000
│ ├─/dev/hugepages                    hugetlbfs   hugetlbfs    rw,relatime,seclabel
│ └─/dev/mqueue                       mqueue      mqueue       rw,relatime,seclabel
├─/run                                tmpfs       tmpfs        rw,nosuid,nodev,seclabel,mode=755
│ ├─/run/user/3584810                 tmpfs       tmpfs        rw,nosuid,nodev,relatime,seclabel,size=79100268k,mode=700,uid=358
│ │ └─/run/user/3584810/gvfs          gvfsd-fuse  fuse.gvfsd-f rw,nosuid,nodev,relatime,user_id=3584810,group_id=100
│ ├─/run/user/2001                    tmpfs       tmpfs        rw,nosuid,nodev,relatime,seclabel,size=79100268k,mode=700,uid=200
│ └─/run/user/329918                  tmpfs       tmpfs        rw,nosuid,nodev,relatime,seclabel,size=79100268k,mode=700,uid=329
├─/tmp                                tmpfs       tmpfs        rw,seclabel
├─/boot                               /dev/sda2   xfs          rw,relatime,seclabel,attr2,inode64,logbsize=64k,sunit=128,swidth=
│ └─/boot/efi                         /dev/sda1   vfat         rw,relatime,fmask=0077,dmask=0077,codepage=437,iocharset=ascii,sh
├─/data                               /dev/sdb1   xfs          rw,nosuid,nodev,relatime,seclabel,attr2,inode64,logbsize=64k,suni
├─/var/lib/nfs/rpc_pipefs             sunrpc      rpc_pipefs   rw,relatime
├─/bkup                               bkup:/bkup
                                                  nfs4         rw,nosuid,noexec,relatime,vers=4.1,rsize=1048576,wsize=1048576,na
└─/ramdisk                            tmpfs       tmpfs        rw,relatime,seclabel,size=775946240k

これは、すべての種類のインストールの問題を解決するために何が必要かわかりません。

関連情報