Freigeben über


Konfigurieren eines SMB-Speichers für eine Failoverclusterinstanz: SQL Server für Linux

Gilt für: SQL Server – Linux

In diesem Artikel wird erklärt, wie Sie einen SMB-Speicher für eine Failoverclusterinstanz (FCI) unter Linux konfigurieren.

Bei Anwendern, die kein Windows verwenden, wird SMB auch als CIFS-Freigabe (Common Internet File System) bezeichnet und über Samba implementiert. In der Windows-Welt erfolgt der Zugriff auf eine SMB-Freigabe folgendermaßen: \\SERVERNAME\SHARENAME. Bei Linux-basierten SQL Server-Installationen muss die SMB-Freigabe als Ordner eingebunden werden.

Wichtige Informationen zu Quelle und Server

Im Folgenden finden Sie einige Tipps und Hinweise für eine erfolgreiche Verwendung von SMB:

  • Die SMB-Freigabe kann sich auf Windows, Linux oder sogar einer Appliance befinden, solange sie SMB 3.0 oder spätere Versionen verwendet. Weitere Informationen zu Samba und SMB 3.0 finden Sie unter SMB 3.0. Dort erfahren Sie auch, ob Ihre Samba-Implementierung mit SMB 3.0 kompatibel ist.
  • Die SMB-Freigabe sollte hoch verfügbar sein.
  • Die Sicherheit muss in der SMB-Freigabe ordnungsgemäß festgelegt werden. Im Folgenden finden Sie ein Beispiel aus /etc/samba/smb.conf, wobei SQLData der Name der Freigabe ist.
[SQLData]
path=/var/smb/SQLData
read only = no
browseable = yes
guest ok = no
writeable = yes
valid users = SQLSambaUser

