Hinweis
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 einen iSCSI-Speicher für eine Failoverclusterinstanz (FCI) unter Linux konfigurieren.
Konfigurieren von iSCSI
iSCSI verwendet Netzwerke, um Datenträger von einem Server darzustellen, der für andere Server als Zielserver gilt. Die Server, die eine Verbindung mit dem iSCSI-Ziel herstellen, erfordern einen konfigurierten iSCSI-Initiator. Die Datenträger auf dem Ziel erhalten explizite Berechtigungen, sodass nur die Initiatoren, die darauf zugreifen dürfen, dies auch tun können. Das Ziel selbst sollte hochverfügbar und zuverlässig sein.
Wichtige Informationen über das iSCSI-Ziel
In diesem Abschnitt wird zwar nicht beschrieben, wie das iSCSI-Ziel konfiguriert wird, da dies von dem Typ der Quelle abhängt, die Sie verwenden möchten, jedoch wird sichergestellt, dass die Sicherheit für die von den Clusterknoten verwendeten Datenträger konfiguriert wird.
Das Ziel sollte nie auf einem der FCI-Nodes konfiguriert werden, wenn ein Linux-basiertes iSCSI-Ziel verwendet wird. iSCSI-Netzwerke sollten separat von den Netzwerken sein, die vom regulären Netzwerkdatenverkehr der Quell- und Clientserver verwendet werden, um die Leistung und Verfügbarkeit zu verbessern. Die Netzwerke, die für iSCSI verwendet werden, sollten schnell sein. Denken daran, dass Netzwerke eine gewisse Prozessorbandbreite beanspruchen. Planen Sie daher entsprechend, wenn Sie einen herkömmlichen Server verwenden.
Das Wichtigste, was auf dem Ziel sichergestellt werden muss, ist, dass die erstellten Datenträger mit den richtigen Berechtigungen versehen werden, damit nur die Server Zugriff haben, die an der FCI beteiligt sind. Hier sehen Sie ein Beispiel aus dem Microsoft iSCSI-Ziel, bei dem linuxnodes1 der erstellte Name ist und die IP-Adressen der Knoten so zugewiesen werden, dass NewFCIDisk1.vhdx ihnen erscheint.
Anweisungen
In diesem Abschnitt wird beschrieben, wie ein iSCSI-Initiator auf den Servern konfiguriert wird, die als Knoten für die FCI (Failoverclusterinstanz) dienen. Die Anweisungen sollten sowohl für Red Hat Enterprise Linux (RHEL) als auch für Ubuntu funktionieren.
Weitere Informationen zum iSCSI-Initiator für die unterstützten Verteilungen finden Sie unter folgenden Links:
Hinweis
Ab SQL Server 2025 (17.x) wird SUSE Linux Enterprise Server (SLES) nicht unterstützt.
Wählen Sie einen der Server aus, der an der FCI-Konfiguration beteiligt sein wird. Es spielt keine Rolle, welchen Sie auswählen. iSCSI sollte sich auf einem dedizierten Netzwerk befinden, konfigurieren Sie iSCSI also so, dass das Netzwerk erkannt und verwendet wird. Führen Sie
sudo iscsiadm -m iface -I <iSCSIIfaceName> -o newaus, wobei<iSCSIIfaceName>dem eindeutigen oder dem Anzeigenamen des Netzwerks entspricht. Im folgenden Beispiel wirdiSCSINICverwendet:sudo iscsiadm -m iface -I iSCSINIC -o newHier ist die erwartete Ausgabe.
New interface iSCSINIC addedBearbeite
/var/lib/iscsi/ifaces/iSCSIIfaceName. Stellen Sie sicher, dass die folgenden Werte vollständig ausgefüllt sind:-
iface.net_ifacenameentspricht dem Namen der Netzwerkkarte, die im Betriebssystem angezeigt wird. -
iface.hwaddressist die MAC-Adresse des eindeutigen Namens, der für die folgende Schnittstelle erstellt wird. iface.ipaddressiface.subnet_Mask
Sehen Sie sich folgendes Beispiel an:
-
Suchen Sie das iSCSI-Ziel.
sudo iscsiadm -m discovery -t sendtargets -I <iSCSINetName> -p <TargetIPAddress>:<TargetPort><iSCSINetName>ist der eindeutige bzw. freundliche Name des Netzwerks,<TargetIPAddress>ist die IP-Adresse des iSCSI-Ziels, und<TargetPort>ist der Port des iSCSI-Ziels.Folgende Ausgabe wird erwartet.
10.181.182.1:3260,1 iqn.1991-05.com.contoso:dcl-linuxnodes1-target 10.201.202.1:3260,1 iqn.1991-05.com.contoso:dc1-linuxnodes1-target [2002:b4b5:b601::b4b5:b601]:3260,1 iqn.1991-05.com.contoso:dcl-linuxnodes1-target [2002:8c9:ca01::c8c9:ca01]:3260,1 iqn.1991-05.com.contoso:dcl-linuxnodes1-targetMelden Sie sich beim Ziel an.
sudo iscsiadm -m node -I <iSCSIIfaceName> -p TargetIPAddress -l<iSCSIIfaceName>ist der eindeutige oder aussagekräftige Name des Netzwerks und<TargetIPAddress>ist die IP-Adresse des iSCSI-Ziels.Folgende Ausgabe wird erwartet.
Logging in to [iface: iSCSINIC, target: ian.1991-05.com.contoso:dcl-linuxnodesl-tar get, portal: 10.181.182.1,3260] (multiple) Login to [iface: iSCSINIC, target: ian.1991-05.com.contoso:dcl-linuxnodesl-tar get, portal: 10.181.182.1,3260] successful.Überprüfen Sie, ob eine Verbindung mit dem iSCSI-Ziel besteht.
sudo iscsiadm -m sessionDie Ausgabe sieht etwa folgendermaßen aus:
tcp: [1] 10.105.16.7:3260,1 iqn.1991-05.com.contoso:dcl-linuxnodes1-target (non-flash)Überprüfen Sie die angefügten iSCSI-Datenträger.
sudo grep "Attached SCSI" /var/log/messages
Erstellen Sie ein physisches Volume auf dem iSCSI-Datenträger.
sudo pvcreate /dev/<devicename><devicename>ist der Name des Geräts aus dem vorherigen Schritt.Erstellen Sie eine Volumegruppe auf dem iSCSI-Datenträger. Datenträger, die einer einzelnen Volumegruppe zugewiesen werden, werden als Pool oder Sammlung angezeigt.
sudo vgcreate <VolumeGroupName> /dev/devicename<VolumeGroupName>ist der Name der Volumegruppe, und<devicename>ist der Name des Geräts aus Schritt 6.Erstellen und überprüfen Sie das logische Volume für den Datenträger.
sudo lvcreate -Lsize -n <LogicalVolumeName> <VolumeGroupName><size>ist die Größe des zu erstellenden Volumes und kann in G (Gigabyte), T (Terabyte) usw. angegeben werden.<LogicalVolumeName>ist der Name des logischen Volumes, und<VolumeGroupName>ist der Name der Volumegruppe aus dem vorherigen Schritt.Hier ist die erwartete Ausgabe.
Logical volume "FCIDataLV1" created.Im folgenden Beispiel wird ein 25-GB-Volume erstellt.
Führen Sie
sudo lvsaus, um den erstellten LVM anzuzeigen.Formatieren Sie das logische Volume mit einem unterstützten Dateisystem. Verwenden Sie für ext4 das folgende Beispiel:
sudo mkfs.ext4 /dev/<VolumeGroupName>/<LogicalVolumeName><VolumeGroupName>ist der Name der Volumegruppe aus dem vorherigen Schritt.<LogicalVolumeName>ist der Name des logischen Volumes aus dem vorherigen Schritt.Befolgen Sie für Systemdatenbanken oder Daten, die am Standardspeicherort gespeichert sind, die folgenden Schritte. Fahren Sie andernfalls mit Schritt 13 fort.
Stellen Sie sicher, dass SQL Server auf dem Server beendet wird, an dem Sie arbeiten.
sudo systemctl stop mssql-server sudo systemctl status mssql-serverWechseln Sie vollständig zum Superuser. Wenn dies erfolgreich war, erhalten Sie keine Bestätigung.
sudo -iWechseln Sie zum Benutzer
mssql. Wenn dies erfolgreich war, erhalten Sie keine Bestätigung.su mssqlErstellen Sie ein temporäres Verzeichnis zum Speichern der SQL Server Daten und Protokolldateien. Wenn dies erfolgreich war, erhalten Sie keine Bestätigung.
mkdir <TempDir><TempDir>ist der Name des Ordners. Im folgenden Beispiel wird ein Ordner mit dem Namen „/var/opt/mssql/TempDir“ erstellt.mkdir /var/opt/mssql/TempDirKopieren Sie die SQL Server Daten und Protokolldateien in das temporäre Verzeichnis. Wenn dies erfolgreich war, erhalten Sie keine Bestätigung.
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 den vorherigen Schritte.Löschen Sie die Dateien aus dem vorhandenen SQL Server Datenverzeichnis. Wenn dies erfolgreich war, erhalten Sie keine Bestätigung.
rm - f /var/opt/mssql/data/*Stellen Sie sicher, dass die Dateien gelöscht wurden. Die folgende Abbildung zeigt ein Beispiel für die gesamte Sequenz von Schritt c bis h.
ls /var/opt/mssql/dataGeben Sie
exitein, um zumroot-Benutzer zurück zu wechseln.Stellen Sie das logische iSCSI-Volume im SQL Server-Datenordner fest. Wenn dies erfolgreich war, erhalten Sie keine Bestätigung.
mount /dev/<VolumeGroupName>/<LogicalVolumeName> /var/opt/mssql/data<VolumeGroupName>ist der Name der Volumegruppe, und<LogicalVolumeName>ist der Name des erstellten logischen Volumes. Die folgende Beispielsyntax entspricht der Volumegruppe und dem logischen Volume aus dem vorherigen Befehl.mount /dev/FCIDataVG1/FCIDataLV1 /var/opt/mssql/dataÄndern Sie den Besitzer der Einbindung in
mssql. Wenn dies erfolgreich war, erhalten Sie keine Bestätigung.chown mssql /var/opt/mssql/dataÄndern Sie den Besitz der Gruppe des Einhängepunkts auf
mssql. Wenn dies erfolgreich war, erhalten Sie keine Bestätigung.chgrp mssql /var/opt/mssql/dataWechseln Sie zum Benutzer
mssql. Wenn dies erfolgreich war, erhalten Sie keine Bestätigung.su mssqlKopieren Sie die Dateien aus dem temporären Verzeichnis
/var/opt/mssql/data. Wenn dies erfolgreich war, erhalten Sie keine Bestätigung.cp /var/opt/mssql/TempDir/* /var/opt/mssql/dataStellen Sie sicher, dass die Dateien vorhanden sind.
ls /var/opt/mssql/dataGeben Sie
exitein, um nichtmssqlzu sein.Geben Sie
exitein, um nichtrootzu sein.Starten Sie SQL Server. Wenn alles ordnungsgemäß kopiert wurde und die Sicherheit korrekt angewendet wurde, sollte SQL Server wie gestartet angezeigt werden.
sudo systemctl start mssql-server sudo systemctl status mssql-serverBeenden Sie SQL Server, und stellen Sie sicher, dass sie heruntergefahren wurde.
sudo systemctl stop mssql-server sudo systemctl status mssql-server
Führen Sie folgende Schritte aus, wenn es nicht um Systemdatenbanken, sondern um Benutzerdatenbanken oder Sicherungen geht. Wenn nur der Standardspeicherort verwendet wird, fahren Sie mit Schritt 14 fort.
Wechseln Sie zum Superuser. Wenn dies erfolgreich war, erhalten Sie keine Bestätigung.
sudo -iErstellen Sie einen Ordner, der von SQL Server verwendet werden soll.
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 mit dem Namen „/var/opt/mssql/userdata“ erstellt.mkdir /var/opt/mssql/userdataBinden Sie das logische iSCSI-Volume in den Ordner ein, der im vorherigen Schritt erstellt wurde. Wenn dies erfolgreich war, erhalten Sie keine Bestätigung.
mount /dev/<VolumeGroupName>/<LogicalVolumeName> <FolderName><VolumeGroupName>ist der Name der Volumegruppe,<LogicalVolumeName>ist der Name des erstellten logischen Volumes, und<FolderName>ist der Name des Ordners. Die Beispielsyntax wird hier gezeigt.mount /dev/FCIDataVG2/FCIDataLV2 /var/opt/mssql/userdataÄndern Sie den Eigentümer des erstellten Ordners auf
mssql. Wenn dies erfolgreich war, erhalten Sie keine Bestätigung.chown mssql <FolderName><FolderName>ist der Name des erstellten Ordners. Ein Beispiel ist hier gezeigt.chown mssql /var/opt/mssql/userdataÄndern Sie die Gruppe des erstellten Ordners zu
mssql. Wenn dies erfolgreich war, erhalten Sie keine Bestätigung.chown mssql <FolderName><FolderName>ist der Name des erstellten Ordners. Ein Beispiel ist hier gezeigt.chown mssql /var/opt/mssql/userdataGeben Sie
exitein, um nicht mehr der Superuser zu sein.Erstellen Sie eine Datenbank in diesem Ordner, um dies zu testen. Im folgenden Skript wird eine Datenbank erstellt, der Kontext zu dieser Datenbank gewechselt, geprüft, ob die Dateien auf der Betriebssystemebene existieren, und anschließend der temporäre Speicherort gelöscht. Sie können SSMS oder sqlcmd verwenden, um dieses Skript auszuführen.
DROP DATABASE TestDB; GO CREATE DATABASE TestDB ON (NAME = TestDB_Data, FILENAME = '/var/opt/mssql/userdata/TestDB_Data.mdf') LOG ON (NAME = TestDB_Log, FILENAME = '/var/opt/mssql/userdata/TestDB_Log.ldf'); GO USE TestDB; GOFühren Sie den folgenden Befehl in der Shell aus, um die neuen Datenbankdateien anzuzeigen.
sudo ls /var/opt/mssal/userdataHier ist die erwartete Ausgabe.
lost+found TestDB_Data.mdf TestDB_Log.ldfLöschen Sie die Datenbank, um aufzuräumen.
DROP DATABASE TestDB; GOsudo ls /var/opt/mssal/userdataHier ist die erwartete Ausgabe.
lost+foundHängen Sie die Freigabe aus.
sudo umount /dev/<VolumeGroupName>/<LogicalVolumeName> <FolderName><VolumeGroupName>ist der Name der Volumegruppe,<LogicalVolumeName>ist der Name des erstellten logischen Volumes, und<FolderName>ist der Name des Ordners. Die Beispielsyntax wird hier gezeigt.sudo umount /dev/FCIDataVG2/FCIDataLV2 /var/opt/mssql/userdata
Konfigurieren Sie den Server so, dass nur Pacemaker die Volume-Gruppe aktivieren kann.
sudo lvmconf --enable-halvm --services -startstopservicesErstellen Sie eine Liste der Volumegruppen auf dem Server. Alles, was aufgelistet ist und nicht der iSCSI-Datenträger ist, wird vom System verwendet, z. B. für den Betriebssystemdatenträger.
sudo vgsÄndern Sie den Aktivierungskonfigurationsabschnitt der Datei unter /etc/lvm/lvm.conf. Konfigurieren Sie die folgende Zeile:
volume_list = [ <ListOfVGsNotUsedByPacemaker> ]<ListOfVGsNotUsedByPacemaker>ist die Liste der Volumegruppen aus der Ausgabe von Schritt 20, die nicht von der Failoverclusterinstanz verwendet werden. Setzen Sie sie in Anführungszeichen, und trennen Sie sie durch Kommas. Ein Beispiel ist hier gezeigt.Wenn Linux gestartet wird, wird das Dateisystem eingebunden. Erstellen Sie das Image für das Stammdateisystem neu, um sicherzustellen, dass nur Pacemaker den iSCSI-Datenträger einbinden kann.
Führen Sie den folgenden Befehl aus. Dies sollte nur wenig Zeit beanspruchen. Wenn dies erfolgreich war, erhalten Sie keine Benachrichtigung.
sudo dracut -H -f /boot/initramfs-$(uname -r).img $(uname -r)Starten Sie den Server neu.
Führen Sie die Schritte 1-6 auf einem anderen Server aus, der an der FCI teilnimmt. Dadurch wird das iSCSI-Ziel dem SQL Server angezeigt.
Generieren Sie eine Liste der Volumegruppen auf dem Server. Nun sollte die zuvor erstellte Volumegruppe angezeigt werden.
sudo vgsStarten Sie SQL Server, und überprüfen Sie, ob sie auf diesem Server gestartet werden kann.
sudo systemctl start mssql-server sudo systemctl status mssql-serverBeenden Sie SQL Server, und stellen Sie sicher, dass sie heruntergefahren wurde.
sudo systemctl stop mssql-server sudo systemctl status mssql-serverWiederholen Sie bei Bedarf die Schritte 1-6 auf allen anderen Servern, die an der Failover-Clusterinstanz teilnehmen sollen.
Sie sind jetzt bereit, die FCI zu konfigurieren.