Partilhar via


Configurar o armazenamento SMB da instância de cluster de failover – SQL Server no Linux

Aplica-se a: SQL Server - Linux

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

No mundo não Windows, o SMB é geralmente conhecido como um compartilhamento CIFS (Common Internet File System) e implementado por meio do Samba. No mundo do Windows, o acesso a um compartilhamento SMB é feito desta maneira: \\SERVERNAME\SHARENAME. Para instalações do SQL Server baseadas em Linux, o compartilhamento SMB precisa ser montado como uma pasta.

Informações importantes de origem e servidor

Estas são algumas dicas e observações para usar o SMB com êxito:

  • O compartilhamento SMB pode estar no Windows, no Linux ou, até mesmo, em um dispositivo, desde que esteja usando o SMB 3.0 ou versões posteriores. Para obter mais informações sobre o Samba e o SMB 3.0, confira SMB 3.0 para ver se a implementação do Samba está em conformidade com o SMB 3.0.
  • O compartilhamento SMB deve estar altamente disponível.
  • A segurança precisa ser definida corretamente no compartilhamento SMB. Veja abaixo um exemplo de /etc/samba/smb.conf, em que SQLData é o nome do compartilhamento.
[SQLData]
path=/var/smb/SQLData
read only = no
browseable = yes
guest ok = no
writeable = yes
valid users = SQLSambaUser

Instruções

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

  2. Obtenha informações sobre o usuário mssql.

     sudo id mssql
    

    Observe uid, gid e grupos.

  3. Execute sudo smbclient -L //NameOrIP/ShareName -U User.

    • <NameOrIP> é o nome DNS ou o endereço IP do servidor que hospeda o compartilhamento SMB.
    • <ShareName> é o nome do compartilhamento SMB.
  4. Para bancos de dados do sistema ou qualquer item armazenado na localização de dados padrão, siga essas etapas. Caso contrário, vá para a etapa 5.

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

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

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

      su mssql
      
    4. 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
      
    5. 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.
    6. Verifique se os arquivos estão no diretório.

      ls <TempDir>
      

      <TempDir> é o nome da pasta da etapa D.

    7. Exclua os arquivos do diretório de dados do SQL Server existente.

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

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

    10. Monte o compartilhamento SMB na pasta de dados do SQL Server. Este exemplo mostra a sintaxe para se conectar a um compartilhamento SMB 3.0 baseado no Windows Server.

      Mount -t cifs //<ServerName>/<ShareName> /var/opt/mssql/data -o vers=3.0,username=<UserName>,password=<Password>,domain=<domain>,uid=<mssqlUID>,gid=<mssqlGID>,file_mode=0777,dir_mode=0777
      
      • <ServerName> é o nome do servidor com o compartilhamento SMB
      • <ShareName> é o nome do compartilhamento
      • <UserName> é o nome do usuário usado para acessar o compartilhamento
      • <Password> é a senha do usuário
      • <domain> é o nome do Active Directory
      • <mssqlUID> é o UID do usuário mssql
      • <mssqlGID> é o GID do usuário mssql
    11. Verifique se a montagem foi bem-sucedida emitindo o comando mount sem opções.

      mount
      
    12. Alterne para o usuário mssql.

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

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

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

    16. Insira exit para não ser root.

    17. 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
      
    18. Para um teste adicional, crie um banco de dados para garantir que as permissões estejam corretas. O exemplo a seguir usa o Transact-SQL; você poderá usar o SSMS.

      Captura de tela mostrando a criação do banco de dados de teste.

    19. Pare o SQL Server e verifique se ele está desligado. Se for adicionar ou testar outros discos, não desligue o SQL Server enquanto eles não forem adicionados e testados.

      sudo systemctl stop mssql-server
      sudo systemctl status mssql-server
      
    20. Somente se tiver terminado, desmonte o compartilhamento. Caso contrário, desmonte-o depois de concluir o teste/a adição de outros discos.

      sudo umount //<IPAddressorServerName>/<ShareName /<FolderMountedIn>
      
      • <IPAddressOrServerName> é o endereço IP ou o nome do host SMB
      • <ShareName> é o nome do compartilhamento
      • <FolderMountedIn> é o nome da pasta em que o SMB está montado
  5. 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 14.

    1. Alterne para o superusuário.

      sudo -i
      
    2. 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
      
    3. Monte o compartilhamento SMB na pasta de dados do SQL Server. Este exemplo mostra a sintaxe para se conectar a um compartilhamento SMB 3.0 baseado no Samba.

      Mount -t cifs //<ServerName>/<ShareName> <FolderName> -o vers=3.0,username=<UserName>,password=<Password>,uid=<mssqlUID>,gid=<mssqlGID>,file_mode=0777,dir_mode=0777
      
      • <ServerName> é o nome do servidor com o compartilhamento SMB
      • <ShareName> é o nome do compartilhamento
      • <FolderName> é o nome da pasta criada na última etapa
      • <UserName> é o nome do usuário usado para acessar o compartilhamento
      • <Password> é a senha do usuário
      • <mssqlUID> é o UID do usuário mssql
      • <mssqlGID> é o GID do usuário mssql.
    4. Verifique se a montagem foi bem-sucedida emitindo o comando mount sem opções.

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

    6. 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.

    7. Desmontar o compartilhamento

      sudo umount //<IPAddressorServerName>/<ShareName> /<FolderMountedIn>
      
      • <IPAddressOrServerName> é o endereço IP ou o nome do host SMB
      • <ShareName> é o nome do compartilhamento
      • <FolderMountedIn> é o nome da pasta em que o SMB está montado.
  6. Repita as etapas nos outros nós.

Agora você está pronto para configurar a FCI.