findmnt 는 file system 과 mount 정보를 보여주는 명령어로 리눅스 아재력 테스트에서 알게 된 명령어입니다.

기존에는 mount 정보를 보려면 mount -l 을 사용했는데 findmnt 를 사용해보니 필요한 정보만 뽑아서 보거나 json 출력이 지원되고 가독성이 좋은등 장점이 많아서 findmnt 에 익숙해지려고 합니다.

mount findmnt 의 결과를 비교해 보면  findmnt 가 훨씬 가독성이 좋은 것을 알수 있습니다.

mount -l


findmnt


마운트 정보

findmnt/etc/fstab, /etc/mtab  와 /proc/self/mountinfo 파일을 찾아서 마운트 정보를 출력합니다. 만약 디바이스나 경로가 지정되면 해당 정보만 출력하지만 옵션없이 findmnt 를 실행하면 모든 마운트 정보를 출력합니다.

$ findmnt 

TARGET                                SOURCE      FSTYPE      OPTIONS
/                                     /dev/xvda2  xfs         rw,relatime,seclabel,attr2,inode64,noquota
├─/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/lib/systemd/systemd-cgroups
│ │ ├─/sys/fs/cgroup/blkio            cgroup      cgroup      rw,nosuid,nodev,noexec,relatime,seclabel,blkio
│ │ ├─/sys/fs/cgroup/cpu,cpuacct      cgroup      cgroup      rw,nosuid,nodev,noexec,relatime,seclabel,cpu,cpuacct
│ │ ├─/sys/fs/cgroup/pids             cgroup      cgroup      rw,nosuid,nodev,noexec,relatime,seclabel,pids
│ │ ├─/sys/fs/cgroup/perf_event       cgroup      cgroup      rw,nosuid,nodev,noexec,relatime,seclabel,perf_event
│ │ ├─/sys/fs/cgroup/net_cls,net_prio cgroup      cgroup      rw,nosuid,nodev,noexec,relatime,seclabel,net_cls,net_prio
│ │ ├─/sys/fs/cgroup/cpuset           cgroup      cgroup      rw,nosuid,nodev,noexec,relatime,seclabel,cpuset
│ │ ├─/sys/fs/cgroup/rdma             cgroup      cgroup      rw,nosuid,nodev,noexec,relatime,seclabel,rdma
│ │ ├─/sys/fs/cgroup/devices          cgroup      cgroup      rw,nosuid,nodev,noexec,relatime,seclabel,devices
│ │ ├─/sys/fs/cgroup/freezer          cgroup      cgroup      rw,nosuid,nodev,noexec,relatime,seclabel,freezer
│ │ ├─/sys/fs/cgroup/memory           cgroup      cgroup      rw,nosuid,nodev,noexec,relatime,seclabel,memory
│ │ └─/sys/fs/cgroup/hugetlb          cgroup      cgroup      rw,nosuid,nodev,noexec,relatime,seclabel,hugetlb
│ ├─/sys/fs/pstore                    pstore      pstore      rw,nosuid,nodev,noexec,relatime,seclabel
│ ├─/sys/fs/bpf                       bpf         bpf         rw,nosuid,nodev,noexec,relatime,mode=700
│ ├─/sys/fs/selinux                   selinuxfs   selinuxfs   rw,relatime
│ ├─/sys/kernel/debug                 debugfs     debugfs     rw,relatime,seclabel
│ └─/sys/kernel/config                configfs    configfs    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,pipe_ino=18553
│   └─/proc/sys/fs/binfmt_misc        binfmt_misc binfmt_misc rw,relatime
├─/dev                                devtmpfs    devtmpfs    rw,nosuid,seclabel,size=391616k,nr_inodes=97904,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/mqueue                       mqueue      mqueue      rw,relatime,seclabel
│ └─/dev/hugepages                    hugetlbfs   hugetlbfs   rw,relatime,seclabel,pagesize=2M
└─/run                                tmpfs       tmpfs       rw,nosuid,nodev,seclabel,mode=755
  └─/run/user/1000                    tmpfs       tmpfs       rw,nosuid,nodev,relatime,seclabel,size=83852k,mode=700,uid=1000,gid=1000
BASH


특정 device

특정 device 의 마운트 정보를 보려면 디바이스를 옵션으로 전달해 줍니다.

$ findmnt /dev/xvda2 

