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 cartella
  • sync 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

  1. Scegliere uno dei server che parteciperanno alla configurazione dell'istanza del cluster di failover. Non è rilevante quale.

  2. 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.
  3. 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 come mssql.

    • 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.

      Screenshot che mostra come creare il database di test.

    • 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.
  4. 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.

      Screenshot del comando sqlcmd e della risposta al comando.

    • 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.
  5. Ripetere la procedura sugli altri nodi.