segunda-feira, 28 de janeiro de 2013

O que é VAAI?? VMware Vsphere Storage APIs for Array Integration

                 

Apesar de ter sido anunciada há algum tempo (desde o lançamento da versão 4.1), esta funcionalidade ainda não é muito bem compreendida e aproveitada por aqueles que utilizam o VMware VSphere como a sua plataforma de virtualização. O objetivo deste post é apresentar um pouco mais desta tecnologia, apresentando os principais conceitos por trás de cada uma das funcionalidades oferecidas.

Primeiramente, o que é VAAI?

Como o próprio nome sugere VMware Vsphere Storage APIs – Array Integration, é um conjunto de APIs (Application Programming Interface) que permitem uma comunicação entre os hosts ESXi e os dispositivos de armazenamento (Storage Array). Estas APIs definem um conjunto de funcionalidades que permitem que o host ESXi transfira para o storage a carga de execução de determinadas operações de disco, reduzindo com isso a utilização dos recursos no host ESXi e ao mesmo tempo obtendo um melhor desempenho na execução destas operações. Por isso essa tecnologia também é conhecida como “hardware acceleration” ou “hardware offload” APIs, pois transfere para o hardware a execução de algumas tarefas.

Vamos imaginar a execução de uma operação de clonagem de uma máquina virtual ou então a realização de um Storage vMotion de determinado .vmdk, se o local de origem e o local de destino, do clone e do .vmdk que está sendo movido, é o mesmo, ou seja, são datastores/LUNs que estão num mesmo storage, porque deixar que essa atividade seja controlada pelo software, no caso o ESXi, ao invés de transferir para o hardware (storage) essa responsabilidade, uma vez que o mesmo está muito mais preparado para executar tais tarefas do que o ESXi?

Como um administrador VMware, você não quer que seu host ESXi fique ocupado copiando blocos de um lado para o outro ou executando operações de clonagem. Você não quer que sua rede SAN ou Ethernet seja entupida com tráfego de Storage vMotion. Você quer ver o seu host processando as requisições das suas VM’s e gerenciando a sua memória!

Como citei anteriormente, a primeira versão da VAAI foi lançada juntamente com o VSphere 4.1, porém neste momento oferecia suporte apenas para armazenamento via bloco (FC, iSCSI e FCoE). Com o lançamento do VSphere 5.0, houve uma atualização também da VAAI, dessa vez oferecendo suporte para armazenamento via NAS e também novas funcionalidades relacionadas com a tecnologia de Thin Provisioning.

VAAI – Armazenamento em bloco (FC, iSCSI e FCoE)

São três as “funcionalidades” oferecidas para armazenamento em bloco:

- Atomic Test & Set (ATS)

Como sabemos, o VMFS é um sistema de arquivos em cluster, ou seja, permite que vários hosts o acessem ao mesmo tempo. Mas para que isso ocorra, são necessários alguns mecanismos que controlem determinadas operações, e um destes mecanismos é o “locking” (bloqueio). Quando um host ESXi faz alguma atualização nos metadados de um volume VMFS, este mecanismo de “locking” é necessário para garantir a integridade do sistema de arquivos e prevenir que um outro host ESXi tente atualizar esses mesmos metadados simultaneamente. São várias as operações que exigem este “locking”.

Até o Vsphere 4.0, esse mecanismo de bloqueio era realizado através de “SCSI Reservations”. Este “SCSI reservation” bloqueava toda a LUN no qual o VMFS se encontrava, evitando que outros hosts fizessem atualizações de metadados enquanto um determinado host possuía o “lock”. Esse era um fator que limitava a utilização de volumes VMFS muito grandes, devido a problemas de contenção que poderiam ocorrer no caso de muitas VM’s compartilharem o mesmo datastore.

Com o VAAI, um novo mecanismo de bloqueio foi introduzido, trata-se do ATS (Atomic Test & Set). O ATS permite que apenas um setor do disco seja modificado em um volume VMFS, evitando os problemas de contenção que ocorriam com a utilização do “SCSI Reservation” e permitindo a criação de volumes VMFS muito maiores.

VAAI - ATS
Esta imagem foi copiada do documento: http://content.dell.com/br/pt/empresa/d/business~smb~sb360~pt/Documents~DFDF_2012_VMWare_Storage.pdf.aspx
 - XCOPY (Extended Copy)

Quando não se tem o VAAI, uma operação de clone ou migração de dados entre datastores é realizada através de um driver chamado “Data Mover” presente no VMkernel. Além de demorar demais, essas operações ainda consomem ciclos de CPU, memória e comando nas filas da HBA do host.

Com a funcionalidade do XCOPY (Extended Copy), o ESXi dispara um comando para o Storage, para que ele execute a cópia dos blocos no lugar do “Data Mover”, resultando em operações muito mais rápidas e que desoneram o consumo de recursos nos hosts.

Esta imagem foi copiada do documento: http://content.dell.com/br/pt/empresa/d/business~smb~sb360~pt/Documents~DFDF_2012_VMWare_Storage.pdf.aspx
- Write Same (Zero)

Quando criamos um disco do tipo THICK, temos duas opções: Lazy Zeroed ou Eager Zeroed. O “lazy” zera os blocos à medida que forem sendo utilizados, e o “eager” zera todos os blocos no momento da sua criação. De qualquer forma, essa operação de zerar os blocos é realizada através de comandos SCSI que são enviados pelo host, consumindo recursos do host.

Com o VAAI, os hosts ESXi podem ser habilitados para enviar um comando SCSI chamado de WRITE_SAME. Este comando zera uma grande quantidade de blocos de um disco, sem a necessidade de transferência de dados pelo link de transporte. Algumas das operações que são beneficiadas por este comando são:

