Configuración del SMB de almacenamiento de la instancia de clúster de conmutación por error: SQL Server en Linux

Se aplica a:SQL Server: Linux

En este artículo se explica cómo configurar el almacenamiento SMB de una instancia de clúster de conmutación por error (FCI) en Linux.

Fuera de Windows, también se alude a SMB como un recurso compartido del Sistema de archivos de Internet común (CIFS) y se implementa mediante Samba. En Windows, se accede a un recurso compartido de SMB de esta manera: \\SERVERNAME\SHARENAME. En el caso de las instalaciones de SQL Server basadas en Linux, el recurso compartido de SMB debe montarse como una carpeta.

Información importante sobre el código fuente y el servidor

Aquí tiene algunas sugerencias y notas para usar SMB correctamente:

  • El recurso compartido de SMB puede estar en Windows, Linux o incluso en un dispositivo siempre que use SMB 3.0 o versiones superiores. Para obtener más información sobre Samba y SMB 3.0, consulte SMB 3.0 para ver si su implementación de samba es compatible con SMB 3.0.
  • El recurso compartido de SMB debe tener alta disponibilidad.
  • La seguridad debe establecerse correctamente en el recurso compartido de SMB. A continuación se muestra un ejemplo de /etc/samba/smb.conf, donde SQLData es el nombre del recurso compartido.
[SQLData]
path=/var/smb/SQLData
read only = no
browseable = yes
guest ok = no
writeable = yes
valid users = SQLSambaUser

