디렉토리 트리에 마운트된 모든 "실제" 파일 시스템 찾기

디렉토리 트리에 마운트된 모든 "실제" 파일 시스템 찾기

특정 최상위 디렉토리에 대해 어떤 "실제" 파일 시스템이 마운트되어 있고 어떤 장치에서 마운트되었는지 어떻게 알 수 있습니까(UUID 또는 LABEL을 포함할 수 있지만 LVM의 경우 /dev/something을 사용해야 함)?

배경은 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

세 가지 샘플 /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

이 모든 것 때문에 모든 종류의 설치 문제를 해결하는 데 무엇이 더 필요한지 확신할 수 없습니다.

관련 정보