Um dos pré requisitos ao montar um ambiente de Oracle RAC é ter um storage com discos compartilhados entre todos os nodes do cluster. Neste post será demonstrado como criar e compartilhar discos entre duas VM`s de modo que ambas possam escrever nos discos

Se você acabou de chegar do VirtualBox, se sentirá familiarizado com o procedimento, mas no VMware temos algumas etapas adicionais para obtermos a capacidade de multi-write (múltiplas VM`s podendo escrever no mesmo disco).
Essa demonstraçâo assume que você já tem 2 VM`s criadas, com sistema operacional e o Oracle ASM lib instalado e configurado. Por tanto, será demonstrado somente como adicionar os discos nas máquinas e os exemplos deles sendo apresentados ao ASM lib.
Passo 1: Adicionar uma nova controladora
Segundo a VMware em seu documento “Oracle Databases on VMware: RAC Deployment Guide”, precisamos adicionar pelo menos uma controladora SCSI do tipo “VMware Paravirtual” e em “SCSI Bus Sharing” devemos alterar de “none” para “Physical”.
1.1 Selecione a VM 1, clique em “Edit Settings”
1.2 Clique em “Add other devide” e selecione “SCSI Controller”

Uma nova controladora com nome temporário “new SCSI controller” será adicionada. Por padrão ela já virá como “WMware Paravirtual”, então precisamos alterar apenas o “SCSI Bus Sharing” para “Physical”.

Para finalizar essa etapa, acesse as configurações da VM 2 e repita o mesmo procedimento.
Passo 2: Criando um novo disco na VM 1
Com as controladoras devidamente adicionadas e configuradas nas duas VM`s, vamos enfim adicionar um disco e compartilhar entre elas. Essa etapa cobre somente o procedimento de adicionar um novo disco na VM 1 e configurá-lo para que possa ser adicionado posteriormente na VM 2.
2.1 Selecione a VM 1, clique em “Edit Settings”
2.2 Clique em “add hard disk” e em “new standart hard disk”

2.3 Expanda as opções de configuração do novo disco
2.4 Em “Disk Provisioning”, marque “Thick provisioned, eagerly zeroed”
2.5 Em “controller location”, selecione a controladora criada no passo 1
2.6 Em “Sharing”, altere de “none” para “Multi-writer sharing”

Atenção: Não confudir a opção “Sharing” com “Shares”.
Passo 3: Compartilhar o disco com a VM 2
Essa é a última etapa para que o novo disco fique disponível para as duas VM`s e também é a etapa mais simples.
3.1 Selecione a VM 2, clique em “Edit Settings”
3.2 Clique em “add hard disk” e em “existing hard disk”

3.3 Navegue até o diretório da VM 1 e selecione o disco criado no passo 2.

3.4 Altere a controladora, selecionando aquela que criou no Passo 1

Pronto, ao clicar em “Save”, esse disco estará compartilhado entre as duas VM`s. Nessa etapa, a opção “Sharing” fica como “none” mesmo, a configuração válida é aquela realizada na VM 1, na qual esse disco foi criado.
Testando o novo disco no Linux
Saída do comando fdisk -l na VM 1:
[root@rac01 ~]# fdisk -l
Disk /dev/sdi: 5368 MB, 5368709120 bytes
166 heads, 62 sectors/track, 1018 cylinders
Units = cylinders of 10292 * 512 = 5269504 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
[root@rac01 ~]#
Saída do comando fdisk -l na VM2:
[root@rac02 ~]# fdisk -l
Disk /dev/sdi: 5368 MB, 5368709120 bytes
166 heads, 62 sectors/track, 1018 cylinders
Units = cylinders of 10292 * 512 = 5269504 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
[root@rac02 ~]#
Formatando o disco na VM 1:
[root@rac01 ~]# fdisk /dev/sdi
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x697a37b3.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
switch off the mode (command 'c') and change display units to
sectors (command 'u').
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-1018, default 1): 1
Last cylinder, +cylinders or +size{K,M,G} (1-1018, default 1018):
Using default value 1018
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
[root@rac01 ~]#
Verificando o disco formatado na VM 1:
[root@rac01 ~]# fdisk -l /dev/sdi
Disk /dev/sdi: 5368 MB, 5368709120 bytes
166 heads, 62 sectors/track, 1018 cylinders
Units = cylinders of 10292 * 512 = 5269504 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x697a37b3
Device Boot Start End Blocks Id System
/dev/sdi1 1 1018 5238597 83 Linux
[root@rac01 ~]#
Verificando o disco formatado na VM 2:
[root@rac02 ~]# fdisk -l /dev/sdi
Disk /dev/sdi: 5368 MB, 5368709120 bytes
166 heads, 62 sectors/track, 1018 cylinders
Units = cylinders of 10292 * 512 = 5269504 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x697a37b3
Device Boot Start End Blocks Id System
/dev/sdi1 1 1018 5238597 83 Linux
[root@rac02 ~]#
Note que ao realizar a formatação do disco na VM 1, ele já foi apresentado formatado automaticamente na VM2 sem a necessidade de reiniciar qualquer umas das VM’s.Na verdade não precisamos reiniciar em nenhum momento até aqui.
Adicionando o disco no ASM lib
Agora, a partir de qualquer VM, podemos apresentar esse disco para o ASM lib. Neste exemplo, eu irei realizar o procedimento na VM 1 e depois verificar com “scandisks” e “listdisks” nas duas VM`s.
Criando disco “exemplo” na VM 1:
[root@rac01 ~]# oracleasm createdisk exemplo /dev/sdi1
Writing disk header: done
Instantiating disk: done
[root@rac01 ~]# oracleasm listdisks
CRS1
CRS2
CRS3
DATA1
DATA2
EXEMPLO
FRA1
FRA2
[root@rac01 ~]#
Na VM 2, após realizar um “scandisks”, o novo disco “EXEMPLO” já é listado pelo ASM lib.
[root@rac02 ~]# oracleasm listdisks
CRS1
CRS2
CRS3
DATA1
DATA2
FRA1
FRA2
[root@rac02 ~]# oracleasm scandisks
Reloading disk partitions: done
Cleaning any stale ASM disks...
Scanning system for ASM disks...
Instantiating disk "EXEMPLO"
[root@rac02 ~]# oracleasm listdisks
CRS1
CRS2
CRS3
DATA1
DATA2
EXEMPLO
FRA1
FRA2
[root@rac02 ~]#
Com o procedimento demonstrado aqui, você será capaz de criar ambientes de Oracle RAC no VMware ESXI tranquilamente. Para adicionar mais discos, basta repetir os passos 2 e 3 e eles serão reconhecidos pelo Linux automaticamente. Caso aumente seu cluster com uma terceira VM e queira compartilhar um disco já compartilhado entre 2 VM`s , basta repetir o passo 1 e 3 no novo node.
A configuração foi baseada no documento oficial da VMware, o qual indico caso você queira conhecer mais sobre implementaćões de Oracle RAC neste Hypervisor.