dm-1
/ alan_dell_2016-swap
é um Volume Lógico LVM, que é fisicamente armazenado na partição sda7
do dispositivo sda
.
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 465.8G 0 disk
├─sda1 8:1 0 500M 0 part /boot/efi
├─sda2 8:2 0 128M 0 part
├─sda3 8:3 0 50.5G 0 part
├─sda4 8:4 0 450M 0 part
├─sda5 8:5 0 7.6G 0 part
├─sda6 8:6 0 1G 0 part /boot
└─sda7 8:7 0 371.4G 0 part
├─alan_dell_2016-fedora 253:0 0 40G 0 lvm /
├─alan_dell_2016-swap 253:1 0 2G 0 lvm [SWAP]
└─alan_dell_2016-home 253:2 0 318G 0 lvm /home
O que significa para a E / S ser colocada na fila em dm-1
, em oposição a sda
?
A fila em dm-1
é alimentada na fila em sda
? Ou são duas filas separadas, que o sistema tem algum meio de arbitrar entre (como?)? Ou existe apenas uma fila, mas o sistema reporta estatísticas separadas para mostrar em qual LV (ou não) a E / S foi gerada?
Estou curioso porque vi que a fila do LVM pode ser maior que a do dispositivo subjacente.
Observação nr_requests
(duração máxima da fila ? ) do dispositivo LVM é o mesmo que o dispositivo subjacente. nr_requests
no dispositivo LVM não pode ser alterado . Além disso, o atributo sysfs queue/scheduler
mostra apenas none
. Em um dispositivo físico, parece noop deadline [cfq]
.
EDIT : Encontrei uma resposta parcial sobre a existência de queue/scheduler
no LVM aqui . Aparentemente, há um tipo de mapeador de dispositivo para vários caminhos, em que o agendador de E / S é anexado ao dispositivo dm
(e o agendador nos dispositivos subjacentes não tem efeito). Mas em um volume lógico do LVM, o agendador será anexado apenas ao dispositivo subjacente. Parece nos dizer que o agendador de I / O não está ciente dos dispositivos empilhados ... mas isso não explica realmente o que os comprimentos de fila relatados significam. É até um pouco mais misterioso. Isso mostra que alguns dispositivos dm são "baseados em solicitação", o que significa que eles não têm uma fila. Os volumes lógicos do LVM não são baseados em solicitações, portanto, eles realmente têm uma fila, mas parece que a fila não está agendada e, por algum motivo, você não tem permissão para alterar o tamanho da fila?
Minha versão do kernel é 4.19.2-200.fc28.x86_64
. sda
(e dm-1
) são dispositivos de fila única; eles não usam a nova camada de bloqueio de várias filas.
Exemplo extremo ( atop
output):
LVM | ll_2016-swap | busy 59% | read 24328 | write 175735 | KiB/r 4 | KiB/w 4 | MBr/s 0.2 | MBw/s 1.1 |
avq 684.13
| avio 1.76 ms
DSK | sda | busy 93% | read 88967 | write 45808 | KiB/r 81 | KiB/w 152 | MBr/s 11.8 | MBw/s 11.4 |
avq 96.50
| avio 4.12 ms
Exemplo ligeiramente menos extremo, resultado de iostat -d -x -y
durante cp
de um arquivo grande:
Device r/s w/s rkB/s wkB/s rrqm/s wrqm/s %rrqm %wrqm r_await w_await aqu-sz rareq-sz wareq-sz svctm %util sda 123.00 55.00 26932.00 17812.00 16.00 307.00 11.51 84.81 16.23 106.96 7.31 218.96 323.85 5.62 100.00 dm-0 23.00 40.00 200.00 212.00 0.00 0.00 0.00 0.00 36.09 45.98 2.63 8.70 5.30 13.44 84.70 dm-1 12.00 304.00 48.00 1216.00 0.00 0.00 0.00 0.00 35.42 146.51 44.96 4.00 4.00 1.26 39.90 dm-2 102.00 10.00 26112.00 18432.00 0.00 0.00 0.00 0.00 16.25 324.40 4.59 256.00 1843.20 8.93 100.00