TARGET SOURCE     FSTYPE OPTIONS
/      /dev/xvda2 xfs    rw,relatime,seclabel,attr2,inode64,noquota
BASH


path 지정

특정 path의 마운트 정보를 알려면 path 를 옵션으로 전달하며 아래는 root file system 의 마운트 정보를 표시합니다.

$ findmnt /

TARGET SOURCE     FSTYPE OPTIONS
/      /dev/xvda2 xfs    rw,relatime,seclabel,attr2,inode64,noquota
BASH

file system 지정

-t FS_TYPE 옵션을 사용하면 파일 시스템의 유형을 지정할 수 있습니다. 다음은 ext4 파일 시스템을 사용하는 마운트 정보를 출력합니다.

$ findmnt -t xfs   

TARGET SOURCE     FSTYPE OPTIONS
/      /dev/xvda2 xfs    rw,relatime,seclabel,attr2,inode64,noquota

BASH


여러 개의 파일시스템을 지정할 경우 , 를 구분자로 주면 됩니다. ( , 뒤에 공백이 있으면 안 됩니다.)

$ findmnt -t xfs,tmpfs

TARGET             SOURCE     FSTYPE OPTIONS
/                  /dev/xvda2 xfs    rw,relatime,seclabel,attr2,inode64,noquota
├─/sys/fs/cgroup   tmpfs      tmpfs  ro,nosuid,nodev,noexec,seclabel,mode=755
├─/dev/shm         tmpfs      tmpfs  rw,nosuid,nodev,seclabel
└─/run             tmpfs      tmpfs  rw,nosuid,nodev,seclabel,mode=755
  └─/run/user/1000 tmpfs      tmpfs  rw,nosuid,nodev,relatime,seclabel,size=83852k,mode=700,uid=1000,gid=1000
BASH

용량 보기

-D 옵션을 사용하면 df 명령어처럼 파일 시스템의 용량과 사용 현황을 표시합니다.

$ findmnt -t xfs   

SOURCE     FSTYPE      SIZE  USED  AVAIL USE% TARGET
devtmpfs   devtmpfs  382.4M     0 382.4M   0% /dev
tmpfs      tmpfs     409.5M     0 409.5M   0% /dev/shm
tmpfs      tmpfs     409.5M 46.5M   363M  11% /run
tmpfs      tmpfs     409.5M     0 409.5M   0% /sys/fs/cgroup
bpf        bpf            0     0      0    - /sys/fs/bpf
/dev/xvda2 xfs          10G    3G     7G  30% /
selinuxfs  selinuxfs      0     0      0    - /sys/fs/selinux
tmpfs      tmpfs      81.9M     0  81.9M   0% /run/user/1000
BASH


출력

json 으로 출력

-J 옵션을 사용하면 json 형식으로 출력해 줍니다.

$ findmnt -J /

{
   "filesystems": [
      {"target": "/", "source": "/dev/xvda2", "fstype": "xfs", "options": "rw,relatime,seclabel,attr2,inode64,noquota"}
   ]
}
BASH


json 형식으므로 jq 같은 커맨드 json 유틸리티를 활용해서 처리할 수 있습니다. 아래는 json 의 filesystems 프로퍼티를 꺼내서 json object 로 가공해서 표시합니다.

$ findmnt -J / | jq '.filesystems[] | { path: .target, s: .source, fs: .fstype }' 

{
  "path": "/",
  "s": "/dev/xvda2",
  "fs": "xfs"
}
BASH


출력 항목 제어

-o 옵션뒤에 출력할 컬럼을 지정할 수 있습니다. 컬럼명은 정해져 있으며 아래 예제처럼 컬럼을 지정해서 원하는 데이타만 출력되게 할 수 있습니다.

$ findmnt  -o SOURCE,FSTYPE,SIZE,USED,AVAIL,USE%,TARGET -t tmpfs,xfs


SOURCE     FSTYPE   SIZE  USED  AVAIL USE% TARGET
/dev/xvda2 xfs       10G    3G     7G  30% /
tmpfs      tmpfs  409.5M     0 409.5M   0% ├─/sys/fs/cgroup
tmpfs      tmpfs  409.5M     0 409.5M   0% ├─/dev/shm
tmpfs      tmpfs  409.5M 46.5M   363M  11% └─/run
tmpfs      tmpfs   81.9M     0  81.9M   0%   └─/run/user/1000
BASH


같이 보기

Ref