Configurer l’instance de cluster de basculement - NFS - SQL Server sur Linux

S’applique à : SQL Server - Linux

Cet article explique comment configurer le stockage NFS pour une instance de cluster de basculement (FCI) sur Linux.

NFS (Network File System) est une méthode courante pour partager des disques dans le monde Linux, mais pas dans Windows. À l’instar d’iSCSI, NFS peut être configuré sur un serveur ou une sorte d’appliance ou d’unité de stockage, à condition qu’il réponde aux exigences de stockage de SQL Server.

Informations importantes sur le serveur NFS

Le NFS d’hébergement source (un serveur Linux ou autre) doit utiliser/être conforme à la version 4.2 ou ultérieure. Des versions antérieures ne fonctionnent pas avec SQL Server sur Linux.

Quand vous configurez le ou les dossiers à partager sur le serveur NFS, assurez-vous qu’ils respectent les instructions générales suivantes :

  • rw pour vous assurer que le dossier peut être lu et écrit
  • sync pour garantir que les écritures sont garanties dans le dossier
  • N’utilisez pas no_root_squash comme option ; cela est considéré comme un risque pour la sécurité
  • Assurez-vous que le dossier dispose des droits complets (777) appliqués

Assurez-vous que vos normes de sécurité sont appliquées pour l’accès. Quand vous configurez le dossier, assurez-vous que seuls les serveurs participant à l’instance de cluster de basculement peuvent consulter le dossier NFS. Dans l’exemple suivant, une modification /etc/exports sur une solution NFS basée sur Linux s’affiche, où le dossier est limité à FCIN1 et 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)

