Plus précisément: j'ai fait Sudo mkdir /work
, et je voudrais vérifier qu'il se trouve bien sur mon disque dur et non mappé sur un autre lecteur.
Comment vérifier l'emplacement physique de ce dossier?
La commande df(1)
vous indiquera sur l'appareil qu'un fichier ou répertoire est sur:
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 devrez déterminer sur quel (s) périphérique (s) de bloc le volume logique est activé. Pour cela, vous pouvez utiliser la commande 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)
La dernière colonne vous indique que le volume logique usr
dans le groupe de volumes orthanc
(/dev/mapper/orthanc-usr
) Se trouve sur le périphérique /dev/sda3
. Étant donné qu'un groupe de volumes peut s'étendre sur plusieurs volumes physiques, vous pouvez constater que plusieurs périphériques sont répertoriés.
Un autre type de périphérique de bloc logique est un périphérique md (Multiple Devices, et autrefois appelé méta-disque, je pense), tel que /dev/md2
. Pour regarder les composants d'un périphérique md, vous pouvez utiliser mdadm --detail
Ou regarder dans /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 /dev/md2
Est sur les appareils /dev/sda3
Et /dev/sdb3
.
Il existe d'autres méthodes pour bloquer les périphériques (Fuse, systèmes de fichiers de bouclage) qui auront leurs propres méthodes pour déterminer le périphérique sous-jacent, et vous pouvez même imbriquer plusieurs couches pour que vous deviez descendre. Vous devrez prendre chaque cas comme il vient.
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ériques) entre votre fichier/répertoire et le périphérique. /dev/mapper
contient des liens symboliques pointant vers les périphériques spéciaux réels. Par exemple, essayer le répertoire courant:
$ 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 de l'appareil par programme, vous pouvez utiliser:
$ realpath $(df . | grep '^/' | cut -d' ' -f1)
Quel est mon cas imprime:
/dev/dm-1
realpath
fait partie de GNU coreutils.