Linux에서 마운트된 파일 시스템의 완전하고 정확한 목록을 얻는 방법은 무엇입니까?

Linux에서 마운트된 파일 시스템의 완전하고 정확한 목록을 얻는 방법은 무엇입니까?

나는 보통 mount어떤 파일 시스템이 마운트되어 있는지 확인하는 데 이것을 사용합니다. mount와 사이에 어떤 연관성이 있다는 것도 알고 있지만 /etc/mtab자세한 내용은 잘 모르겠습니다. 읽고 나서/proc/가 마운트되었는지 확인하는 방법나는 더욱 혼란스러워졌다.

내 질문은: 마운트된 파일 시스템의 가장 정확한 목록을 어떻게 얻을 수 있습니까? 사용 mount, 읽기 /etc/mtab또는 콘텐츠 만 사용해야 합니까 /proc/mounts? 가장 신뢰할 수 있는 결과는 무엇입니까?

답변1

마운트된 파일 시스템의 최종 목록은 에 있습니다 /proc/mounts.

시스템에 어떤 형태로든 컨테이너가 있는 경우 /proc/mounts현재 컨테이너의 파일 시스템만 나열됩니다. 예를 들어,chroot, /proc/mounts마운트 지점이 chroot 내부에 있는 파일 시스템만 나열합니다. (chroot를 탈출하는 방법이 있다는 점에 유의하세요.)

마운트된 파일 시스템 목록도 있습니다 /etc/mtab. 이 목록은 mount및 명령에 의해 유지됩니다 umount. 이는 이러한 명령을 사용하지 않으면(드물게) 작업(설치 또는 제거)이 기록되지 않음을 의미합니다. 실제로 chroot에서 /etc/mtab시스템 상태와 매우 다른 파일을 자주 찾을 수 있습니다. 또한 chroot 내에서 수행된 마운트는 chroot에 반영되지만 /etc/mtabmain에는 반영되지 않습니다 /etc/mtab. /etc/mtab읽기 전용 파일 시스템 에서 수행된 작업도 여기에 기록되지 않습니다.

/etc/mtab때때로 먼저 또는 추가로 참조하려는 이유 는 마운트 명령줄에 대한 액세스 권한이 있기 때문에 정보가 더 이해하기 쉬운 방식으로 표시될 수 있기 때문입니다. 예를 들어 요청된 마운트 옵션( 목록 및 커널 /proc/mounts도 표시)이 표시됩니다. 기본값), 바인드 마운트는 ./proc/mountsmount/etc/mtab

답변2

버전 2.18 기준(2010년 7월) util-linux현재 마운트된 파일 시스템 목록을 표시할 수 있는 도구가 포함되어 있습니다.

findmnt

를 사용하여 기본 트리 보기에서 목록 보기로 전환하고, 를 사용하여 -l출력 열을 -o정의하고 lsblk, 를 사용하여 파일 시스템 유형에 따라 결과를 필터링하는 -t등의 작업을 수행할 수 있습니다.

findmnt -lo 소스, 대상, fstype, 레이블, 옵션, -t ext4 사용
SOURCE    TARGET      FSTYPE LABEL OPTIONS                           USED
/dev/sda1 /           ext4   ARCH  rw,noatime,discard,data=ordered  17.6G
/dev/sdb2 /media/DATA ext4   DATA  rw,noatime,discard,data=ordered    44M

~처럼버전 2.27JSON패스 -J또는 --json스위치 출력 도 지원됩니다 .

findmnt -Jo 소스, 대상, 태그, uuid -t ext4
{
   "filesystems": [
      {
         "source": "/dev/nvme0n1p5",
         "target": "/",
         "label": "ARCH",
         "uuid": "f21a53194-b02a-4e92-ad96-fdf9b8bc1db9",
         "children": [
            {
               "source": "/dev/nvme0n1p6",
               "target": "/run/media/data",
               "label": "DATA",
               "uuid": "321e288a-e67c-4b68-8d0b-89720210921f"
            }
         ]
      }
   ]
}

자세한 내용은 해당 man페이지를 읽고 findmnt --help사용 가능한 열 목록을 확인하세요.

답변3

어쩌면 이 질문에 대한 답이 나온 지 5년이 지났기 때문에 상황이 달라졌을 수도 있습니다. 이로 cat /proc/mounts인해 당신이 신경 쓰지 않는 많은 정보가 생성됩니다. 오늘 IMHO, 저는 이것이 궁극적인 해결책이라는 것을 알았습니다.

df -h --output=source,target

매뉴얼 페이지를 읽을 때 수행할 수 있는 다양한 옵션이 있지만 이것이 바로 사용자가 수행하는 작업입니다. 예를 들어, 결과를 추가로 정리하려면 다음을 사용하여 "tmpfs" 파일 유형을 제외할 수 있습니다.

df -hx tmpfs --output=source,target

df파일 수준이 아닌 파일 시스템 수준에 적용됩니다.

위 명령에는 네트워크 설치도 포함됩니다.

자세한 내용을 보려면 다음 명령을 사용하십시오.

df -hT

노트인터넷 연결이 느린 경우 몇 분 정도 걸릴 수 있습니다!

설치된 네트워크 연결이 없거나 신경쓰지 않는 경우(그리고 루트 액세스 권한이 있는 경우) 더욱 좋습니다.

sudo lsblk -f

답변4

어떤 이유로 설치된 소스에 더 이상 액세스할 수 없는 경우(제 경우에는 도메인 비밀번호가 만료됨) 마운트 지점 디렉터리가 비어 있고 (적어도 저에게는) 설치가 더 이상 /proc/mount.

나는 이전 자격 증명을 사용하여 내 도메인 계정에 자주(몇 초마다) 액세스하려고 시도하여 계정을 자주 잠그는 일부가 있는 것으로 의심되므로 그러한 설치를 필사적으로 검색하고 있습니다. 그래서 저는 이 문제를 처음에 발견했습니다. 그러나 이것은 /proc/mounts나에게 해결책이 아닙니다.

다음과 같은 명령을 사용하여 Ubuntu 서버에서 일부 설치를 수행했을 수 있다는 것을 알고 있지만 mount_point_dir일반 마운트 지점이 설치되지 않은 것 같기 때문에 무엇을 사용할 수 있는지 잘 모르겠습니다.

$ mount.cifs <remotetarget> <mount_point_dir>

마침내 설치 인증 문제가 있다는 확인을 syslog에서 발견했습니다 /var/log/syslog. 이 로그에는 다음 명령문이 포함된 행이 많이 있습니다.

CIFS VFS: Free previous auth_key.response
Status code returned 0xc0000234 STATUS_ACCOUNT_LOCKED_OUT

이를 통해 내 의심이 확인되었고 /proc/fs/cifs폴더 아래의 통계 및 디버그 데이터를 보고 추가 확인을 얻을 수 있었습니다.

추가 정보여기.

실제로 대상에 대한 정보를 본 적은 없지만 mount_point_dir설치 소스만 보면 문제를 해결하는 데 충분했습니다. 서버를 다시 시작하라는 메시지가 표시되고 그 후 설치가 사라지고 계정 잠금 문제가 사라졌기 때문입니다.

관련 정보