¿Qué es este dispositivo dm-0?

98

Mientras intentaba averiguar por qué una transferencia de archivos Linux -> Linux se ejecuta más lentamente de lo que creo que debería, me topé con algo con lo que no estoy familiarizado. / dev / dm-0 parece ser mi cuello de botella, pero no tengo idea de qué es.

En mi servidor de destino, el comando iostat muestra un dispositivo en la parte inferior, / dev / dm-0, como 100% utilizado. Este servidor tiene 6 discos en un conjunto mdadm raid5, con LVM ejecutándose encima. Cada uno de los discos subyacentes tiene una utilidad del 50%. La transferencia está escribiendo en un volumen lógico ubicado en este conjunto de incursiones.

¿Qué es esto / dev / dm-0? Una vez que sé lo que es, tal vez pueda encontrar cómo aumentar su velocidad, o al menos entender por qué es la velocidad que es.

Jeff Shattock
fuente
1
Resulta que el dispositivo dm-0 no estaba causando la lentitud, tenía las particiones alineadas incorrectamente. En una unidad de sector 4k, debe alinear manualmente las particiones cuando las crea. Tonto, pero fácil de arreglar.
Jeff Shattock

Respuestas:

107

Es parte del mapeador de dispositivos en el núcleo, utilizado por LVM. Use dmsetup lspara ver lo que hay detrás.

Ignacio Vazquez-Abrams
fuente
39
Más específicamentesudo dmsetup info /dev/dm-0
tgharold
dmsetup lsno devuelve ninguna información útil sobre qué dm-0es o dónde se puede encontrar.
karatedog
47

Esos son "dispositivos" lógicos LVM

Puedes mapearlos usando:

# sudo lvdisplay|awk  '/LV Name/{n=$3} /Block device/{d=$3; sub(".*:","dm-",d); print d,n;}'
dm-0 /dev/SysVolGroup/LogVolRoot
dm-1 /dev/SysVolGroup/xen
dm-2 /dev/SysVolGroup/db1-2
dm-3 /dev/SysVolGroup/db1-2swap
dm-4 /dev/SysVolGroup/python1
dm-5 /dev/SysVolGroup/python1swap
dm-6 /dev/SysVolGroup/db1-2snap

fuente: http://www.linuxquestions.org/questions/linux-newbie-8/dm0-in-iostat-652771/

Gulden PT
fuente
31

Como es habitual en un sistema Linux, debería haber muchas formas de obtener el mismo resultado. Si se le ha dado un usuario no root, le aconsejo que use el lsblkcomando (por ejemplo, dispositivos de bloqueo de lista) que creará una vista de árbol de dependencias de discos:

[oracle@abcdlinux ~]$ lsblk
NAME                               MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT
sda                                  8:0    0  300G  0 disk
└─RATGORA1DSY_PJSTORE_1 (dm-4)     253:4    0  300G  0 mpath
  └─RATGORA1DSY_PJSTORE_1p1 (dm-5) 253:5    0  300G  0 part  /oradata
sdb                                  8:16   0  100G  0 disk
└─Boot-RATGORA1DSY (dm-0)          253:0    0  100G  0 mpath
  ├─Boot-RATGORA1DSYp1 (dm-1)      253:1    0  100M  0 part  /boot
  ├─Boot-RATGORA1DSYp2 (dm-2)      253:2    0   16G  0 part  [SWAP]
  └─Boot-RATGORA1DSYp3 (dm-3)      253:3    0 83.9G  0 part  /
sdc                                  8:32   0  300G  0 disk
└─RATGORA1DSY_PJSTORE_1 (dm-4)     253:4    0  300G  0 mpath
  └─RATGORA1DSY_PJSTORE_1p1 (dm-5) 253:5    0  300G  0 part  /oradata
sdd                                  8:48   0  100G  0 disk
└─Boot-RATGORA1DSY (dm-0)          253:0    0  100G  0 mpath
  ├─Boot-RATGORA1DSYp1 (dm-1)      253:1    0  100M  0 part  /boot
  ├─Boot-RATGORA1DSYp2 (dm-2)      253:2    0   16G  0 part  [SWAP]
  └─Boot-RATGORA1DSYp3 (dm-3)      253:3    0 83.9G  0 part  /
Pascal
fuente
17
sudo lvdisplay

mostró la asignación de particiones virtuales montadas a "grupos de volúmenes".

Cuando escribí sudo pvs, vi la asignación de un grupo de volúmenes a un "volumen físico" que parecía una /dev/sdaNnotación familiar . (Mi mirada a todo el disco fdisk -l /dev/sdamostró otra partición).

anguila ghEEz
fuente
11

pvsmuestra los volúmenes físicos que sustentan el grupo de volúmenes LVM. Se pueden agrupar varios dispositivos físicos de un grupo de volúmenes. Luego, el grupo se vuelve a dividir en volúmenes lógicos según sea necesario, tratando los discos físicos como un único recurso para ser cortado y redimensionado a voluntad. Cada vez que divide parte del grupo de volúmenes como un volumen lógico, se presenta como un dm-dispositivo

Robar
fuente
7

Quería comentar la publicación de Pascal, a veces necesitas definir las columnas de salida para ver el nombre. Por ejemplo, en CentOS 6 los muestra, pero CentOS 7 no. El uso de --output resuelve esto.

lsblk --output NAME,KNAME,TYPE,SIZE,MOUNTPOINT

NAME            KNAME TYPE  SIZE MOUNTPOINT
sda             sda   disk   16G 
├─sda1          sda1  part  500M /boot
└─sda2          sda2  part 15.5G 
  ├─centos-root dm-0  lvm  13.9G /
  └─centos-swap dm-1  lvm   1.6G [SWAP]
sr0             sr0   rom  1024M 
Box293
fuente
1
impresionante, mucho más fácil de identificar KNAME en dispositivos exactos, gracias
Alexander
1

Puedes usar sar

df -h

# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup00-rootvol
                   24G  4.1G   18G  19% /
tmpfs                 7.8G     0  7.8G   0% /dev/shm
/dev/mapper/VolGroup01-appvol
                   39G  411M   37G   2% /app
/dev/sda1             194M   93M   92M  51% /boot
/dev/mapper/VolGroup01-logvol
                   61G   18G   41G  30% /log
/dev/mapper/VolGroup00-tmpvol
                  2.0G  379M  1.5G  21% /tmp
/dev/mapper/VolGroup00-varvol
                   20G  2.1G   17G  12% /var

sar -bdp 1

01:00:20 AM       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz         await     svctm     %util
01:00:21 AM       sda      0.00      0.00      0.00      0.00      0.00              0.00      0.00      0.00
01:00:21 AM VolGroup00-swapvol      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
01:00:21 AM VolGroup00-rootvol      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
01:00:21 AM VolGroup01-appvol      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
01:00:21 AM VolGroup01-logvol      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
01:00:21 AM VolGroup00-varvol      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
01:00:21 AM VolGroup00-tmpvol      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
karthik
fuente
1

También puede usar iostat para identificar posibles cuellos de botella, por ejemplo:

iostat -x -d 1
Dennis Schulze
fuente