Compartir por


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

Se aplica a: SQL Server - Linux

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

NFS, o Network File System, es un método común para compartir discos en el entorno de Linux, pero no en el de Windows. De forma similar a iSCSI, NFS se puede configurar en un servidor o en algún tipo de dispositivo o unidad de almacenamiento siempre que cumpla los requisitos de almacenamiento para SQL Server.

Información importante del servidor NFS

El NFS host de origen (ya sea un servidor Linux u otro dispositivo) debe usar, o ser compatible con, la versión 4.2 o posterior. Las versiones anteriores no funcionan con SQL Server en Linux.

Al configurar las carpetas que se van a compartir en el servidor NFS, asegúrese de seguir estas opciones generales:

  • rw para asegurarse de que es posible leer la carpeta y escribir en ella
  • sync para garantizar las escrituras garantizadas en la carpeta
  • No use no_root_squash como opción; se considera un riesgo de seguridad
  • Asegúrese de que la carpeta tiene aplicados derechos completos (777)

Asegúrese de que los estándares de seguridad se aplican para el acceso. Al configurar la carpeta, asegúrese de que solo los servidores que participan en la FCI deben ver la carpeta NFS. En el ejemplo siguiente, se muestra una modificación /etc/exports en una solución NFS basada en Linux, donde la carpeta está restringida a FCIN1 y 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)

Instrucciones

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

  2. Compruebe que el servidor puede ver los montajes en el servidor NFS.

    sudo showmount -e <IPAddressOfNFSServer>
    
    • <IPAddressOfNFSServer> es la dirección IP del servidor NFS que se va a usar.
  3. 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 4.

    • 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
      
    • Cambie por completo para ser el superusuario.

      sudo -i
      
    • Cambie al usuario mssql.

      su mssql
      
    • 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
      
    • 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.
    • Compruebe que los archivos están en el directorio.

      ls TempDir
      
      • <TempDir> es el nombre de la carpeta del paso anterior.
    • Elimine los archivos del directorio de datos de SQL Server existente.

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

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

    • Monte el recurso compartido de NFS en la carpeta de datos de SQL Server.

      mount -t nfs4 <IPAddressOfNFSServer>:<FolderOnNFSServer> /var/opt/mssql/data -o nfsvers=4.2,timeo=14,intr
      
      • <IPAddressOfNFSServer> es la dirección IP del servidor NFS que se va a usar
      • <FolderOnNFSServer> es el nombre del recurso compartido de NFS. La siguiente sintaxis de ejemplo coincide con la información de NFS del paso 2.
      mount -t nfs4 10.201.202.63:/var/nfs/fci1 /var/opt/mssql/data -o nfsvers=4.2,timeo=14,intr
      
    • Para comprobar que el montaje se ha realizado correctamente, envíe mount sin modificadores.

      mount
      

      Este es el resultado esperado.

      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)
      
    • Cambie al usuario mssql.

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

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

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

    • Escriba exit para no ser el usuario raíz.

    • 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
      
    • Cree una base de datos para comprobar que la seguridad se ha configurado correctamente. En el ejemplo siguiente se muestra cómo se hace mediante Transact-SQL; puede realizarse mediante SSMS.

      Captura de pantalla que muestra cómo crear una base de datos de prueba.

    • Detenga SQL Server y compruebe que se ha apagado.

      sudo systemctl stop mssql-server
      sudo systemctl status mssql-server
      
    • Si no va a crear ningún otro montaje NFS, desmonte el recurso compartido. Si lo va a hacer, no desmonte.

      sudo umount <IPAddressOfNFSServer>:<FolderOnNFSServer> <FolderToMountIn>
      
      • <IPAddressOfNFSServer> es la dirección IP del servidor NFS que se va a usar
      • <FolderOnNFSServer> es el nombre del recurso compartido de NFS.
      • <FolderMountedIn> es la carpeta creada en el paso anterior.
  4. 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 5.

    • Cambie para ser el superusuario.

      sudo -i
      
    • 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
      
    • Monte el recurso compartido de NFS en la carpeta creada en el paso anterior.

      mount -t nfs4 <IPAddressOfNFSServer>:<FolderOnNFSServer> <FolderToMountIn> -o nfsvers=4.2,timeo=14,intr
      
      • <IPAddressOfNFSServer> es la dirección IP del servidor NFS que se va a usar
      • <FolderOnNFSServer> es el nombre del recurso compartido de NFS.
      • <FolderToMountIn> es la carpeta creada en el paso anterior.

      En el siguiente ejemplo monta el uso compartido de NFS.

      mount -t nfs4 10.201.202.63:/var/nfs/fci2 /var/opt/mssql/userdata -o nfsvers=4.2,timeo=14,intr
      
    • Para comprobar que el montaje se ha realizado correctamente, envíe mount sin modificadores.

    • Escriba exit para dejar de ser el superusuario.

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

      Captura de pantalla del comando sqlcmd y la respuesta al comando.

    • Desmontaje del recurso compartido

      sudo umount <IPAddressOfNFSServer>:<FolderOnNFSServer> <FolderToMountIn>
      
      • <IPAddressOfNFSServer> es la dirección IP del servidor NFS que se va a usar
      • <FolderOnNFSServer> es el nombre del recurso compartido de NFS.
      • <FolderMountedIn> es la carpeta creada en el paso anterior.
  5. Repita los pasos en los demás nodos.