Em primeiro lugar, fiz esta pergunta há 5 dias no Serverfault. Espero não estar fazendo mal ao trazê-lo aqui para o Unix&Linux Stack. Também fiz essa pergunta em 3 outros sites não relacionados ao Stack, sem respostas. Eu pretendo atualizar cada site com uma resposta, se eu conseguir responder. Aqui vamos nós.
Estou tendo dificuldade em entender a saída de iostat -x com relação específica ao ZFS zvols. Estou executando o Proxmox 4.4, totalmente atualizado e encontrando um desempenho de E/S geralmente ruim.
Ao solucionar problemas de desempenho lento, eu estava olhando para iostat -x 1 e vi esse tipo de leitura de utilização quase constante.
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sda 0.00 0.00 77.00 115.00 308.00 640.00 9.88 2.02 10.33 9.92 10.61 3.58 68.80
sdb 0.00 0.00 81.00 116.00 324.00 644.00 9.83 1.32 6.72 6.42 6.93 2.50 49.20
...
sde 0.00 0.00 77.00 117.00 308.00 640.00 9.77 1.16 6.25 5.25 6.91 2.35 45.60
sdf 0.00 0.00 78.00 116.00 312.00 640.00 9.81 1.25 6.45 5.64 7.00 2.47 48.00
...
zd32 0.00 0.00 0.00 197.00 0.00 788.00 8.00 1.09 5.54 0.00 5.54 5.06 99.60
O que me deixa confuso é que a porcentagem de utilização para zd32, o zvol da minha VM, está em 100%, enquanto o armazenamento subjacente está em aproximadamente 50% de utilização.
Minha pergunta é: a utilização do zvol não deveria refletir a utilização dos dispositivos de armazenamento subjacentes?
Para referência, existem outras VMs neste sistema, mas esta solução de problemas foi realizada após o expediente, portanto, elas estavam ociosas. Essa VM era a única VM ocupada, executando atualizações do Windows. O zpool é um RAID-Z2 de discos SATA de 7200 RPM, portanto não é exatamente construído para uma velocidade incrível. Eu só estou querendo saber sobre a utilização agora.
Aqui estão algumas dicas. Sim, deveria, porque o volume zfs é criado no zpool, localizado em um dispositivo de armazenamento. Se esse armazenamento for compartilhado entre outros recursos, eles podem afetar conjuntos e volumes zfs.
Infelizmente não sei o que é Proxmox, mas o %util costuma mostrar o tempo que o dispositivo está com uma fila positiva de transações. Um número de transações na fila é avgqu-sz. Ambos os valores também dependem do tipo e modelo do sistema de armazenamento, que pode suportar uma fila bastante grande. Então, pode ser um sintoma ruim ou não. Portanto, antes de mais nada, é melhor observar: await, r/s, w/s, rkB/s, wkB/s para ver se o volume tem uma carga de trabalho real e problemas de desempenho ou não.
Existe um comando especial:
zpool iostat
para monitorar a estatística zpool.