Instructions

  1. Choisissez un des serveurs qui fera partie de la configuration de l’instance de cluster de basculement. Peu importe lequel.

  2. Vérifiez que le serveur peut voir le ou les montages sur le serveur NFS.

    sudo showmount -e <IPAddressOfNFSServer>
    
    • <IPAddressOfNFSServer> est l’adresse IP du serveur NFS que vous allez utiliser.
  3. Pour les bases de données système ou tout ce qui est stocké dans l’emplacement des données par défaut, procédez comme suit. Sinon, ignorez l’étape 4.

    • Assurez-vous que SQL Server est arrêté sur le serveur sur lequel vous travaillez.

      sudo systemctl stop mssql-server
      sudo systemctl status mssql-server
      
    • Basculez entièrement pour être le superutilisateur.

      sudo -i
      
    • Changez pour être l’utilisateur mssql.

      su mssql
      
    • Créez un répertoire temporaire pour stocker les données et les fichiers journaux SQL Server.

      mkdir <TempDir>
      
      • <TempDir> est le nom du dossier. L’exemple suivant permet de créer un dossier nommé /var/opt/mssql/tmp.
      mkdir /var/opt/mssql/tmp
      
    • Copiez les données et les fichiers journaux de SQL Server dans le répertoire temporaire.

      cp /var/opt/mssql/data/* <TempDir>
      
      • <TempDir> est le nom du dossier de l’étape précédente.
    • Vérifiez que les fichiers se trouvent dans le répertoire.

      ls TempDir
      
      • <TempDir> est le nom du dossier de l’étape précédente.
    • Supprimez les fichiers du répertoire de données SQL Server existant.

      rm - f /var/opt/mssql/data/*
      
    • Vérifiez que les fichiers ont été supprimés.

      ls /var/opt/mssql/data
      
    • Tapez Quitter pour revenir à l’utilisateur racine.

    • Montez le partage SMB dans le dossier de données SQL Server.

      mount -t nfs4 <IPAddressOfNFSServer>:<FolderOnNFSServer> /var/opt/mssql/data -o nfsvers=4.2,timeo=14,intr
      
      • <IPAddressOfNFSServer> est l’adresse IP du serveur NFS que vous allez utiliser
      • <FolderOnNFSServer> est le nom du partage NFS. L’exemple de syntaxe suivant correspond aux informations NFS de l’étape 2.
      mount -t nfs4 10.201.202.63:/var/nfs/fci1 /var/opt/mssql/data -o nfsvers=4.2,timeo=14,intr
      
    • Vérifiez que le montage a réussi en émettant un montage sans commutateurs.

      mount
      

      Voici la sortie attendue.

      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)
      
    • Changez pour être l’utilisateur mssql.

      su mssql
      
    • Copiez les fichiers à partir du répertoire temporaire /var/opt/mssql/data.

      cp /var/opt/mssql/tmp/* /var/opt/mssqldata
      
    • Vérifiez que les fichiers sont présents.

      ls /var/opt/mssql/data
      
    • Entrez exit pour ne pas être mssql.

    • Entrez exit pour ne pas être la racine.

    • Démarrez SQL Server. Si tout a été copié correctement et que la sécurité est appliquée correctement, SQL Server doit s’afficher comme étant démarré.

      sudo systemctl start mssql-server
      sudo systemctl status mssql-server
      
    • Créez une base de données pour vérifier que la sécurité est configurée correctement. L’exemple suivant explique le processus via Transact-SQL ; vous pouvez le faire via SSMS.

      Capture d’écran montrant comment créer une base de données de test.

    • Arrêtez SQL Server et vérifiez qu’il est arrêté.

      sudo systemctl stop mssql-server
      sudo systemctl status mssql-server
      
    • Si vous ne créez aucun autre montage NFS, démontez le partage. Si c’est le cas, ne démontez pas.

      sudo umount <IPAddressOfNFSServer>:<FolderOnNFSServer> <FolderToMountIn>
      
      • <IPAddressOfNFSServer> est l’adresse IP du serveur NFS que vous allez utiliser
      • <FolderOnNFSServer> est le nom du partage NFS
      • <FolderMountedIn> est le dossier créé à l’étape précédente.
  4. Pour des éléments autres que les bases de données système, tels que les bases de données utilisateur ou les sauvegardes, procédez comme suit. Si vous utilisez uniquement l’emplacement par défaut, passez à l’étape 5.

    • Basculez pour être le superutilisateur.

      sudo -i
      
    • Créez un dossier qui sera utilisé par SQL Server.

      mkdir <FolderName>
      
      • <FolderName> est le nom du dossier. Le chemin d’accès complet du dossier doit être spécifié s’il n’est pas à l’emplacement approprié.

      L’exemple suivant permet de créer un dossier nommé /var/opt/mssql/userdata.

      mkdir /var/opt/mssql/userdata
      
    • Montez le partage NFS dans le dossier créé à l’étape précédente.

      mount -t nfs4 <IPAddressOfNFSServer>:<FolderOnNFSServer> <FolderToMountIn> -o nfsvers=4.2,timeo=14,intr
      
      • <IPAddressOfNFSServer> est l’adresse IP du serveur NFS que vous allez utiliser
      • <FolderOnNFSServer> est le nom du partage NFS
      • <FolderToMountIn> est le dossier créé à l’étape précédente.

      L’exemple suivant monte le partage NFS.

      mount -t nfs4 10.201.202.63:/var/nfs/fci2 /var/opt/mssql/userdata -o nfsvers=4.2,timeo=14,intr
      
    • Vérifiez que le montage a réussi en émettant un montage sans commutateurs.

    • Tapez Quitter pour ne plus être le superutilisateur.

    • Pour tester, créez une base de données dans ce dossier. L’exemple suivant utilise sqlcmd pour créer une base de données, en changer le contexte, vérifier que les fichiers existent au niveau du système d’exploitation, puis supprime l’emplacement temporaire. Vous pouvez utiliser SSMS.

      Capture d’écran de la commande sqlcmd et de la réponse à la commande.

    • Démonter le partage

      sudo umount <IPAddressOfNFSServer>:<FolderOnNFSServer> <FolderToMountIn>
      
      • <IPAddressOfNFSServer> est l’adresse IP du serveur NFS que vous allez utiliser
      • <FolderOnNFSServer> est le nom du partage NFS
      • <FolderMountedIn> est le dossier créé à l’étape précédente.
  5. Répétez les étapes pour l'autre ou les autres nœuds.