Configurare un'istanza del cluster di failover - NFS - SQL Server in Linux
Si applica a: SQL Server - Linux
Questo articolo illustra come configurare la risorsa di archiviazione NFS per un'istanza del cluster di failover in Linux.
Il file system di rete (NFS) è un metodo comune per condividere dischi in ambito Linux, ma non in Windows. Analogamente a iSCSI, è possibile configurare NFS in un server o in qualche appliance o unità di archiviazione, purché soddisfi i requisiti di archiviazione per SQL Server.
Informazioni importanti sul server NFS
L'origine che ospita NFS (un server Linux o altro) deve usare/essere conforme alla versione 4.2 o successiva. Le versioni precedenti non funzionano con SQL Server in Linux.
Quando si configurano le cartelle da condividere nel server NFS, assicurarsi che seguano queste linee guida generali:
rw
per assicurarsi che sia possibile leggere e scrivere nella cartellasync
per assicurare operazioni di scrittura garantite nella cartella- Non usare
no_root_squash
come opzione perché è considerata un rischio per la sicurezza - Verificare che la cartella disponga di diritti completi (
777
)
Assicurarsi che vengano applicati gli standard di sicurezza per l'accesso. Quando si configura la cartella, verificare che solo i server che partecipano all'istanza del cluster di failover possano visualizzare la cartella NFS. Nell'esempio seguente, viene visualizzata una /etc/exports
modificata in una soluzione NFS basata su Linux, in cui la cartella è limitata a FCIN1
e FCIN2
.
# /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)
Istruzioni
Scegliere uno dei server che parteciperanno alla configurazione dell'istanza del cluster di failover. Non è rilevante quale.
Verificare che il server riesca a visualizzare i montaggi sul server NFS.
sudo showmount -e <IPAddressOfNFSServer>
<IPAddressOfNFSServer>
è l'indirizzo IP del server NFS da usare.
Per i database di sistema o qualsiasi altro elemento archiviato nel percorso dati predefinito, seguire questa procedura. In caso contrario, andare al passaggio 4.
Verificare che SQL Server venga 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
Passare all'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 precedente.
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 NFS nella cartella di dati di SQL Server.
mount -t nfs4 <IPAddressOfNFSServer>:<FolderOnNFSServer> /var/opt/mssql/data -o nfsvers=4.2,timeo=14,intr
<IPAddressOfNFSServer>
è l'indirizzo IP del server NFS da usare.<FolderOnNFSServer>
è il nome della condivisione NFS. La sintassi di esempio seguente corrisponde alle informazioni NFS del passaggio 2.
mount -t nfs4 10.201.202.63:/var/nfs/fci1 /var/opt/mssql/data -o nfsvers=4.2,timeo=14,intr
Verificare che il montaggio abbia avuto esito positivo eseguendo mount senza alcuna opzione.
mount
Ecco l'output previsto:
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)
Passare all'utente
mssql
:su mssql
Copiare i file dalla directory temporanea /var/opt/mssql/data.
cp /var/opt/mssql/tmp/* /var/opt/mssqldata
Verificare che i file siano presenti.
ls /var/opt/mssql/data
Immettere
exit
per non operare comemssql
.Immettere
exit
per non operare come root.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
Creare un database per verificare che la sicurezza sia configurata correttamente. L'esempio seguente illustra come eseguire questa operazione tramite Transact-SQL, ma è possibile eseguirla anche tramite SSMS.
Arrestare SQL Server e verificare che l'operazione sia stata eseguita.
sudo systemctl stop mssql-server sudo systemctl status mssql-server
Se non si ha intenzione di creare altri montaggi NFS, smontare la condivisione. In caso contrario, non smontarla.
sudo umount <IPAddressOfNFSServer>:<FolderOnNFSServer> <FolderToMountIn>
<IPAddressOfNFSServer>
è l'indirizzo IP del server NFS da usare.<FolderOnNFSServer>
è il nome della condivisione NFS<FolderMountedIn>
è la cartella creata nel passaggio precedente.
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 5.
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 NFS nella cartella creata nel passaggio precedente.
mount -t nfs4 <IPAddressOfNFSServer>:<FolderOnNFSServer> <FolderToMountIn> -o nfsvers=4.2,timeo=14,intr
<IPAddressOfNFSServer>
è l'indirizzo IP del server NFS da usare.<FolderOnNFSServer>
è il nome della condivisione NFS<FolderToMountIn>
è la cartella creata nel passaggio precedente.
L'esempio seguente monta la condivisione NFS.
mount -t nfs4 10.201.202.63:/var/nfs/fci2 /var/opt/mssql/userdata -o nfsvers=4.2,timeo=14,intr
Verificare che il montaggio abbia avuto esito positivo eseguendo 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 <IPAddressOfNFSServer>:<FolderOnNFSServer> <FolderToMountIn>
<IPAddressOfNFSServer>
è l'indirizzo IP del server NFS da usare.<FolderOnNFSServer>
è il nome della condivisione NFS<FolderMountedIn>
è la cartella creata nel passaggio precedente.
Ripetere la procedura sugli altri nodi.