Partager via


Configurez l’instance de cluster de basculement de stockage SMB - SQL Server sur Linux

S’applique à : SQL Server - Linux

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

Dans le monde non Windows, SMB est souvent appelé partage CIFS (Common Internet File System) et implémenté via Samba. Dans le monde de Windows, l’accès à un partage SMB est effectué de la façon suivante : \\SERVERNAME\SHARENAME. Pour les installations SQL Server basées sur Linux, le partage SMB doit être monté en tant que dossier.

Informations importantes sur la source et le serveur

Voici quelques conseils et remarques pour l’utilisation réussie de SMB :

  • Le partage SMB peut être sur Windows, Linux ou même à partir d’une appliance, à condition qu’il utilise SMB 3.0 ou une version ultérieure. Pour plus d’informations sur Samba et SMB 3.0, consultez SMB 3.0 pour voir si votre implémentation Samba est conforme à SMB 3.0.
  • Le partage SMB doit être hautement disponible.
  • La sécurité doit être correctement définie sur le partage SMB. Voici un exemple de /etc/samba/smb.conf, où SQLData est le nom du partage.
[SQLData]
path=/var/smb/SQLData
read only = no
browseable = yes
guest ok = no
writeable = yes
valid users = SQLSambaUser

Instructions

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

  2. Obtenez des informations sur l'utilisateur mssql.

     sudo id mssql
    

    Notez les uid et gid et les groupes.

  3. Exécutez sudo smbclient -L //NameOrIP/ShareName -U User.

    • <NameOrIP> est le nom DNS ou l’adresse IP du serveur hébergeant le partage SMB.
    • <ShareName> est le nom du partage SMB.
  4. 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 5.

    1. 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
      
    2. Basculez entièrement pour être le superutilisateur.

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

      su mssql
      
    4. 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
      
    5. 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.
    6. Vérifiez que les fichiers se trouvent dans le répertoire.

      ls <TempDir>
      

      <TempDir> est le nom du dossier de l’étape d.

    7. Supprimez les fichiers du répertoire de données SQL Server existant.

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

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

    10. Montez le partage SMB dans le dossier de données de SQL Server. Cet exemple illustre la syntaxe de connexion à un partage SMB 3.0 basé sur 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> est le nom du serveur avec le partage SMB
      • <ShareName> est le nom du partage
      • <UserName> est le nom de l’utilisateur pour accéder au partage
      • <Password> est le mot de passe de l’utilisateur
      • <domain> est le nom d’Active Directory
      • <mssqlUID> est l’UID de l’utilisateur mssql
      • <mssqlGID> est le GID de l’utilisateur mssql
    11. Vérifiez que le montage a réussi en émettant un montage sans commutateurs.

      mount
      
    12. Changez pour être l’utilisateur mssql.

      su mssql
      
    13. Copiez les fichiers à partir de l’annuaire temporaire /var/opt/mssql/data.

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

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

    16. Entrez exit pour ne pas être root.

    17. 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
      
    18. Pour effectuer des tests supplémentaires, créez une base de données pour vous assurer que les autorisations sont correctes. L’exemple suivant utilise Transact-SQL ; vous pouvez utiliser SSMS.

      Capture d'écran montrant la création de la base de données de test.

    19. Arrêtez SQL Server et vérifiez qu’il est arrêté. Si vous envisagez d’ajouter ou de tester d’autres disques, n’arrêtez pas SQL Server tant que ceux-ci n’ont pas été ajoutés ni testés.

      sudo systemctl stop mssql-server
      sudo systemctl status mssql-server
      
    20. Démontez le partage uniquement si vous avez terminé. Si ce n’est pas le cas, démontez-le après avoir terminé de tester ou d’ajouter des disques supplémentaires.

      sudo umount //<IPAddressorServerName>/<ShareName /<FolderMountedIn>
      
      • <IPAddressOrServerName> est l’adresse IP ou le nom de l’hôte SMB
      • <ShareName> est le nom du partage
      • <FolderMountedIn> est le nom du dossier dans lequel SMB est monté
  5. 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 14.

    1. Basculez pour être le superutilisateur.

      sudo -i
      
    2. 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
      
    3. Montez le partage SMB dans le dossier de données de SQL Server. Cet exemple illustre la syntaxe de connexion à un partage SMB 3.0 basé sur 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> est le nom du serveur avec le partage SMB
      • <ShareName> est le nom du partage
      • <FolderName> est le nom du dossier créé à la dernière étape
      • <UserName> est le nom de l’utilisateur pour accéder au partage
      • <Password> est le mot de passe de l’utilisateur
      • <mssqlUID> est l’UID de l’utilisateur mssql
      • <mssqlGID> est le GID de l’utilisateur mssql.
    4. Vérifiez que le montage a réussi en émettant un montage sans commutateurs.

    5. Tapez Quitter pour ne plus être le superutilisateur.

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

    7. Démonter le partage

      sudo umount //<IPAddressorServerName>/<ShareName> /<FolderMountedIn>
      
      • <IPAddressOrServerName> est l’adresse IP ou le nom de l’hôte SMB
      • <ShareName> est le nom du partage
      • <FolderMountedIn> est le nom du dossier dans lequel SMB est monté
  6. Répétez les étapes pour l'autre ou les autres nœuds.

Vous êtes maintenant prêt à configurer l’instance FCI.