Teilen über


Konfigurieren einer Failoverclusterinstanz (NFS): SQL Server für Linux

Gilt für: SQL Server – Linux

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

Ein Network File System (NFS) ist ein gängiger Weg zum Freigeben von Datenträgern unter Linux, jedoch nicht unter Windows. Ähnlich wie iSCSI kann ein NFS auf einem Server, auf einem Gerät oder einer Speichereinheit konfiguriert werden, sofern die Speicheranforderungen für SQL Server eingehalten werden.

Wichtige Informationen zum NFS-Server

Die Quelle, die das NFS hostet, z. B. ein Linux-Server, muss Version 4.2 oder höher verwenden oder damit kompatibel sein. Frühere Versionen funktionieren mit SQL Server für Linux nicht.

Beachten Sie beim Konfigurieren des Ordners/der Ordner, die auf dem NFS-Server freigegeben werden sollen, Folgendes:

  • rw ist erforderlich, damit aus dem Ordner gelesen und in den Ordner geschrieben werden kann
  • sync ist erforderlich für garantierte Schreibvorgänge in den Ordner
  • Verwenden Sie no_root_squash nicht als Option, da dies ein Sicherheitsrisiko darstellt
  • Für den Ordner muss Vollzugriff (777) eingerichtet sein

Stellen Sie sicher, dass Ihre Sicherheitsstandards für den Zugriff erzwungen werden. Achten Sie beim Konfigurieren des Ordners darauf, dass nur die an der FCI beteiligten Server den NFS-Ordner sehen können. Im folgenden Beispiel wird ein modifiziertes /etc/exports auf einer Linux-basierten NFS-Lösung gezeigt, bei der der Ordner auf FCIN1 und FCIN2 beschränkt ist.

# /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)

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. Stellen Sie sicher, dass der Server die Einbindung/en auf dem NFS-Server sehen kann.

    sudo showmount -e <IPAddressOfNFSServer>
    
    • <IPAddressOfNFSServer> ist die IP-Adresse des NFS-Servers, den Sie verwenden werden.
  3. Befolgen Sie für Systemdatenbanken oder Daten, die am Standardspeicherort gespeichert sind, die folgenden Schritte. Fahren Sie andernfalls mit Schritt 4 fort.

    • 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
      
    • Wechseln Sie vollständig zum Superuser.

      sudo -i
      
    • Wechseln Sie zum Benutzer mssql.

      su mssql
      
    • 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
      
    • 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.
    • Stellen Sie sicher, dass sich die Dateien im Verzeichnis befinden.

      ls TempDir
      
      • <TempDir> ist der Name des Ordners aus dem vorherigen Schritt.
    • Löschen Sie die Dateien aus dem vorhandenen SQL Server-Datenverzeichnis.

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

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

    • Binden Sie die NFS-Freigabe in den SQL Server-Datenordner ein.

      mount -t nfs4 <IPAddressOfNFSServer>:<FolderOnNFSServer> /var/opt/mssql/data -o nfsvers=4.2,timeo=14,intr
      
      • <IPAddressOfNFSServer> ist die IP-Adresse des NFS-Servers, den Sie verwenden werden
      • <FolderOnNFSServer> ist der Name der NFS-Freigabe. Die folgende Beispielsyntax entspricht den NFS-Informationen aus Schritt 2.
      mount -t nfs4 10.201.202.63:/var/nfs/fci1 /var/opt/mssql/data -o nfsvers=4.2,timeo=14,intr
      
    • Überprüfen Sie, ob die Einbindung erfolgreich war, indem Sie „mount“ ohne Parameter ausgeben.

      mount
      

      Folgende Ausgabe wird erwartet.

      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)
      
    • Wechseln Sie zum Benutzer mssql.

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

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

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

    • Geben Sie für exit nicht „root“ ein.

    • 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
      
    • Erstellen Sie eine Datenbank, um zu testen, ob die Sicherheit richtig eingerichtet wurde. Im folgenden Beispiel geschieht dies über Transact-SQL, es ist jedoch auch über SSMS möglich.

      Screenshot: Erstellen einer Testdatenbank

    • Beenden Sie SQL Server, und vergewissern Sie sich, dass die Serverinstanz heruntergefahren wurde.

      sudo systemctl stop mssql-server
      sudo systemctl status mssql-server
      
    • Heben Sie die Einbindung der Freigabe auf, wenn Sie keine weiteren NFS-Freigaben erstellen. Heben Sie andernfalls die Freigabe nicht auf.

      sudo umount <IPAddressOfNFSServer>:<FolderOnNFSServer> <FolderToMountIn>
      
      • <IPAddressOfNFSServer> ist die IP-Adresse des NFS-Servers, den Sie verwenden werden
      • <FolderOnNFSServer> ist der Name der NFS-Freigabe.
      • <FolderMountedIn> ist der Ordner, der im vorherigen Schritt erstellt wurde.
  4. 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 5 fortfahren.

    • Wechseln Sie zum Superuser.

      sudo -i
      
    • 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
      
    • Binden Sie die NFS-Freigabe in den Ordner ein, der im vorherigen Schritt erstellt wurde.

      mount -t nfs4 <IPAddressOfNFSServer>:<FolderOnNFSServer> <FolderToMountIn> -o nfsvers=4.2,timeo=14,intr
      
      • <IPAddressOfNFSServer> ist die IP-Adresse des NFS-Servers, den Sie verwenden werden
      • <FolderOnNFSServer> ist der Name der NFS-Freigabe.
      • <FolderToMountIn> ist der Ordner, der im vorherigen Schritt erstellt wurde.

      Im folgenden Beispiel wird die NFS-Freigabe eingehängt.

      mount -t nfs4 10.201.202.63:/var/nfs/fci2 /var/opt/mssql/userdata -o nfsvers=4.2,timeo=14,intr
      
    • Überprüfen Sie, ob die Einbindung erfolgreich war, indem Sie „mount“ ohne Parameter ausgeben.

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

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

      Screenshot: sqlcmd-Befehl und Antwort darauf

    • Heben Sie die Einbindung der Freigabe auf.

      sudo umount <IPAddressOfNFSServer>:<FolderOnNFSServer> <FolderToMountIn>
      
      • <IPAddressOfNFSServer> ist die IP-Adresse des NFS-Servers, den Sie verwenden werden
      • <FolderOnNFSServer> ist der Name der NFS-Freigabe.
      • <FolderMountedIn> ist der Ordner, der im vorherigen Schritt erstellt wurde.
  5. Wiederholen Sie die Schritte auf dem oder den anderen Knoten.