Réponses:
La df(1)
commande vous indiquera le périphérique sur lequel se trouve un fichier ou un répertoire:
df /work
Le premier champ contient le périphérique sur lequel se trouve le fichier ou le répertoire.
par exemple
$ df /root
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 1043289 194300 795977 20% /
Si le périphérique est un volume logique, vous devez déterminer le ou les périphériques de bloc sur lesquels le volume logique est activé. Pour cela, vous pouvez utiliser la lvs(8)
commande:
# 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)
La dernière colonne vous indique que le volume logique usr
du groupe de volumes orthanc
( /dev/mapper/orthanc-usr
) se trouve sur le périphérique /dev/sda3
. Dans la mesure où un groupe de volumes peut s'étendre sur plusieurs volumes physiques, il est possible que plusieurs périphériques soient répertoriés.
Un autre type de périphérique de bloc logique est un périphérique md (plusieurs périphériques, que l'on appelait autrefois méta-disque, par exemple) /dev/md2
. Pour examiner les composants d’un périphérique md, vous pouvez utiliser mdadm --detail
ou consulter/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
Vous pouvez voir que cela se /dev/md2
trouve sur les appareils /dev/sda3
et /dev/sdb3
.
Il existe d'autres méthodes d'imbrication de périphériques (systèmes de fichiers en boucle, en boucle) qui auront leurs propres méthodes pour déterminer le périphérique de bloc sous-jacent, et vous pouvez même imbriquer plusieurs calques pour vous obliger à descendre. Vous devrez prendre chaque cas comme il vient.
df
c'était très arrangeant.
lvdisplay
ou lvs
sera votre ami.
Pour un script, vous pouvez utiliser:
$ df -P <pathname> | awk 'END{print $1}'
Ceci est compatible POSIX.
Dans les distributions modernes d'Ubuntu, il existe une couche supplémentaire (mappeur de périphérique) entre votre fichier / répertoire et le périphérique. /dev/mapper
contient des liens symboliques pointant vers les dispositifs spéciaux réels. Par exemple, essayez le répertoire actuel:
$ 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
Donc, pour obtenir le chemin complet du périphérique par programmation, vous pouvez utiliser:
$ realpath $(df . | grep '^/' | cut -d' ' -f1)
Quel est mon cas imprime:
/dev/dm-1
realpath
fait partie de GNU coreutils.
df
affichera toujours le mapper
chemin.
findmnt -T /work