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
, wobeiSQLData
der Name der Freigabe ist.
[SQLData]
path=/var/smb/SQLData
read only = no
browseable = yes
guest ok = no
writeable = yes
valid users = SQLSambaUser
Anweisungen
Wählen Sie einen der Server aus, der an der FCI-Konfiguration beteiligt sein wird. Es spielt keine Rolle, welchen Sie auswählen.
Rufen Sie Informationen zum
mssql
-Benutzer ab.sudo id mssql
Notieren Sie sich die
uid
,gid
und Gruppen.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.
Befolgen Sie für Systemdatenbanken oder Daten, die am Standardspeicherort gespeichert sind, die folgenden Schritte. Fahren Sie andernfalls mit Schritt 5 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 Schritt d.
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 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 desmssql
-Benutzers<mssqlGID>
ist die GID desmssql
-Benutzers
Überprüfen Sie, ob die Einbindung erfolgreich war, indem Sie „mount“ ohne Parameter ausgeben.
mount
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/mssql/data
Stellen Sie sicher, dass die Dateien vorhanden sind.
ls /var/opt/mssql/data
Geben Sie
exit
ein, um nichtmssql
zu sein.Geben Sie
exit
ein, um nichtroot
zu sein.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 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.
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
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.
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.
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 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 desmssql
-Benutzers<mssqlGID>
ist die GID desmssql
-Benutzers.
Ü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 //<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.
Wiederholen Sie die Schritte auf dem oder den anderen Knoten.
Sie können die Failoverclusterinstanz nun konfigurieren.