O que é esse dispositivo dm-0?

98

Enquanto procurava descobrir por que uma transferência de arquivos Linux -> Linux está sendo mais lenta do que eu acho, eu me deparei com algo que não estou familiarizado. / dev / dm-0 parece ser meu gargalo, mas não tenho idéia do que seja.

No meu servidor de destino, o comando iostat mostra um dispositivo na parte inferior, / dev / dm-0, como sendo 100% utilizado. Este servidor possui 6 discos em um conjunto mdadm raid5, com o LVM sendo executado em cima dele. Cada um dos discos subjacentes está em torno de 50% util. A transferência está gravando em um volume lógico localizado neste conjunto de ataques.

O que é isso / dev / dm-0? Depois que eu souber o que é, talvez eu possa descobrir como aumentar sua velocidade, ou pelo menos entender por que é a velocidade que é.

Jeff Shattock
fonte
1
Acontece que o dispositivo dm-0 não estava causando a lentidão, eu tinha as partições alinhadas incorretamente. Em uma unidade do setor de 4k, você precisa alinhar manualmente as partições ao criá-las. Burro, mas fácil de consertar.
Jeff Shattock

Respostas:

107

Faz parte do mapeador de dispositivos no kernel, usado pelo LVM. Use dmsetup lspara ver o que está por trás disso.

Ignacio Vazquez-Abrams
fonte
39
Mais especificamentesudo dmsetup info /dev/dm-0
tgharold 30/12/2015
dmsetup lsnão retorna nenhuma informação útil sobre o que dm-0é ou onde pode ser encontrada.
karatedog 18/09
47

Esses são "dispositivos" lógicos do LVM

Você pode mapeá-los 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

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

gulden PT
fonte
31

Como de costume em um sistema Linux, deve haver muitas maneiras de obter o mesmo resultado. Se você recebeu um usuário não root, recomendo que você use o lsblkcomando (por exemplo, dispositivos de bloco de lista) que criará uma visualização em árvore das dependências 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
fonte
17
sudo lvdisplay

mostrou o mapeamento de partições virtuais montadas para "grupos de volumes".

Quando digitei sudo pvs, vi o mapeamento de um grupo de volumes para um "volume físico" que parecia uma /dev/sdaNnotação familiar . (Meu olhar para o disco inteiro fdisk -l /dev/sdamostrou outra partição).

enguia ghEEz
fonte
11

pvsexibe os volumes físicos que sustentam o grupo de volumes LVM. Vários dispositivos físicos podem ser agrupados em um grupo de volumes. O grupo é então dividido novamente em volumes lógicos, conforme necessário, tratando os discos físicos como um único recurso a ser dividido e redimensionado à vontade. Cada vez que você divide parte do grupo de volumes como um volume lógico, ele é apresentado como um dm-dispositivo

Roubar
fonte
7

Eu queria comentar sobre o post de Pascal, às vezes você precisa definir as colunas de saída para ver o nome. Por exemplo, no CentOS 6, ele é exibido, mas o CentOS 7 não. O uso de --output resolve isso.

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
fonte
1
impressionante, muito mais fácil de identificar KNAMEs em dispositivos exatas, graças
Alexander
1

Você pode 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
fonte
1

Você também pode usar o iostat com a finalidade de identificar possíveis gargalos, por exemplo:

iostat -x -d 1
Dennis Schulze
fonte