구체적으로는 다음과 같습니다. sudo mkdir /work
실제로 내 하드 드라이브에 있고 다른 드라이브에 매핑되지 않았는지 확인하고 싶었습니다.
이 폴더의 물리적 위치를 어떻게 확인할 수 있나요?
답변1
이 df(1)
명령은 파일이나 디렉터리가 어느 장치에 있는지 알려줍니다.
df /work
첫 번째 필드에는 파일이나 디렉터리가 있는 장치가 포함됩니다.
예를 들어
$ df /root
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 1043289 194300 795977 20% /
장치가 논리 볼륨인 경우 논리 볼륨이 어느 블록 장치에 있는지 확인해야 합니다. 이렇게 하려면 다음 lvs(8)
명령을 사용할 수 있습니다.
# df /usr
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/mapper/orthanc-usr
8256952 4578000 3259524 59% /usr
# lvs -o +devices /dev/mapper/orthanc-usr
LV VG Attr LSize Origin Snap% Move Log Copy% Convert Devices
usr orthanc -wi-ao 8.00g /dev/sda3(0)
usr
마지막 열은 장치에 있는 orthanc
볼륨 그룹()의 논리 볼륨을 알려줍니다 . 볼륨 그룹은 여러 물리적 볼륨에 걸쳐 있을 수 있으므로 여러 장치가 나열될 수 있습니다./dev/mapper/orthanc-usr
/dev/sda3
또 다른 유형의 논리 블록 장치는 md(이전에는 메타디스크라고 알려진 다중 장치) 장치입니다. 예를 들어 /dev/md2
md 장치의 구성 요소를 보려면 다음을 사용하거나 mdadm --detail
볼 수 있습니다./proc/mdstat
# df /srv
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/md2 956626436 199340344 757286092 21% /srv
# mdadm --detail /dev/md2
...details elided...
Number Major Minor RaidDevice State
0 8 3 0 active sync /dev/sda3
1 8 19 1 active sync /dev/sdb3
및 장치에서 볼 수 있습니다 /dev/md2
./dev/sda3
/dev/sdb3
기본 블록 장치를 결정하는 고유한 방법이 있는 블록 장치를 중첩하는 다른 방법(회로, 루프백 파일 시스템)이 있으며 여러 수준을 중첩할 수도 있으므로 아래로 작업해야 합니다. 모든 경우를 받아들여야 합니다.
답변2
스크립트의 경우 다음을 사용할 수 있습니다.
$ df -P <pathname> | awk 'END{print $1}'
이는 POSIX와 호환됩니다.
답변3
최신 Ubuntu 배포판에는 파일/디렉터리와 장치 사이에 추가 계층(장치 매퍼)이 있습니다. /dev/mapper
실제 특수 장치에 대한 심볼릭 링크가 포함되어 있습니다. 예를 들어 현재 디렉터리를 사용해 보세요.
$ df . | grep '^/' | cut -d' ' -f1
/dev/mapper/kubuntu--vg-root
$ ls -l /dev/mapper/kubuntu--vg-root
lrwxrwxrwx 1 root root 7 Nov 22 18:02 /dev/mapper/kubuntu--vg-root -> ../dm-1
따라서 프로그래밍 방식으로 장치의 전체 경로를 얻으려면 다음을 사용할 수 있습니다.
$ realpath $(df . | grep '^/' | cut -d' ' -f1)
이것은 내 사례 인쇄입니다.
/dev/dm-1
realpath
GNU coreutils의 일부입니다.
답변4
$ findmnt -no source -T / # mountpoint
/dev/nvme0n1p2
$ findmnt -no source -T /usr # directory under mountpoint
/dev/nvme0n1p2
$ COLUMNS=70 man findmnt | sed -E '/^ {7}-[noT]/,/^$/!d;s/^ {7}//'
-n, --noheadings
Do not print a header line.
-o, --output list
Define output columns. See the --help output to get a
list of the currently supported columns. The TARGET
column contains tree formatting if the --list or --raw
options are not specified.
-T, --target path
Define the mount target. If path is not a mountpoint file
or directory, then findmnt checks the path elements in
reverse order to get the mountpoint (this feature is
supported only when searching in kernel files and
unsupported for --fstab). It’s recommended to use the
option --mountpoint when checks of path elements are
unwanted and path is a strictly specified mountpoint.