Hoje, as tecnologias de virtualização estão em demanda, não apenas no segmento "grandes empresas", mas também em pequenas e médias empresas e entre usuários domésticos. Em particular, para pequenas empresas, os servidores de virtualização podem ser usados para implementar vários serviços de serviços com pouco uso de recursos. Isso geralmente se refere a servidores independentes baseados em plataformas de processador único ou duplo, com uma quantidade relativamente pequena de RAM em 32-64 GB e sem sistemas de armazenamento especiais de alto desempenho. Mas além de toda a série de vantagens, você precisa estar ciente de que, em termos de desempenho, os sistemas virtuais são diferentes dos reais. Neste artigo, compararemos as velocidades de vários tipos de unidades locais (HDD, SSD e NVMe) para várias configurações de máquinas virtuais, a fim de estimar as perdas de sua virtualização. Ninguém contesta que, nas implementações “corretas” dos sistemas de virtualização, é melhor usar armazenamento externo, mas na versão do orçamento você pode conviver com discos locais.
Os testes foram realizados no servidor com a seguinte configuração: placa-mãe Asus Z10PE-D16, dois processadores Intel Xeon E5-2609 v3, 64 GB de RAM. O Proxmox VE versão 5.2, um sistema de código aberto baseado no Debian, foi escolhido como o ambiente de virtualização. Para sua instalação, um SSD SATA separado foi usado e as unidades testadas foram conectadas separadamente a outras interfaces e portas.
Primeiro, teste a unidade na plataforma host. A segunda opção é encaminhar para a máquina virtual (KVM e Debian 9 são usados para ela, 2 núcleos e 8 GB de RAM são alocados) como um disco físico. A terceira configuração é um disco virtual no LVM. O quarto é um arquivo RAW em um volume com um sistema de arquivos ext4. Nas duas últimas opções, um tamanho de disco de 64 GB foi escolhido. Portanto, um resultado adicional do artigo pode ser uma comparação de LVM e RAW para armazenar imagens de disco virtual.
O utilitário fio com padrões de leitura e gravação seqüencial com um bloco de 256 KB e operações aleatórias com um bloco de 4 KB serão usados para medir a velocidade. Os testes foram conduzidos com o parâmetro iodepth de 1 a 256, a fim de emular diferentes cargas. Para operações seqüenciais, estimamos a velocidade em MB / s, para operações aleatórias - IOPS. Além disso, analisamos os atrasos médios (clat do relatório de teste).
Vamos começar com um disco rígido tradicional, no papel do idoso HGST HUH728080ALE640 - um drive com interface SATA e capacidade de 2 TB. O uso de discos rígidos únicos, especialmente se não houver requisitos de volume, no cenário descrito de virtualização de baixo custo para uma carga pequena pode ser considerado uma opção típica se você salvar ou "esculpir completamente do que era" e não incluir essa opção em consideração, seria errado.


Na leitura, todas as opções, exceto a última, mostram aproximadamente os mesmos resultados no nível de 190 MB / s (somente com cargas pesadas com iodepth = 256 para passagem e LVM, os resultados são reduzidos para 150 MB / s). Enquanto cru, graças ao armazenamento em cache no host, "voa para o espaço" e os outros não são mais visíveis contra o fundo. Por um lado, podemos dizer que o teste usado e as configurações do sistema não permitem avaliar corretamente a velocidade dessa configuração e mostrar o desempenho não da RAM, mas da RAM. Por outro lado, o armazenamento em cache é uma das tecnologias mais eficazes e comuns para aumentar a produtividade e, se funcionar, seria estranho recusá-lo. Mas não se esqueça da energia confiável nessas configurações.


