¿Cómo encuentro en qué dispositivo físico se encuentra una carpeta?

110

Específicamente: lo hice sudo mkdir /work, y me gustaría verificar que realmente se encuentre en mi disco duro y no esté asignado a otra unidad.

¿Cómo verifico dónde se encuentra físicamente esta carpeta?

ripper234
fuente
ver unix.stackexchange.com/q/149660/4778 findmnt -T /work
ctrl-alt-delor

Respuestas:

148

El df(1)comando le dirá al dispositivo que hay un archivo o directorio en:

df /work

El primer campo tiene el dispositivo en el que se encuentra el archivo o directorio.

p.ej

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

Si el dispositivo es un volumen lógico, deberá determinar en qué dispositivo (s) de bloque está el volumen lógico. Para esto, puede usar el lvs(8)comando:

# 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 última columna le dice que el volumen lógico usren el grupo de volúmenes orthanc( /dev/mapper/orthanc-usr) está en el dispositivo /dev/sda3. Dado que un grupo de volúmenes puede abarcar múltiples volúmenes físicos, es posible que tenga varios dispositivos en la lista.

Otro tipo de dispositivo de bloque lógico es un dispositivo md (dispositivos múltiples, y solía llamarse meta-disco, creo), como /dev/md2. Para ver los componentes de un dispositivo md, puede usar mdadm --detailo mirar/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

Puede ver que /dev/md2está en los dispositivos /dev/sda3y /dev/sdb3.

Hay otros métodos que pueden anidar dispositivos de bloque (sistemas de archivos de fusibles, bucle invertido) que tendrán sus propios métodos para determinar el dispositivo de bloque subyacente, e incluso puede anidar varias capas para que tenga que trabajar hacia abajo. Tendrás que tomar cada caso como viene.

camh
fuente
44
+1. Interesante. No sabía que dffuera tan complaciente.
Faheem Mitha
Bien, hice eso y obtuve / dev / mapper / fun-root como mi sistema de archivos. ¿Ahora que? (El nombre de mi computadora es 'divertido')
ripper234
1
Entonces, ¿tal vez estás usando LVM? lvdisplayo lvsserá tu amigo
phunehehe
55
Estaba tan impresionado con esta respuesta que la usé como base para un comando, "rawdev", que devuelve los dispositivos subyacentes de una ruta o partición, incluso en los casos en que LVM y / o MD están anidados. Está disponible en Github: github.com/BMDan/rawdev .
BMDan
5

Para un script, puede usar:

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

Esto es compatible con POSIX.

Tom Hale
fuente
Funciona la mayor parte del tiempo, sin embargo, si <pathname> está en una instantánea btrfs, esto informa '-'.
Vista elíptica
1

En las distribuciones modernas de Ubuntu hay una capa adicional (mapeador de dispositivos) entre su archivo / directorio y el dispositivo. /dev/mappercontiene enlaces simbólicos que apuntan a los dispositivos especiales reales. Por ejemplo, probando el directorio actual:

$ 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

Entonces, para obtener la ruta completa del dispositivo mediante programación, puede usar:

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

¿Cuál es mi caso imprime:

/dev/dm-1

realpath es parte de GNU coreutils.

arielf
fuente
Bien, pero ¿cuándo es útil el camino completo? dfaún mostrará el mappercamino.
Dan Dascalescu
@DanDascalescu punto justo. Puede ser útil cuando / si desea conocer el dispositivo de hardware real que es lo que estaba buscando al responder esta pregunta.
arielf