it-swarm.dev

폴더가있는 실제 장치는 어떻게 찾습니까?

구체적으로 Sudo mkdir /work, 실제로 내 하드 드라이브에 있고 다른 드라이브에 매핑되지 않았는지 확인하고 싶습니다.

이 폴더가 실제로 어디에 있는지 확인하려면 어떻게합니까?

120
ripper234

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 (/dev/mapper/orthanc-usr)의 논리적 볼륨 orthanc이 (가) 장치 /dev/sda3에 있음을 나타냅니다. 볼륨 그룹은 여러 물리 볼륨에 걸쳐있을 수 있으므로 여러 장치가 나열되어있을 수 있습니다.

다른 유형의 논리 블록 장치는 /dev/md2와 같은 md (Multiple Devices, 그리고 생각했던 메타 디스크라고 불렀습니다) 장치입니다. 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 장치에 있음을 알 수 있습니다.

기본 블록 장치를 결정하기위한 고유 한 방법이있는 블록 장치를 중첩 할 수있는 다른 방법 (퓨즈, 루프백 파일 시스템)이 있으며 여러 계층을 중첩하여 처리해야합니다. 모든 경우에 따라 처리해야합니다.

154
camh

스크립트의 경우 다음을 사용할 수 있습니다.

$ df -P <pathname> | awk 'END{print $1}'

POSIX와 호환됩니다.

5
Tom Hale

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의 일부입니다.

2
arielf