Anweisungen

  1. Wählen Sie einen der Server aus, der an der FCI-Konfiguration beteiligt sein wird. Es spielt keine Rolle, welchen Sie auswählen.

  2. Rufen Sie Informationen zum mssql-Benutzer ab.

     sudo id mssql
    

    Notieren Sie sich die uid, gid und Gruppen.

  3. Führen Sie sudo smbclient -L //NameOrIP/ShareName -U User aus.

    • <NameOrIP> ist der DNS-Name oder die IP-Adresse des Servers, auf dem die SMB-Freigabe gehostet wird.
    • <ShareName> ist der Name der SMB-Freigabe.
  4. Befolgen Sie für Systemdatenbanken oder Daten, die am Standardspeicherort gespeichert sind, die folgenden Schritte. Fahren Sie andernfalls mit Schritt 5 fort.

    1. Stellen Sie sicher, dass SQL Server auf dem Server beendet wurde, auf dem Sie arbeiten.

      sudo systemctl stop mssql-server
      sudo systemctl status mssql-server
      
    2. Wechseln Sie vollständig zum Superuser.

      sudo -i
      
    3. Wechseln Sie zum Benutzer mssql.

      su mssql
      
    4. Erstellen Sie ein temporäres Verzeichnis, in dem Sie die SQL Server-Daten und -Protokolldateien speichern.

      mkdir <TempDir>
      
      • <TempDir> ist der Name des Ordners. Im folgenden Beispiel wird ein Ordner namens /var/opt/mssql/tmp erstellt.
      mkdir /var/opt/mssql/tmp
      
    5. Kopieren Sie die SQL Server-Daten und -Protokolldateien in das temporäre Verzeichnis.

      cp /var/opt/mssql/data/* <TempDir>
      
      • <TempDir> ist der Name des Ordners aus dem vorherigen Schritt.
    6. Stellen Sie sicher, dass sich die Dateien im Verzeichnis befinden.

      ls <TempDir>
      

      <TempDir> ist der Name des Ordners aus Schritt d.

    7. Löschen Sie die Dateien aus dem vorhandenen SQL Server-Datenverzeichnis.

      rm - f /var/opt/mssql/data/*
      
    8. Stellen Sie sicher, dass die Dateien gelöscht wurden.

      ls /var/opt/mssql/data
      
    9. Geben Sie „exit“ ein, um zum Root-Benutzer zurück zu wechseln.

    10. Binden Sie die SMB-Freigabe in den SQL Server-Datenordner ein. Dieses Beispiel zeigt die Syntax zum Herstellen einer Verbindung mit einer Windows Server-basierten SMB 3.0-Freigabe.

      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> ist der Name des Servers mit der SMB-Freigabe.
      • <ShareName> ist der Name der Freigabe.
      • <UserName> ist der Name des Benutzers, der auf die Freigabe zugreifen soll.
      • <Password> ist das Kennwort des Benutzers.
      • <domain> ist der Name der Active Directory-Domäne.
      • <mssqlUID> ist die Benutzer-ID des mssql-Benutzers
      • <mssqlGID> ist die GID des mssql-Benutzers
    11. Überprüfen Sie, ob die Einbindung erfolgreich war, indem Sie „mount“ ohne Parameter ausgeben.

      mount
      
    12. Wechseln Sie zum Benutzer mssql.

      su mssql
      
    13. Kopieren Sie die Dateien aus dem temporären Verzeichnis /var/opt/mssql/data.

      cp /var/opt/mssql/tmp/* /var/opt/mssql/data
      
    14. Stellen Sie sicher, dass die Dateien vorhanden sind.

      ls /var/opt/mssql/data
      
    15. Geben Sie exit ein, um nicht mssql zu sein.

    16. Geben Sie exit ein, um nicht root zu sein.

    17. Starten Sie SQL Server. Wenn alles richtig kopiert wurde und die Sicherheitsmaßnahmen ordnungsgemäß angewendet wurden, sollte SQL Server als gestartet angezeigt werden.

      sudo systemctl start mssql-server
      sudo systemctl status mssql-server
      
    18. Erstellen Sie zum weiteren Testen eine Datenbank, um sicherzustellen, dass die Berechtigungen in Ordnung sind. Im folgenden Beispiel wird Transact-SQL verwendet. Sie können SSMS verwenden.

      Screenshot: Erstellung der Testdatenbank

    19. Beenden Sie SQL Server, und vergewissern Sie sich, dass die Serverinstanz heruntergefahren wurde. Wenn Sie weitere Datenträger hinzufügen oder testen möchten, fahren Sie SQL Server erst herunter, wenn diese Datenträger hinzugefügt und getestet wurden.

      sudo systemctl stop mssql-server
      sudo systemctl status mssql-server
      
    20. Heben Sie die Einbindung der Freigabe nur auf, wenn Sie fertig sind. Falls nicht, heben Sie die Einbindung auf, nachdem Sie mit dem Testen bzw. Hinzufügen weiterer Datenträger fertig sind.

      sudo umount //<IPAddressorServerName>/<ShareName /<FolderMountedIn>
      
      • <IPAddressOrServerName> ist die IP-Adresse oder der Name des SMB-Hosts.
      • <ShareName> ist der Name der Freigabe.
      • <FolderMountedIn> ist der Name des Ordners, in den SMB eingebunden ist.
  5. Führen Sie folgende Schritte aus, wenn es nicht um Systemdatenbanken, sondern um Benutzerdatenbanken oder Sicherungen geht. Wenn nur der Standardspeicherort verwendet wird, können Sie mit Schritt 14 fortfahren.

    1. Wechseln Sie zum Superuser.

      sudo -i
      
    2. Erstellen Sie einen Ordner, der von SQL Server verwendet wird.

      mkdir <FolderName>
      

      <FolderName> ist der Name des Ordners. Wenn sich der Ordner nicht am richtigen Speicherort befindet, muss der vollständige Pfad angegeben werden. Im folgenden Beispiel wird ein Ordner namens /var/opt/mssql/userdata erstellt.

      mkdir /var/opt/mssql/userdata
      
    3. Binden Sie die SMB-Freigabe in den SQL Server-Datenordner ein. Dieses Beispiel zeigt die Syntax zum Herstellen einer Verbindung mit einer Samba-basierten SMB 3.0-Freigabe.

      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> ist der Name des Servers mit der SMB-Freigabe.
      • <ShareName> ist der Name der Freigabe.
      • <FolderName> ist der Name des Ordners, der im letzten Schritt erstellt wurde.
      • <UserName> ist der Name des Benutzers, der auf die Freigabe zugreifen soll.
      • <Password> ist das Kennwort des Benutzers.
      • <mssqlUID> ist die Benutzer-ID des mssql-Benutzers
      • <mssqlGID> ist die GID des mssql-Benutzers.
    4. Überprüfen Sie, ob die Einbindung erfolgreich war, indem Sie „mount“ ohne Parameter ausgeben.

    5. Geben Sie „exit“ ein, um nicht mehr der Superuser zu sein.

    6. Erstellen Sie eine Datenbank in diesem Ordner, um dies zu testen. Im folgenden Beispiel wird „sqlcmd“ verwendet, um eine Datenbank zu erstellen, den Kontext zu wechseln und zu überprüfen, ob die Dateien auf der Betriebssystemebene vorhanden sind. Anschließend wird der temporäre Speicherort gelöscht. Sie können SSMS verwenden.

    7. Heben Sie die Einbindung der Freigabe auf.

      sudo umount //<IPAddressorServerName>/<ShareName> /<FolderMountedIn>
      
      • <IPAddressOrServerName> ist die IP-Adresse oder der Name des SMB-Hosts.
      • <ShareName> ist der Name der Freigabe.
      • <FolderMountedIn> ist der Name des Ordners, in den SMB eingebunden ist.
  6. Wiederholen Sie die Schritte auf dem oder den anderen Knoten.

Sie können die Failoverclusterinstanz nun konfigurieren.