web-dev-qa-db-fra.com

Comment trouver sur quel périphérique physique se trouve un dossier?

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?

120
ripper234

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.

154
camh

Pour un script, vous pouvez utiliser:

$ df -P <pathname> | awk 'END{print $1}'

Ceci est compatible POSIX.

5
Tom Hale

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.

2
arielf