Odpowiedzi:
df(1)Komenda powie urządzenie, że plik lub katalog jest na:
df /work
Pierwsze pole zawiera urządzenie, na którym znajduje się plik lub katalog.
na przykład
$ df /root
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 1043289 194300 795977 20% /
Jeśli urządzenie jest woluminem logicznym, musisz określić, które urządzenia blokowe są włączone. W tym celu możesz użyć lvs(8)polecenia:
# 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)
Ostatnia kolumna mówi, że wolumin logiczny usrw grupie woluminów orthanc( /dev/mapper/orthanc-usr) znajduje się na urządzeniu /dev/sda3. Ponieważ grupa woluminów może obejmować wiele woluminów fizycznych, może się okazać, że na liście znajduje się wiele urządzeń.
Innym rodzajem logicznego urządzenia blokowego jest urządzenie md (Multiple Devices, a kiedyś tak zwane meta-disk), takie jak /dev/md2. Aby spojrzeć na komponenty urządzenia MD, możesz użyć mdadm --detaillub zajrzeć/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
Widać /dev/md2to na urządzeniach /dev/sda3i /dev/sdb3.
Istnieją inne metody zagnieżdżania urządzeń blokowych (bezpieczniki, systemy plików z pętlą zwrotną), które będą miały własne metody określania leżących u ich podstaw urządzeń blokowych, a nawet zagnieżdżanie wielu warstw, więc trzeba będzie zejść na dół. Musisz wziąć każdą skrzynkę, jak tylko się pojawi.
dfbył tak przychylnie nastawiony.
lvdisplaylub lvsbędzie twoim przyjacielem.
Do skryptu możesz użyć:
$ df -P <pathname> | awk 'END{print $1}'
Jest to zgodne z POSIX.
W nowoczesnych dystrybucjach Ubuntu istnieje dodatkowa warstwa (mapowanie urządzeń) między twoim plikiem / katalogiem a urządzeniem. /dev/mapperzawiera dowiązania symboliczne wskazujące rzeczywiste urządzenia specjalne. Na przykład próbowanie w bieżącym katalogu:
$ 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
Aby programowo uzyskać pełną ścieżkę urządzenia, możesz użyć:
$ realpath $(df . | grep '^/' | cut -d' ' -f1)
Jakie są moje wydruki:
/dev/dm-1
realpath jest częścią jądra GNU.
dfnadal wyświetla mapperścieżkę.
findmnt -T /work