Anmerkung
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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:
-
rwum sicherzustellen, dass der Ordner gelesen und beschrieben werden kann -
syncum garantierte Schreibzugriffe auf den Ordner zu gewährleisten - Verwenden Sie
no_root_squashnicht 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.
Ü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.
-
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-serverWechseln Sie vollständig zum Superuser.
sudo -iWechseln Sie zum
mssqlBenutzer.su mssqlErstellen 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/tmperstellt.
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/dataGeben 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.
mountDie 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 mssqlKopieren Sie die Dateien aus dem temporären Verzeichnis „/var/opt/mssql/data“.
cp /var/opt/mssql/tmp/* /var/opt/mssqldataStellen Sie sicher, dass die Dateien vorhanden sind.
ls /var/opt/mssql/dataGeben Sie
exitein, um nichtmssqlzu sein.Geben Sie für
exitnicht „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-serverErstellen 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.
Stoppen Sie SQL Server und überprüfen Sie, ob er heruntergefahren wurde.
sudo systemctl stop mssql-server sudo systemctl status mssql-serverHeben 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.
-
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 -iErstellen 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/userdataerstellt.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.
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.
-
Wiederholen Sie die Schritte auf den anderen Netzwerkknoten.