Configurare l'istanza del cluster di failover di archiviazione SMB - SQL Server in Linux
Si applica a:SQL Server - Linux
Questo articolo illustra come configurare la risorsa di archiviazione SMB per un'istanza del cluster di failover (FCI) su Linux.
Nel mondo non Windows, SMB è anche indicato come condivisione CIFS (Common Internet File System) e viene implementato tramite Samba. Nel mondo Windows, l'accesso a una condivisione SMB viene eseguito in questo modo: \\SERVERNAME\SHARENAME
Per le installazioni di SQL Server basate su Linux, la condivisione SMB deve essere montata come cartella.
Informazioni importanti sul server e sull'origine
Ecco alcuni suggerimenti e diverse note per l'uso corretto di SMB:
- La condivisione SMB può trovarsi in Windows, in Linux o anche in un'appliance, purché usi SMB 3.0 o versioni successive. Per altre informazioni su Samba e SMB 3.0 e per verificare se l'implementazione di Samba in uso è conforme a SMB 3.0, vedere SMB 3.0.
- La condivisione SMB deve essere altamente disponibile.
- Per la condivisione SMB è necessario impostare correttamente la sicurezza. Di seguito è riportato un esempio da
/etc/samba/smb.conf
, doveSQLData
è il nome della condivisione.
[SQLData]
path=/var/smb/SQLData
read only = no
browseable = yes
guest ok = no
writeable = yes
valid users = SQLSambaUser
Istruzioni
Scegliere uno dei server che parteciperanno alla configurazione dell'istanza del cluster di failover (FCI). Non è rilevante quale.
Ottenere informazioni sull'utente
mssql
.sudo id mssql
Si notino
uid
,gid
e i gruppi.Eseguire
sudo smbclient -L //NameOrIP/ShareName -U User
.-
<NameOrIP>
è il nome DNS o l'indirizzo IP del server che ospita la condivisione SMB. -
<ShareName>
è il nome della condivisione SMB.
-
Per i database di sistema o per qualsiasi altro elemento archiviato nel percorso dati predefinito, seguire questa procedura. In caso contrario, passare al passaggio 5.
Verificare che SQL Server sia arrestato nel server su cui si sta lavorando.
sudo systemctl stop mssql-server sudo systemctl status mssql-server
Eseguire il comando per operare come utente con privilegi avanzati.
sudo -i
Cambiare per diventare l'utente
mssql
.su mssql
Creare una directory temporanea per archiviare i file di dati e di log di SQL Server.
mkdir <TempDir>
-
<TempDir>
è il nome della cartella. L'esempio seguente crea una cartella denominata/var/opt/mssql/tmp
.
mkdir /var/opt/mssql/tmp
-
Copiare i file di dati e di log di SQL Server nella directory temporanea.
cp /var/opt/mssql/data/* <TempDir>
-
<TempDir>
è il nome della cartella del passaggio precedente.
-
Verificare che i file si trovino nella directory.
ls <TempDir>
<TempDir> è il nome della cartella del passaggio D.
Eliminare i file dalla directory di dati di SQL Server esistente.
rm - f /var/opt/mssql/data/*
Verificare che i file siano stati eliminati.
ls /var/opt/mssql/data
Digitare exit per tornare all'utente ROOT.
Montare la condivisione SMB nella cartella di dati di SQL Server. Questo esempio illustra la sintassi per la connessione a una condivisione SMB 3.0 basata su Windows Server.
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>
è il nome del server con la condivisione SMB -
<ShareName>
è il nome della condivisione -
<UserName>
è il nome dell'utente con cui accedere alla condivisione -
<Password>
è la password dell'utente -
<domain>
è il nome di Active Directory -
<mssqlUID>
è l'UID dell'utentemssql
-
<mssqlGID>
è il GID dell'utentemssql
-
Verificare che il montaggio abbia avuto esito positivo eseguendo il comando mount senza alcuna opzione.
mount
Passare all'utente
mssql
:su mssql
Copiare i file dalla directory temporanea
/var/opt/mssql/data
.cp /var/opt/mssql/tmp/* /var/opt/mssql/data
Verificare che i file siano presenti.
ls /var/opt/mssql/data
Immettere
exit
per non esseremssql
.Immettere
exit
per non essereroot
.Avviare SQL Server. Se tutti gli elementi sono stati copiati correttamente e la sicurezza è applicata correttamente, SQL Server deve risultare avviato.
sudo systemctl start mssql-server sudo systemctl status mssql-server
Per eseguire altri test e assicurarsi che le autorizzazioni siano appropriate, creare un database. L'esempio seguente usa Transact-SQL ma è possibile usare SSMS.
Arrestare SQL Server e verificare che sia spento. Se si ha intenzione di aggiungere o testare altri dischi, non arrestare SQL Server fino a quando tali dischi non sono stati aggiunti e testati.
sudo systemctl stop mssql-server sudo systemctl status mssql-server
Solo se queste operazioni sono state completate, smontare la condivisione. In caso contrario, smontare i dischi aggiuntivi una volta terminato il test o l'aggiunta.
sudo umount //<IPAddressorServerName>/<ShareName /<FolderMountedIn>
-
<IPAddressOrServerName>
è l'indirizzo IP o il nome dell'host SMB -
<ShareName>
è il nome della condivisione -
<FolderMountedIn>
è il nome della cartella in cui SMB è montato
-
Per elementi diversi dai database di sistema, ad esempio i database utente o i backup, seguire questa procedura. Se si usa solo il percorso predefinito, andare al passaggio 14.
Eseguire il comando per operare come utente con privilegi avanzati.
sudo -i
Creare una cartella che verrà usata da SQL Server.
mkdir <FolderName>
<FolderName> è il nome della cartella. Se non si trova nella posizione corretta, è necessario specificare il percorso completo della cartella. L'esempio seguente crea una cartella denominata
/var/opt/mssql/userdata
.mkdir /var/opt/mssql/userdata
Montare la condivisione SMB nella cartella di dati di SQL Server. Questo esempio illustra la sintassi per la connessione a una condivisione SMB 3.0 basata su Samba.
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>
è il nome del server con la condivisione SMB -
<ShareName>
è il nome della condivisione -
<FolderName>
è il nome della cartella creata nell'ultimo passaggio -
<UserName>
è il nome dell'utente con cui accedere alla condivisione -
<Password>
è la password dell'utente -
<mssqlUID>
è l'UID dell'utentemssql
-
<mssqlGID>
è il GID dell'utentemssql
.
-
Verificare che il montaggio sia avvenuto correttamente eseguendo il comando "mount" senza alcuna opzione.
Digitare exit per non operare più come utente con privilegi avanzati.
Per eseguire il test, creare un database in tale cartella. L'esempio seguente usa sqlcmd per creare un database, cambiare il contesto e verificare che i file esistano a livello di sistema operativo e quindi elimina il percorso temporaneo. È possibile usare SSMS.
Smontare la condivisione
sudo umount //<IPAddressorServerName>/<ShareName> /<FolderMountedIn>
-
<IPAddressOrServerName>
è l'indirizzo IP o il nome dell'host SMB -
<ShareName>
è il nome della condivisione -
<FolderMountedIn>
è il nome della cartella in cui SMB è montato.
-
Ripetere la procedura sugli altri nodi.
Ora sei pronto per configurare il FCI.