Criar ASM Diskgroups dentro de volumes NFS

Neste artigo vou abordar a utilização de arquivos em volumes NFS como discos ASM.
A ideia dessa configuração surgiu da minha necessidade de montar um ambiente de laboratório com Oracle 12c em RAC usando o Hyper-V do meu notebook.
Como o Hyper-V não suporta (até o momento em que este post foi criado, em 2016) o compartilhamento de discos entre VMs quando usados apenas discos locais, foi necessário buscar um método alternativo para criar o ambiente. Dessa forma, além das duas máquinas virtuais para os hosts do RAC, criei mais uma para ser o servidor NFS.

Aviso: Apesar da utilização de arquivos em volumes NFS como discos ASM ser uma configuração suportada pela Oracle, ela deve ser utilizada com muita cautela, principalmente se pretende usá-la em produção. A utilização de volumes NFS requer a montagem no modo "hard", o que faz com que a instância ASM ou o Database esperem indefinidamente por uma resposta do servidor NFS quando este ficar indisponível. Isso significa que o ASM não poderá fornecer de forma efetiva o espelhamento de dados. De uma forma geral, para usar essa configuração os Diskgroups devem ser configurados com redundância "External" e a comunicação com os volumes NFS deve ser confiável.
Ref.: How To Create ASM Diskgroups using NFS/NAS Files? (Doc ID 731775.1)

Configurando o servidor NFS (O Storage)

No ambiente de laboratório que estou montando o SO usado é o Oracle Linux 7, portanto todos os comandos aqui são relativos a essa versão, que trouxe varias novidades em relação ao Oracle Linux 6, principalmente a adição do systemd como mecanismo de controle e gerenciamento de serviços, devices, sockets e pontos de montagem.

Primeiramente instale o servidor NFS.

[root@ol7nfs01 ~]# yum install nfs-utils

Crie o diretório onde serão colocados os arquivos que serão usados como discos pelo ASM

[root@ol7nfs01 ~]# mkdir /nfs

Edite o arquivo /etc/exports para configurar a publicação do diretório pelo servidor NFS. Tenha atenção aos parâmetros usados e somente altere-os se souber o que está fazendo. Nesse laboratório o diretório que estou exportando é o "/nfs".

[root@ol7nfs01 ~]# cat /etc/exports
/nfs   *(rw,sync,no_wdelay,insecure_locks,no_root_squash)

Inicie e ative o serviço do NFS, para que o mesmo inicie sempre que o servidor reiniciar.

[root@ol7nfs01 ~]# systemctl start nfs-server
[root@ol7nfs01 ~]# systemctl enable nfs-server

Configurando o cliente NFS (O Database Server)

A primeira atividade nos servidores de banco que montarão o diretório NFS é criar a pasta que servirá de ponto de montagem.

[root@ol7db01 ~]# mkdir -p /u01/oradata

Em seguida edite o arquivo /etc/fstab para que o volume NFS seja montado sempre que o servidor for reiniciado. Adicione a seguinte linha ao fstab, sendo que "ol7nfs01" é o nome do servidor NFS. Novamente atenção aos parâmetros e somente altere-os se souber o que está fazendo.

ol7nfs01:/nfs   /u01/oradata   nfs   rw,bg,hard,nointr,tcp,vers=3,timeo=600,rsize=32768,wsize=32768,actimeo=0  0 0

Agora você pode montar o volume NFS

[root@ol7db01 ~]# mount -a

Em seguida configure o "ownership" e as permissões do diretório. Estou assumindo que o usuário oracle e o grupo oinstall já estão criados.

[root@ol7db01 ~]# chown -R oracle:oinstall /u01/oradata
[root@ol7db01 ~]# chmod -R 775 /u01/oradata

O próximo passo é criar os arquivos que serão usados como discos para o ASM. Vou criar alguns arquivos de 10 GB para usar nos diskgroups DATA e RECO. Como no meu laboratório vou instalar o Grid Infrastructure sob o usuário grid, usarei ele para criar os arquivos.

[grid@ol7db01 ~]$ mkdir /u01/oradata/asm
[grid@ol7db01 ~]$ dd if=/dev/zero of=/u01/oradata/asm/data01.disk bs=1k count=10000000
[grid@ol7db01 ~]$ dd if=/dev/zero of=/u01/oradata/asm/data02.disk bs=1k count=10000000
[grid@ol7db01 ~]$ dd if=/dev/zero of=/u01/oradata/asm/data03.disk bs=1k count=10000000
[grid@ol7db01 ~]$ dd if=/dev/zero of=/u01/oradata/asm/data04.disk bs=1k count=10000000
[grid@ol7db01 ~]$ dd if=/dev/zero of=/u01/oradata/asm/data05.disk bs=1k count=10000000
[grid@ol7db01 ~]$ dd if=/dev/zero of=/u01/oradata/asm/reco01.disk bs=1k count=10000000
[grid@ol7db01 ~]$ dd if=/dev/zero of=/u01/oradata/asm/reco02.disk bs=1k count=10000000

Devemos ajustar novamente as permissões no diretório e arquivos criados.

[grid@ol7db01 ~]$ chmod 775 /u01/oradata/asm
[grid@ol7db01 ~]$ chmod 664 /u01/oradata/asm/*

Agora o ambiente já está preparado e podemos iniciar a instalação do Grid Infrastructure. Na tela de criação do diskgroup do ASM inicialmente não vão aparecer os discos candidatos. Basta clicar em "Change Discovery Path" e indicar o diretório NFS onde foram criados os arquivos.

Na tela para alterar o caminho de descoberta dos discos, digite o caminho com o asterisco como caractere coringa.

Quando retornar à tela de seleção de discos, os arquivos aparecerão listados.

Deste ponto em diante o processo é exatamente igual à qualquer instalação do Grid Infrastructure.

Comentários

Postagens mais visitadas deste blog

Migrar Replicação do SYSVOL de FRS para DFS

Gerar uma cadeia de certificados usando OpenSSL

Listar conexões de rede sem netstat