Teilen über


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

Gilt für:SQL Server unter 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.

Stellen Sie beim Konfigurieren der Ordner, die auf dem NFS-Server freigegeben werden sollen, sicher, dass sie den folgenden allgemeinen Richtlinien entsprechen:

  • rw um sicherzustellen, dass der Ordner gelesen und beschrieben werden kann
  • sync um garantierte Schreibzugriffe auf den Ordner zu gewährleisten
  • 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. Überprüfen Sie, ob der Server die Mounts 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 mssql Benutzer.

      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
      

      Die erwartete Ausgabe sieht folgendermaßen aus.

      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. Das folgende Beispiel zeigt, dass dies über Transact-SQL erfolgt. Sie kann auch über SQL Server Management Studio (SSMS) erfolgen.

      Screenshot: Erstellen einer Testdatenbank

    • Stoppen Sie SQL Server und überprüfen Sie, ob er 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. Wenn Sie andere Verbindungsvorgänge erstellen, trennen Sie sie nicht.

      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 im vorherigen Schritt erstellte Ordner.
  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 im vorherigen Schritt erstellte Ordner.

      Im folgenden Beispiel wird die NFS-Freigabe bereitgestellt.

      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 im vorherigen Schritt erstellte Ordner.
  5. Wiederholen Sie die Schritte auf den anderen Netzwerkknoten.