Não existe mais esse efeito na gravação, portanto, nas operações seqüenciais, todas as configurações são aproximadamente as mesmas - a velocidade máxima é de cerca de 190 MB / s. Embora o cru ainda se comporte de maneira diferente dos outros - com uma carga pequena, é mais lento, mas, no máximo, não diminui como o resto. Não há diferenças nos atrasos.
O uso do cache do host também é perceptível nas operações de leitura aleatória - aqui o raw é consistentemente o mais rápido e mostra até 950 IOPS. Aproximadamente duas vezes mais lento que lvm - até 450 IOPS. Bem, o próprio disco rígido, incluindo o "encaminhamento" para o sistema convidado, mostra cerca de 200 IOPS. A distribuição dos participantes no cronograma de atraso é consistente com as velocidades.
Em operações de gravação aleatória, a configuração do lvm, que forneceu até 400 IOPS, provou ser a melhor. Ele é seguido por dados brutos (~ 330 IOPS), e os dois últimos participantes com 290 IOPS fecham a lista. Não há diferenças visíveis nos atrasos.
Em geral, se você não precisar das funções fornecidas pelo lvm, e o critério principal não for a velocidade de gravação aleatória, é melhor usar brutos em termos de velocidade ao colocar discos virtuais no armazenamento local. A aplicação da tecnologia para encaminhar um disco físico para uma máquina virtual não oferece vantagens de desempenho nesse caso. Mas pode ser interessante se você deseja conectar uma unidade com dados existentes à máquina virtual.
O segundo participante do teste é o SSD Samsung 850 EVO. Dada a idade e o trabalho em um sistema sem TRIM, em alguns testes (em particular na gravação seqüencial), ele já perde para o disco rígido. No entanto, devido a um ganho significativo de desempenho em operações aleatórias na frente de um disco rígido tradicional, também é muito interessante para máquinas virtuais.
O resultado da leitura seqüencial no modo bruto pode ser comentado de forma semelhante à variante com um disco rígido. Mas o mais interessante aqui é que as duas primeiras configurações mostram 370 MB / s estáveis sob carga pesada, enquanto o lvm é capaz de apenas 190 MB / s. Os atrasos para este modo também são maiores.
Nas operações de gravação, como já mencionado, esse SSD em seu estado atual não parece muito interessante e mostra uma velocidade de 100 MB / s. Quanto à comparação de configurações, neste teste, o bruto perde com uma carga baixa, tanto em velocidade quanto em atraso.
Operações aleatórias são o principal SSD "trunfo". Aqui vemos que todas as opções "virtuais" perdem visivelmente para uma unidade "limpa" - elas fornecem apenas 30.000 IOPS, enquanto o próprio SSD é capaz de trabalhar três vezes mais rápido. Aparentemente, aqui a limitação é a plataforma de hardware e software. No entanto, os atrasos neste teste não excedem 7 ms, portanto, é improvável que essa diferença de IOPS possa ser percebida por aplicativos gerais.
E em um registro aleatório há um equilíbrio de poder diferente. O disco "real" já está perdendo, embora um pouco. É capaz de exibir até 4.200 IOPS. lvm e passthrough são mais de duzentos e o raw já chega a 5.500 IOPS. No gráfico de atrasos de um vídeo obviamente interessante, uma fratura de iodepth = 32.
Os testes mostraram que o SSD se comporta de maneira diferente do HDD neste cenário. Em primeiro lugar, a leitura sequencial com lvm fica visivelmente atrás de outras opções. Em segundo lugar, os discos virtuais nos SSDs perdem visivelmente as IOPS de leitura aleatória.
O terceiro participante está um pouco fora do "barato", mas esse produto em si é muito interessante para o "acelerador" universal de operações em disco e é capaz de competir em velocidade não apenas com unidades únicas, mas também com matrizes RAID. É sobre o Intel Optane. Nesse caso, usamos o modelo 900P para o barramento PCIe 3.0 x4, com capacidade de 280 GB.
O Intel Optane já é capaz de competir com a RAM neste teste. A diferença não é mais uma ordem de magnitude, como os outros participantes, mas apenas duas a três vezes. Além disso, com o aumento da carga, os valores são praticamente comparados. Os atrasos, como nos testes acima, são mais baixos para a configuração bruta.
Nas operações de gravação seqüencial, uma unidade "limpa" perde para outros participantes - com um aumento na carga, eles atingem uma estabilidade de 2.150 MB / s e reduzem a velocidade para cerca de 1.700 MB / s. Atrasos neste caso não podem ser comparados.
As operações de leitura aleatória desse modelo de SSD ao acessá-lo a partir do host podem fornecer quase 200.000 IOPS (a velocidade será de 760 MB / s). Mas todos os outros esquemas de conexão, como vimos acima para SSDs com uma interface SATA, são limitados a 35.000 IOPS, que não podem deixar de ser perturbados. Consequentemente, eles têm um atraso maior, cerca de cinco vezes.
Na gravação aleatória, esse modelo de unidade sem dúvida mostra quase os mesmos resultados que na leitura aleatória - cerca de 190.000 IOPS para conexão direta e 35.000 IOPS para outras opções. Os atrasos também coincidem com o gráfico nas operações de leitura. Por outro lado, mais de 700 MB / s em gravação aleatória em pequenos blocos - esses resultados ainda precisam ser pesquisados.
O uso da unidade Intel Optane para o problema estudado mostra que não haverá redução significativa na velocidade nas operações sequenciais nos sistemas operacionais convidados. Mas se você precisar de IOPS alto para leitura ou gravação aleatória, essa plataforma limitará o desempenho no nível de 35.000 IOPS, embora a própria unidade seja cinco vezes mais rápida.
Os testes mostraram que, ao criar sistemas de armazenamento para servidores virtuais, você deve prestar atenção a certas perdas da virtualização, se a velocidade for importante para suas máquinas virtuais. Na maioria das configurações testadas, os discos virtuais mostram indicadores de desempenho significativamente diferentes dos dispositivos físicos. No entanto, para os discos rígidos tradicionais, a diferença geralmente é relativamente pequena, porque eles próprios não são tão rápidos. Para SSDs SATA, podem ser observadas baixas significativas no IOPS para acesso aleatório, mas, mesmo assim, elas permanecem dramaticamente mais rápidas nessas tarefas do que o Winchesters. O drive Intel Optane certamente perdeu muito no ambiente virtual em operações aleatórias, mas mesmo nesse caso continua a ser fenomenalmente rápido na gravação. E nas operações subseqüentes não há comentários sobre ele. Outra vantagem significativa desse dispositivo é seu desempenho estável - ele não requer operações especiais de limpeza, de modo que, independentemente do status e do histórico, bem como do sistema operacional e de suas configurações, a velocidade será constante a qualquer momento. Mas, como sempre, nada acontece de graça. O Intel Optane 900P não é apenas excepcionalmente rápido, mas também caro.