Compartilhar via


Configurar a instância de cluster de failover – NFS – SQL Server em Linux

Aplica-se a: SQL Server – Linux

Este artigo explica como configurar o armazenamento NFS para uma FCI (instância de cluster de failover) no Linux.

NFS, ou Network File System, é um método comum de compartilhamento de discos no mundo Linux, mas não do Windows. Semelhante ao iSCSI, o NFS pode ser configurado em um servidor ou algum tipo de dispositivo ou unidade de armazenamento, contanto que atenda aos requisitos de armazenamento para SQL Server.

Informações importantes do servidor NFS

O NFS de hospedagem de origem (um servidor Linux ou algo diferente) deve estar usando/em conformidade com a versão 4.2 ou posterior. As versões anteriores não funcionam com o SQL Server no Linux.

Ao configurar as pastas a serem compartilhadas no servidor NFS, siga estas opções gerais de diretrizes:

  • rw para garantir que seja possível ler a pasta e gravar nela
  • sync para assegurar gravações garantidas na pasta
  • Não use no_root_squash como opção; isso é considerado um risco de segurança
  • Verifique se a pasta tem todos os direitos (777) aplicados

Verifique se seus padrões de segurança foram impostos para acesso. Ao configurar a pasta, verifique se apenas os servidores que participam do FCI devem ver a pasta NFS. No exemplo a seguir, mostramos uma modificação de /etc/exports em uma solução NFS baseada em Linux, onde a pasta é restrita a FCIN1 e FCIN2.

# /etc/exports: the access control list for filesystems which may be exported
#               to NFS clients. See export(5).
#
/var/nfs/fci1   FCIN1(rw,sync) FCIN2(rw,sync)

