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 ellasync
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
Elija uno de los servidores que participarán en la configuración de la FCI. No importa el que elija.
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.
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 sermssql
.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.
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.
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.
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.
Repita los pasos en los demás nodos.