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 kannsync
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
Wählen Sie einen der Server aus, der an der FCI-Konfiguration beteiligt sein wird. Es spielt keine Rolle, welchen Sie auswählen.
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.
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 nichtmssql
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.
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.
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.
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.
Wiederholen Sie die Schritte auf dem oder den anderen Knoten.