Antworten:
Der df(1)
Befehl teilt dem Gerät mit, dass sich eine Datei oder ein Verzeichnis befindet:
df /work
Das erste Feld enthält das Gerät, auf dem sich die Datei oder das Verzeichnis befindet.
z.B
$ df /root
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 1043289 194300 795977 20% /
Wenn es sich bei dem Gerät um ein logisches Volume handelt, müssen Sie ermitteln, auf welchen Blockgeräten sich das logische Volume befindet. Hierzu können Sie den lvs(8)
Befehl verwenden:
# 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)
Die letzte Spalte zeigt an, dass sich das logische Volume usr
in der Volume-Gruppe orthanc
( /dev/mapper/orthanc-usr
) auf dem Gerät befindet /dev/sda3
. Da eine Datenträgergruppe mehrere physische Datenträger umfassen kann, werden möglicherweise mehrere Geräte aufgelistet.
Ein anderer Typ eines logischen Blockgeräts ist ein md-Gerät (Multiple Devices), das meiner Meinung nach als Meta-Disk bezeichnet wird, wie z /dev/md2
. Zum Anzeigen der Komponenten eines md-Geräts können Sie verwenden mdadm --detail
oder nachsehen/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
Sie können sehen, dass /dev/md2
auf den Geräten /dev/sda3
und /dev/sdb3
.
Es gibt andere Methoden, mit denen Blockgeräte verschachtelt werden können (Sicherung, Loopback-Dateisysteme), die ihre eigenen Methoden zum Ermitteln des zugrunde liegenden Blockgeräts haben. Sie können sogar mehrere Ebenen verschachteln, sodass Sie sich nach unten arbeiten müssen. Du musst jeden Fall so nehmen, wie er kommt.
df
war so zuvorkommend.
lvdisplay
oder lvs
wird dein Freund sein.
Für ein Skript können Sie Folgendes verwenden:
$ df -P <pathname> | awk 'END{print $1}'
Dies ist POSIX-kompatibel.
In modernen Distributionen von Ubuntu gibt es eine zusätzliche Ebene (Device Mapper) zwischen Ihrer Datei / Ihrem Verzeichnis und dem Gerät. /dev/mapper
enthält symbolische Links, die auf die eigentlichen Spezialgeräte verweisen. Versuchen Sie beispielsweise das aktuelle Verzeichnis:
$ 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
Um den vollständigen Pfad des Geräts programmgesteuert abzurufen, können Sie Folgendes verwenden:
$ realpath $(df . | grep '^/' | cut -d' ' -f1)
Welches ist mein Fall druckt:
/dev/dm-1
realpath
ist ein Teil von GNU coreutils.
df
Der mapper
Pfad wird weiterhin angezeigt .
findmnt -T /work