it-swarm.it

Come trovo su quale dispositivo fisico si trova una cartella?

In particolare: ho fatto Sudo mkdir /work, e vorrei verificare che effettivamente si trovi sul mio hard disk e non mappato su qualche altra unità.

Come posso verificare dove si trova fisicamente questa cartella?

120
ripper234

Il comando df(1) ti dirà sul dispositivo che si trova un file o una directory:

df /work

Il primo campo ha il dispositivo su cui si trova il file o la directory.

per esempio.

$ df /root
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sda1              1043289    194300    795977  20% /

Se il dispositivo è un volume logico, sarà necessario determinare su quale dispositivo di blocco è attivo il volume logico. Per questo, puoi usare il comando 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)

L'ultima colonna indica che il volume logico usr nel gruppo di volumi orthanc (/dev/mapper/orthanc-usr) Si trova sul dispositivo /dev/sda3. Poiché un gruppo di volumi può estendersi su più volumi fisici, è possibile che siano elencati più dispositivi.

Un altro tipo di dispositivo a blocchi logici è un dispositivo md (Multiple Devices, e un tempo si chiamava meta-disk penso), come /dev/md2. Per guardare i componenti di un dispositivo md, puoi usare mdadm --detail O guardare in /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

Puoi vedere che /dev/md2 È sui dispositivi /dev/sda3 E /dev/sdb3.

Esistono altri metodi per annidare i dispositivi a blocchi (Fuse, filesystem di loopback) che avranno i loro metodi per determinare il dispositivo a blocchi sottostante e puoi anche nidificare più livelli in modo da procedere verso il basso. Dovrai prendere ogni caso così com'è.

154
camh

Per uno script, puoi usare:

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

Questo è compatibile con POSIX.

5
Tom Hale

Nelle moderne distribuzioni di Ubuntu c'è un livello aggiuntivo (mappatore del dispositivo) tra il tuo file/directory e il dispositivo. /dev/mapper contiene collegamenti simbolici che puntano ai dispositivi speciali effettivi. Ad esempio, provando nella directory corrente:

$ 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

Quindi, per ottenere il percorso completo del dispositivo a livello di codice, è possibile utilizzare:

$ realpath $(df . | grep '^/' | cut -d' ' -f1)

Qual è il mio caso:

/dev/dm-1

realpath fa parte di GNU coreutils.

2
arielf