Instruções

  1. Escolha um dos servidores que participarão da configuração da FCI. Não importa qual.

  2. Verifique se o servidor pode ver as montagens no servidor NFS.

    sudo showmount -e <IPAddressOfNFSServer>
    
    • <IPAddressOfNFSServer> é o endereço IP do servidor NFS que você vai usar.
  3. Para bancos de dados do sistema ou qualquer item armazenado na localização de dados padrão, siga estas etapas. Caso contrário, vá para a etapa 4.

    • Verifique se o SQL Server está parado no servidor em que você está trabalhando.

      sudo systemctl stop mssql-server
      sudo systemctl status mssql-server
      
    • Alterne totalmente para o superusuário.

      sudo -i
      
    • Alterne para que seja o usuário mssql.

      su mssql
      
    • Crie um diretório temporário para armazenar os dados e os arquivos de log do SQL Server.

      mkdir <TempDir>
      
      • <TempDir> é o nome da pasta. O exemplo a seguir cria uma pasta chamada /var/opt/mssql/tmp.
      mkdir /var/opt/mssql/tmp
      
    • Copie os dados e os arquivos de log do SQL Server para o diretório temporário.

      cp /var/opt/mssql/data/* <TempDir>
      
      • <TempDir> é o nome da pasta da etapa anterior.
    • Verifique se os arquivos estão no diretório.

      ls TempDir
      
      • <TempDir> é o nome da pasta da etapa anterior.
    • Exclua os arquivos do diretório de dados do SQL Server existente.

      rm - f /var/opt/mssql/data/*
      
    • Verifique se os arquivos foram excluídos.

      ls /var/opt/mssql/data
      
    • Digite exit para voltar ao usuário raiz.

    • Monte o compartilhamento NFS na pasta de dados do SQL Server.

      mount -t nfs4 <IPAddressOfNFSServer>:<FolderOnNFSServer> /var/opt/mssql/data -o nfsvers=4.2,timeo=14,intr
      
      • <IPAddressOfNFSServer> é o endereço IP do servidor NFS que você vai usar
      • <FolderOnNFSServer> é o nome do compartilhamento de NFS. A sintaxe de exemplo a seguir corresponde às informações de NFS da Etapa 2.
      mount -t nfs4 10.201.202.63:/var/nfs/fci1 /var/opt/mssql/data -o nfsvers=4.2,timeo=14,intr
      
    • Verifique se a montagem foi bem-sucedida emitindo o comando mount sem opções.

      mount
      

      Veja a saída esperada.

      10.201.202.63:/var/nfs/fcil on /var/opt/mssql/data type nfs4 (rw,relatime,vers=4.2,rsize=524288,wsize=524288,namlen=255,hard, proto=tcp,port=0,timeo=14, retrans=2,sec=sys,clientaddr=10.201.202.128,local lock=none, addr=10.201.202.63)
      
    • Alterne para o usuário mssql.

      su mssql
      
    • Copie os arquivos do diretório temporário /var/opt/mssql/data.

      cp /var/opt/mssql/tmp/* /var/opt/mssqldata
      
    • Verifique se os arquivos estão lá.

      ls /var/opt/mssql/data
      
    • Insira exit para não ser mssql.

    • Digite exit para não ser raiz.

    • Inicie o SQL Server. Se tudo for copiado corretamente e a segurança for aplicada corretamente, o SQL Server deverá ser mostrado como iniciado.

      sudo systemctl start mssql-server
      sudo systemctl status mssql-server
      
    • Crie um banco de dados para testar se a segurança está configurada corretamente. O exemplo a seguir mostra isso sendo feito por meio do Transact-SQL. Isso pode ser feito por meio do SSMS.

      Captura de tela mostrando como criar banco de dados de teste.

    • Pare o SQL Server e verifique se ele está desligado.

      sudo systemctl stop mssql-server
      sudo systemctl status mssql-server
      
    • Se você não estiver criando nenhuma outra montagem de NFS, desmonte o compartilhamento. Se estiver, não desmonte.

      sudo umount <IPAddressOfNFSServer>:<FolderOnNFSServer> <FolderToMountIn>
      
      • <IPAddressOfNFSServer> é o endereço IP do servidor NFS que você vai usar
      • <FolderOnNFSServer> é o nome do compartilhamento de NFS
      • <FolderMountedIn> é a pasta criada na etapa anterior.
  4. Para outros itens que não os bancos de dados do sistema, como bancos de dados de usuário ou backups, siga estas etapas. Se estiver usando apenas a localização padrão, vá para a Etapa 5.

    • Alterne para o superusuário.

      sudo -i
      
    • Crie uma pasta que será usada pelo SQL Server.

      mkdir <FolderName>
      
      • <FolderName> é o nome da pasta. O caminho completo da pasta precisará ser especificado se não estiver na localização correta.

      O exemplo a seguir cria uma pasta chamada /var/opt/mssql/userdata.

      mkdir /var/opt/mssql/userdata
      
    • Monte o compartilhamento NFS na pasta que foi criada na etapa anterior.

      mount -t nfs4 <IPAddressOfNFSServer>:<FolderOnNFSServer> <FolderToMountIn> -o nfsvers=4.2,timeo=14,intr
      
      • <IPAddressOfNFSServer> é o endereço IP do servidor NFS que você vai usar
      • <FolderOnNFSServer> é o nome do compartilhamento de NFS
      • <FolderToMountIn> é a pasta criada na etapa anterior.

      O exemplo a seguir monta o compartilhamento NFS.

      mount -t nfs4 10.201.202.63:/var/nfs/fci2 /var/opt/mssql/userdata -o nfsvers=4.2,timeo=14,intr
      
    • Verifique se a montagem foi bem-sucedida emitindo o comando mount sem opções.

    • Digite exit para deixar de ser o superusuário.

    • Para testar, crie um banco de dados nessa pasta. O exemplo a seguir usa o sqlcmd para criar um banco de dados, alternar o contexto para ele, verificar se os arquivos existem no nível do sistema operacional e, em seguida, exclui a localização temporária. Você pode usar o SSMS.

      Captura de tela do comando sqlcmd e da resposta para o comando.

    • Desmontar o compartilhamento

      sudo umount <IPAddressOfNFSServer>:<FolderOnNFSServer> <FolderToMountIn>
      
      • <IPAddressOfNFSServer> é o endereço IP do servidor NFS que você vai usar
      • <FolderOnNFSServer> é o nome do compartilhamento de NFS
      • <FolderMountedIn> é a pasta criada na etapa anterior.
  5. Repita as etapas nos outros nós.