Estamos executando as VMs do Linux (Centos 5.x) no topo do VMware vsphere 5.5. Estou monitorando a latência do disco usando o iostat, especificamente a coluna await, mas estou percebendo resultados estranhos com o device mapper / LVM versus os discos "físicos" que suportam o LVM.
Abaixo está um conjunto de saída do iostat -x 5 em uma de nossas VMs razoavelmente ativas. A vm em questão tem dois discos, sda com 1 partição sendo / boot, e sdb como nosso disco principal com / no sdb2. Enquanto iostat mostra latências de ~ 20-40ms para aguardar o dispositivo sdb2 (o único dispositivo / partição que suporta meu volgroup / dm-0), iostat para dm-0 mostra 100 + ms aguardando.
Minha pergunta é: qual estatística está "correta" aqui, no que diz respeito às latências reais que o sistema está vendo? Está vendo os ~ 20ms mostrados para o sdb de disco "físico", ou está realmente vendo 100 + ms de dm-0, talvez devido a alguns problemas de alinhamento / etc que surgem quando o LVM se envolve? É estranho porque às vezes as estatísticas combinam muito bem, outras são muito diferentes - por exemplo, no bloco de saída iostat abaixo, sdb2 mostra 419 write IOPS, enquanto dm-0 mostra 39k write IOPS.
avg-cpu: %user %nice %system %iowait %steal %idle
5.78 0.00 8.42 39.07 0.00 46.73
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
sda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
sda1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
sdb 15.67 39301.00 745.33 419.67 64146.67 317765.33 327.82 53.55 45.89 0.86 100.07
sdb1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
sdb2 15.67 39301.00 745.33 419.67 64146.67 317765.33 327.82 53.55 45.89 0.86 100.07
dm-0 0.00 0.00 761.33 39720.67 64120.00 317765.33 9.43 4933.92 121.88 0.02 100.07
Atualização:
Fiz algumas leituras adicionais, incluindo os links da resposta de Gene abaixo. Eu sei que há muitas variáveis envolvidas (virtualização, block file system, etc), mas essa parte parece ordenada, de acordo com nossos fornecedores + as melhores práticas da VMware, e o desempenho é realmente muito bom. Eu realmente estou apenas olhando para isso da perspectiva "dentro da VM" aqui.
Por esse motivo, suspeito que haja um problema com nosso particionamento + alinhamento de LVM:
GNU Parted 1.8.1
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) unit s
(parted) print
Model: VMware Virtual disk (scsi)
Disk /dev/sdb: 2147483647s
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File system Flags
1 63s 4192964s 4192902s primary linux-swap boot
2 4192965s 2097151999s 2092959035s primary lvm
~]# pvdisplay
--- Physical volume ---
PV Name /dev/sdb2
VG Name VolGroup00
PV Size 998.00 GB / not usable 477.50 KB
Allocatable yes (but full)
PE Size (KByte) 32768
Total PE 31936
Free PE 0
Allocated PE 31936
PV UUID tk873g-uSZA-JaWV-R8yD-swXg-lPvM-dgwPQv
Lendo sobre o alinhamento, parece que o seu setor inicial deve ser divisível por 8, então você se alinha em um limite de 4kb, com o tamanho padrão do setor 512b. Parece que o LVM é capaz de alinhar automaticamente quando você o aplica a um disco inteiro, mas como estamos partindo do disco primeiro, e então fazendo da nossa partição ie / dev / sdb2 um dispositivo físico para o LVM usar, Não tenho certeza se é capaz de calcular um deslocamento nesse caso. Por link , o parâmetro data_alignment_offset_detection: "Se definido como 1, e seu kernel fornece informações de topologia em sysfs para o Volume Físico, o início da área de dados alinhados do Volume Físico será alterado pelo alignment_offset exposto em sysfs. " Este é o Centos5, e não vejo nenhuma dessas informações expostas no sysfs, apenas em nosso Centos6 e vm's mais recentes, então ele pode não ser capaz de alinhar corretamente em um volume físico.
Encontrei este whitepaper netapp no alinhamento de partições VM link
Especificamente, há boas informações na seção 4.5, página 29, sobre particionar adequadamente uma VM para alinhamento adequado com o LVM. Vou seguir isso para que nossos novos vm's estejam alinhados corretamente.
Isso parece causar esse comportamento, alguém com mais conhecimento / experiência pode confirmar isso?