Instrucciones

  1. Elija uno de los servidores que participarán en la configuración de la FCI. No importa el que elija.

  2. Obtenga información sobre el usuario mssql.

     sudo id mssql
    

    Anote los grupos uid y gid.

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

    • <NameOrIP> es el nombre DNS o la dirección IP del servidor que hospeda el recurso compartido de SMB.
    • <ShareName> es el nombre del recurso compartido de SMB.
  4. En el caso de las bases de datos del sistema o cualquier elemento almacenado en la ubicación de datos predeterminada, siga estos pasos. De lo contrario, vaya al paso 5.

    1. Asegúrese de que SQL Server está detenido en el servidor en el que está trabajando.

      sudo systemctl stop mssql-server
      sudo systemctl status mssql-server
      
    2. Cambie por completo para ser el superusuario.

      sudo -i
      
    3. Cambie al usuario mssql.

      su mssql
      
    4. Cree un directorio temporal para almacenar los archivos de registro y los datos de SQL Server.

      mkdir <TempDir>
      
      • <TempDir> es el nombre de la carpeta. En el ejemplo siguiente se crea una carpeta denominada /var/opt/mssql/tmp.
      mkdir /var/opt/mssql/tmp
      
    5. Copie los archivos de registro y los datos de SQL Server en el directorio temporal.

      cp /var/opt/mssql/data/* <TempDir>
      
      • <TempDir> es el nombre de la carpeta del paso anterior.
    6. Compruebe que los archivos están en el directorio.

      ls <TempDir>
      

      <TempDir> es el nombre de la carpeta del paso d.

    7. Elimine los archivos del directorio de datos de SQL Server existente.

      rm - f /var/opt/mssql/data/*
      
    8. Compruebe que se han eliminado los archivos.

      ls /var/opt/mssql/data
      
    9. Escriba exit para volver al usuario raíz.

    10. Monte el recurso compartido de SMB en la carpeta de datos de SQL Server. En este ejemplo se muestra la sintaxis para conectarse a un recurso compartido de SMB 3.0 basado en 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> es el nombre del servidor con el recurso compartido de SMB.
      • <ShareName> es el nombre del recurso compartido.
      • <UserName> es el nombre del usuario para acceder al recurso compartido.
      • <Password> es la contraseña del usuario.
      • <domain> es el nombre de Active Directory.
      • <mssqlUID> es el UID del usuario de mssql
      • <mssqlGID> es el GID del usuario de mssql
    11. Para comprobar que el montaje se ha realizado correctamente, envíe mount sin modificadores.

      mount
      
    12. Cambie al usuario mssql.

      su mssql
      
    13. Copie los archivos del directorio temporal /var/opt/mssql/data.

      cp /var/opt/mssql/tmp/* /var/opt/mssql/data
      
    14. Compruebe que los archivos están allí.

      ls /var/opt/mssql/data
      
    15. Escriba exit para no ser mssql.

    16. Escriba exit para no ser root.

    17. Inicie SQL Server. Si todo se ha copiado correctamente y la seguridad se ha aplicado correctamente, SQL Server debería mostrarse como iniciado.

      sudo systemctl start mssql-server
      sudo systemctl status mssql-server
      
    18. Para seguir probando, cree una base de datos para asegurarse de que los permisos sean correctos. En el ejemplo siguiente se usa Transact-SQL; puede usar SSMS.

      Screenshot showing the creation of the test database.

    19. Detenga SQL Server y compruebe que se ha apagado. Si va a agregar o probar otros discos, no apague SQL Server hasta que se agreguen y prueben.

      sudo systemctl stop mssql-server
      sudo systemctl status mssql-server
      
    20. Solo si ha finalizado, desmonte el recurso compartido. En caso contrario, desmóntelo después de terminar de probar o agregar los discos adicionales.

      sudo umount //<IPAddressorServerName>/<ShareName /<FolderMountedIn>
      
      • <IPAddressOrServerName> es la dirección IP o nombre del host de SMB.
      • <ShareName> es el nombre del recurso compartido.
      • <FolderMountedIn> es el nombre de la carpeta donde se ha montado SMB.
  5. Para comprobar otros aspectos que no sean las bases de datos del sistema (por ejemplo, las bases de datos de usuario o las copias de seguridad), siga estos pasos. Si solo usa la ubicación predeterminada, vaya al paso 14.

    1. Cambie para ser el superusuario.

      sudo -i
      
    2. Cree una carpeta que usará SQL Server.

      mkdir <FolderName>
      

      <FolderName> es el nombre de la carpeta. Es necesario especificar la ruta de acceso completa de la carpeta si no está en la ubicación correcta. En el ejemplo siguiente se crea una carpeta denominada /var/opt/mssql/userdata.

      mkdir /var/opt/mssql/userdata
      
    3. Monte el recurso compartido de SMB en la carpeta de datos de SQL Server. En este ejemplo se muestra la sintaxis para conectarse a un recurso compartido de SMB 3.0 basado en 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> es el nombre del servidor con el recurso compartido de SMB.
      • <ShareName> es el nombre del recurso compartido.
      • <FolderName> es el nombre de la carpeta creada en el último paso.
      • <UserName> es el nombre del usuario para acceder al recurso compartido.
      • <Password> es la contraseña del usuario.
      • <mssqlUID> es el UID del usuario de mssql
      • <mssqlGID> es el GID del usuario de mssql.
    4. Para comprobar que el montaje se ha realizado correctamente, envíe mount sin modificadores.

    5. Escriba exit para dejar de ser el superusuario.

    6. Para probar, cree una base de datos en esa carpeta. En el ejemplo siguiente se usa sqlcmd para crear una base de datos, cambiar el contexto a ella y comprobar que los archivos existen en el nivel del sistema operativo; después, se elimina la ubicación temporal. Puede usar SSMS.

    7. Desmontaje del recurso compartido

      sudo umount //<IPAddressorServerName>/<ShareName> /<FolderMountedIn>
      
      • <IPAddressOrServerName> es la dirección IP o nombre del host de SMB.
      • <ShareName> es el nombre del recurso compartido.
      • <FolderMountedIn> es el nombre de la carpeta donde se ha montado SMB.
  6. Repita los pasos en los demás nodos.

Ya puede configurar la FCI.