Ainda sou novo no ZFS. Estou usando o Nexenta, mas estou pensando em mudar para o OpenIndiana ou Solaris 11 Express. No momento, estou pensando em virtualizar o servidor ZFS como convidado no ESXi, Hyper-V ou XenServer (ainda não decidi qual deles - estou inclinado ao ESXi para suporte ao VMDirectPath e FreeBSD).
A principal razão é que parece que eu tenho recursos suficientes para poder usar facilmente outras 1-3 VMs em execução simultaneamente. Principalmente Windows Server. Talvez uma VM Linux / BSD também. Eu gostaria que o servidor ZFS virtualizado hospedasse todos os dados das outras VMs, para que seus dados pudessem ser mantidos em discos separados fisicamente dos discos ZFS (montados como iscsi ou nfs).
Atualmente, o servidor possui um AMD Phenom II com 6 núcleos no total (2 desbloqueados), 16 GB de RAM (máximo) e um LSI SAS 1068E HBA com (7) discos SATA II de 1 TB conectados (planejando RAIDZ2 com hot spare). Também tenho (4) SSDs SATA II de 32 GB conectados à placa-mãe. Espero espelhar dois dos SSDs em um espelho de inicialização (para o host virtual) e deixar os outros dois SSDs para o ZIL e o L2ARC (para o convidado da VM do ZFS). Estou disposto a adicionar mais dois discos para armazenar os convidados da VM e alocar todos os sete discos atuais como armazenamento ZFS. Nota: A placa-mãe não tem suporte para IOMMU, pois o 880G não suporta, mas eu tenho uma placa 890FX que possui IOMMU se isso faz uma enorme diferença.
Minhas perguntas são:
1) É aconselhável fazer isso? Não vejo nenhuma desvantagem óbvia (o que me faz pensar por que ninguém mais mencionou isso). Eu sinto que poderia estar fazendo uma grande supervisão e eu odiaria me comprometer com isso, mover todos os meus dados apenas para ir fubar a partir de alguns detalhes que eu perdi.
2) Desempenho do convidado virtual do ZFS? Estou disposto a sofrer um pequeno impacto no desempenho, mas acho que, se o convidado da VM tiver acesso total ao disco, o desempenho de E / S do disco será insignificante (pelo menos, em comparação com a execução do ZFS não virtualizado) . Alguém pode falar disso por experiência em hospedar um servidor ZFS como convidado da VM?
Respostas:
Eu criei várias dessas configurações de armazenamento "tudo-em-um" do ZFS. Inicialmente inspirada nas excelentes postagens do Ubiquitous Talk , minha solução adota uma abordagem ligeiramente diferente para o design do hardware, mas produz o resultado do armazenamento ZFS virtualizado encapsulado.
Para responder suas perguntas:
Determinar se esta é uma abordagem inteligente depende realmente de seus objetivos. O que você está tentando realizar? Se você tem uma tecnologia (ZFS) e está procurando por um aplicativo, isso é uma má ideia. É melhor usar um controlador RAID de hardware adequado e executar suas VMs em uma partição VMFS local. É o caminho de menor resistência. No entanto, se você tiver um motivo específico para querer usar o ZFS (replicação, compactação, segurança de dados, portabilidade etc.), isso é definitivamente possível se você estiver disposto a se esforçar.
O desempenho depende muito do seu design, independentemente de você estar executando em bare-metal ou virtual. O uso da passagem PCI (ou AMD IOMMU no seu caso) é essencial, pois você forneceria à VM ZFS VM acesso direto a um controlador de armazenamento e discos SAS. Desde que sua VM seja alocada com uma quantidade adequada de recursos de RAM e CPU, o desempenho é quase nativo. Obviamente, o design do seu pool é importante. Por favor, considere espelhos versus RAID Z2. O ZFS é escalável entre vdevs e não o número de discos .
Minha plataforma é o VMWare ESXi 5 e meu sistema operacional preferido para ZFS é o NexentaStor Community Edition .
Este é o meu servidor
doméstico. É um HP ProLiant DL370 G6 executando o ESXi a partir de um cartão SD interno. Os dois discos espelhados de 72 GB no centro estão vinculados ao controlador RAID Smart Array P410 interno e formam um volume VMFS. Esse volume contém uma VM NexentaStor. Lembre-se de que a máquina virtual ZFS precisa viver em algum lugar com armazenamento estável.Há um controlador SAS LSI 9211-8i conectado ao compartimento da unidade que contém seis discos SATA de 1 TB à direita. Ele é passado para a máquina virtual NexentaStor, permitindo que a Nexenta veja os discos como uma configuração RAID 1 + 0. Os discos são drives baratos Western Digital Green WD10EARS alinhados adequadamente com um
zpool
binário modificado .Não estou usando um dispositivo ZIL ou nenhum cache L2ARC nesta instalação.
A VM possui 6 GB de RAM e 2 vCPU alocados. No ESXi, se você usar passagem PCI, será criada uma reserva de memória para a quantidade total de RAM atribuída à VM.
Dou à VM NexentaStor duas interfaces de rede. Um é para gerenciamento de tráfego. O outro faz parte de um vSwitch separado e possui uma interface vmkernel (sem um uplink externo). Isso permite que a VM forneça armazenamento NFS montável pelo ESXi por meio de uma rede privada. Você pode adicionar facilmente uma interface de ligação ascendente para fornecer acesso a hosts externos.
Instale suas novas VMs no armazenamento de dados exportado pelo ZFS. Certifique-se de definir os parâmetros "Inicialização / desligamento da máquina virtual" no ESXi. Você deseja que a VM de armazenamento seja inicializada antes dos sistemas convidados e desligada por último.
Aqui estão os resultados bonnie ++ e iozone de uma execução diretamente na VM NexentaStor. A compactação ZFS está desativada para que o teste mostre números mais relacionáveis, mas, na prática, a compactação padrão do ZFS (não o gzip) sempre deve estar ativada.
# bonnie++ -u root -n 64:100000:16:64
# iozone -t1 -i0 -i1 -i2 -r1m -s12g
Este é um gráfico do NexentaStor DTrace mostrando o IOPS da VM de armazenamento e as taxas de transferência durante a execução do teste. 4000 IOPS e mais de 400 megabytes / segundo são razoáveis para esses discos de baixo custo. (tamanho grande do bloco)
Outras notas.
fonte