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 usr
w 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 --detail
lub 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/md2
to na urządzeniach /dev/sda3
i /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.
df
był tak przychylnie nastawiony.
lvdisplay
lub lvs
bę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/mapper
zawiera 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.
df
nadal wyświetla mapper
ścieżkę.
findmnt -T /work