- Operações de clone que possuem como alvo um disco Eager Zeroed;
- Alocação de novos blocos para discos THIN;
- Inicialização de blocos ainda não escritos para discos Lazy Zeroed.

Esta imagem foi copiada do documento: http://content.dell.com/br/pt/empresa/d/business~smb~sb360~pt/Documents~DFDF_2012_VMWare_Storage.pdf.aspx
VAAI – Armazenamento em NAS (NFS)

Como já citado anteriormente, as funcionalidades VAAI para NAS foram incluídas a partir da versão VSphere 5.0. A diferença para o VAAI oferecido para armazenamento em bloco é que para tirar proveito dessas funcionalidades, será necessária a utilização de plug-in específico, o qual deverá ser fornecido pelo fabricante do storage.

 - Full File Clone

Esta funcionalidade é semelhante à funcionalidade XCOPY (Extended Copy) disponibilizada para o armazenamento em bloco. Ou seja, permite que discos virtuais sejam clonados por dispositivos NAS ao invés de utilizar o driver “Data Mover”, que consome CPU, memória e no caso de cópias via NAS, ainda consome banda de rede.

A única diferença entre o “Full File Clone” e o “XCOPY” é que o Full File Clone não é utilizado em operações de Storage vMotion, que continuam utilizando o “Data Mover”. Somente máquinas virtuais que são migradas enquanto estiverem desligadas é que serão beneficiadas pela funcionalidade do “Full File Clone”.

 - Fast File Clone/Native Snapshot Support

Essa funcionalidade permite que a criação de um sanpshot para uma máquina virtual seja realizada pelo dispositivo de armazenamento NAS (Storage). Foi lançado previamente com o VMware View 5.1, através do Vmware View Composer, permitindo que a criação de novos desktops virtuais usando Linked Clone fosse realizada pelo storage e não mais pelo hosts ESXi. Para o VSphere 5.1 essa funcionalidade foi extendida para vApps do vCloud Director.

- Extended Statistics

Com essa funcionalidade, os administradores VMware agora podem ter acesso às estatísticas de uso de datastores NFS, o que é extremamente útil para os casos em que são utilizados datastores “thin-provisioned”, pois permite que o VSphere exiba as estatísticas de utilização de espaço reais. Anteriormente, os administradores VMware precisavam de ferramentas de fornecedores de storage para saber quanto de espaço um disco VMDK “thin” estava realmente consumindo de um datastore, agora essas informações podem ser vistas diretamente no VSphere Client.

- Reserve Space

Em versões anteriores do VSphere, somente discos virtuais “thin” podiam ser criados em datastores NFS. Com essa nova funcionalidade “Reserve Space” oferecida pela VAAI, é possível que discos “thick” sejam criados também em datastores NFS.

VAAI - Thin Provisioning

Quem já fez uso de LUN’s “thin” com certeza já se deparou com uma situação em que mesmo após deletar uma máquina virtual de determinado datastore, o espaço que deveria ter sido liberado com a exclusão dessa VM não apareceu! Ou então, casos em que uma situação de datastore cheio veio a suspender todas as máquinas virtuais nele presente.

Algumas dessas “reclamações”, constantes por parte daqueles que fazem uso da tecnologia “thin provisioning”, fizeram com que a VMware pensasse em algumas funcionalidades que pudessem amenizar essa situação e oferecer ao administrador VMware, mais tranquilidade para trabalhar com essa tecnologia.

- Thin Provisioning Stun

Visa resolver o problema que envolvia a suspensão de todas as VM’s presentes em um datastore “thin” caso esse viesse a ficar com 100% de espaço utilizado. Agora, caso um datastore “thin” fique com 100% de espaço utilizado, apenas as máquinas virtuais que necessitarem de mais espaço em disco serão pausadas, as VM’s que não precisarem de espaço continuarão rodando normalmente. Depois que for alocado mais espaço para o datastore, as máquinas virtuais que foram pausadas poderão ser resumidas.

- Thin Provisioning Space Threshold Warning

Com esta nova funcionalidade, um alerta é exibido no Virtual Center quando um datastore “thin” atinge determinado threshold. Esse threshold é configurado no storage.


 - Dead Space Reclamation

Essa é a funcionalidade que permite a recuperação de um espaço anteriormente utilizado num datastore “thin” por uma máquina virtual que tenha sido excluída ou migrada para outro datastore. Através de um comando chamado SCSI UNMAP, o host ESXi avisa ao storage que determinado espaço, anteriormente utilizado, pode ser recuperado pelo storage. Com isso, os storages poderão relatar com maior precisão a utilização de espaço em um datastore “thin provisioned”.

Esta imagem foi copiada do documento: http://content.dell.com/br/pt/empresa/d/business~smb~sb360~pt/Documents~DFDF_2012_VMWare_Storage.pdf.aspx

Na primeira implementação desta funcionalidade no VSphere 5.0, essas operações de recuperação de espaço eram realizadas automaticamente, ou seja, assim que a VM era excluída ou migrada, o host ESXi automaticamente enviava o comando SCSI UNMAP para o storage recuperar aquele espaço. Devido a alguns problemas de desempenho e de tempo de recuperação destes espaços em determinados storages, esse esquema foi alterado, e essa operação agora deve ser disparada manualmente.

Quem quiser saber mais detalhadamente como esse processo de recuperação de espaço pode ser realizado, o artigo abaixo explica bem detalhadamente como funciona todo o processo. Vale a pena fazer a leitura.


Mais detalhes, como por exemplo, implementação, tuning, verificação de status e etc., sobre a tecnologia VAAI podem ser encontrados no whitepaper “VMware vSphere Storage APIs – Array Integration (VAAI)”, através do link abaixo:

7 comentários: