Condividi tramite


Risolvere i problemi dello strumento snapshot coerente app Azure lication (AzAcSnap)

Questo articolo descrive come risolvere i problemi relativi all'uso dello strumento snapshot coerente app Azure lication (AzAcSnap) per Azure NetApp Files e Istanza Large di Azure.

È possibile riscontrare diversi problemi comuni durante l'esecuzione di comandi AzAcSnap. Seguire le istruzioni per risolvere i problemi. Se si verificano ancora problemi, aprire una richiesta di servizio per supporto tecnico Microsoft dal portale di Azure e assegnare la richiesta alla coda di istanze Large di SAP HANA.

Il comando AzAcSnap non verrà eseguito

In alcuni casi AzAcSnap non verrà avviato a causa dell'ambiente dell'utente.

Impossibile creare CoreCLR

AzAcSnap è scritto in .NET e CoreCLR è un motore di esecuzione per le app .NET, che esegue funzioni come il caricamento del byte IL, la compilazione nel codice del computer e la Garbage Collection. In questo caso si verifica un problema ambientale che impedisce l'avvio del motore CoreCLR.

Una causa comune è una configurazione ambientale o autorizzazioni limitate per l'utente del sistema operativo AzAcSnap, in genere "azacsnap".

L'errore Failed to create CoreCLR, HRESULT: 0x80004005 può essere causato dalla mancanza di accesso in scrittura per l'utente TMPDIRazacsnap a .

Nota

Tutte le righe di comando che iniziano con # sono comandi eseguiti come root, tutte le righe di comando che iniziano con > vengono eseguite come azacsnap utente.

Controllare la /tmp proprietà e le autorizzazioni (si noti che in questo esempio solo l'utente root può leggere e scrivere in /tmp):

# ls -ld /tmp
drwx------ 9 root root 8192 Mar 31 10:50 /tmp

Una tipica /tmp dispone delle autorizzazioni seguenti, che consentono all'utente azacsnap di eseguire il comando azacsnap:

# ls -ld /tmp
drwxrwxrwt 9 root root 8192 Mar 31 10:51 /tmp

Se non è possibile modificare le autorizzazioni della /tmp directory, creare un utente specifico TMPDIRdi .

Creare un oggetto TMPDIR per l'utente azacsnap :

> mkdir /home/azacsnap/_tmp
> export TMPDIR=/home/azacsnap/_tmp
> azacsnap -c about
 
 
                            WKO0XXXXXXXXXXXNW
                           Wk,.,oxxxxxxxxxxx0W
                           0;.'.;dxxxxxxxxxxxKW
                          Xl'''.'cdxxxxxxxxxdkX
                         Wx,''''.,lxxxxdxdddddON
                         0:''''''.;oxdddddddddxKW
                        Xl''''''''':dddddddddddkX
                       Wx,''''''''':ddddddddddddON
                       O:''''''''',xKxddddddoddod0W
                      Xl''''''''''oNW0dooooooooooxX
                     Wx,,,,,,'','c0WWNkoooooooooookN
                    WO:',,,,,,,,;cxxxxooooooooooooo0W
                    Xl,,,,,,,;;;;;;;;;;:llooooooooldX
                   Nx,,,,,,,,,,:c;;;;;;;;coooollllllkN
                  WO:,,,,,,,,,;kXkl:;;;;,;lolllllllloOW
                  Xl,,,,,,,,,,dN WNOl:;;;;:lllllllllldK
                  0c,;;;;,,,;lK     NOo:;;:clllllllllo0W
                  WK000000000N        NK000KKKKKKKKKKXW
 
 
                Azure Application Consistent Snapshot Tool
                       AzAcSnap 7a (Build: 1AA8343)

Importante

La modifica dell'utente TMPDIR deve essere resa permanente modificando il profilo dell'utente (ad esempio $HOME/.bashrc o $HOME/.bash_profile). Ci sarebbe anche la necessità di pulire il al riavvio del TMPDIR sistema, questo è in genere automatico per /tmp.

Controllare i file di log, i file dei risultati e syslog

Alcune delle migliori fonti di informazioni per analizzare i problemi di AzAcSnap sono i file di log, i file di risultato e il log di sistema.

File di registro

I file di log AzAcSnap vengono archiviati nella directory configurata dal logPath parametro nel file di configurazione AzAcSnap. Il nome file di configurazione predefinito è azacsnap.json e il valore predefinito per logPath è ./logs, il che significa che i file di log vengono scritti nella directory ./logs rispetto alla posizione in cui viene eseguito il azacsnapcomando. Se si imposta una logPath posizione assoluta, ad esempio /home/azacsnap/logs, azacsnap restituisce sempre i log in /home/azacsnap/logs, indipendentemente dalla posizione in cui si esegue il azacsnap comando.

Il nome file di log si basa sul nome dell'applicazione, azacsnap, il comando viene eseguito con -c, ad esempio , testo detailse il nome file di configurazione predefinito, ad esempio backupazacsnap.json. Con il -c backup comando , un nome file di log predefinito sarà azacsnap-backup-azacsnap.log, scritto nella directory configurata da logPath.

Questa convenzione di denominazione consente a più file di configurazione, uno per database, di individuare i file di log associati. Se il nome file di configurazione è SID.json, il nome file di log quando si usa l'opzione azacsnap -c backup --configfile SID.json è azacsnap-backup-SID.log.

File di risultati e syslog

Per il -c backup comando, AzAcSnap scrive in un file *.result . Lo scopo del file *.result è fornire una conferma generale dell'esito positivo/negativo. Se il file *.result è vuoto, presupporre l'errore. Qualsiasi output scritto nel file *.result viene restituito anche nel log di sistema ,ad esempio /var/log/messages, usando il logger comando . Il nome file *.result ha lo stesso nome di base del file di log per consentire la corrispondenza del file di risultato con il file di configurazione e il file di log di backup. Il file *.result si trova nello stesso percorso degli altri file di log ed è un semplice file di output di una riga.

  1. Esempio di completamento riuscito:

    1. Output nel file *.result :

      Database # 1 (PR1) : completed ok
      
    2. Output in /var/log/messages:

      Dec 17 09:01:13 azacsnap-rhel azacsnap: Database # 1 (PR1) : completed ok
      
  2. Output di esempio in cui si è verificato un errore e AzAcSnap ha acquisito l'errore:

    1. Output nel file *.result :

      Database # 1 (PR1) : failed
      
    2. Output in /var/log/messages:

      Dec 19 09:00:30 azacsnap-rhel azacsnap: Database # 1 (PR1) : failed
      

Risolvere i problemi relativi al comando 'test storage' non riuscito

Il comando azacsnap -c test --test storage potrebbe non essere completato correttamente.

Controllare i firewall di rete

La comunicazione con Azure NetApp Files potrebbe non riuscire o scadere. Per risolvere i problemi, assicurarsi che le regole del firewall non blocchino il traffico in uscita dal sistema che esegue AzAcSnap agli indirizzi e alle porte TCP/IP seguenti:

  • https://management.azure.com:443
  • https://login.microsoftonline.com:443

Usare Cloud Shell per convalidare i file di configurazione

È possibile verificare se l'entità servizio è configurata correttamente usando Cloud Shell tramite il portale di Azure. Uso dei test di Cloud Shell per la configurazione corretta, ignorando i controlli di rete all'interno di una rete virtuale o di una macchina virtuale.Using Cloud Shell tests for correct configuration, bypassing network controls within a virtual network or virtual machine (VM).

  1. Nella portale di Azure aprire una sessione di Cloud Shell.

  2. Creare una directory di test, ad esempio mkdir azacsnap.

  3. Passare alla directory azacsnap e scaricare la versione più recente di AzAcSnap.

    wget https://aka.ms/azacsnapinstaller
    
  4. Rendere eseguibile il programma di installazione, ad esempio chmod +x azacsnapinstaller.

  5. Estrarre il file binario per il test.

    ./azacsnapinstaller -X -d .
    

    I risultati sono simili all'output seguente:

    +-----------------------------------------------------------+
    | Azure Application Consistent Snapshot Tool Installer |
    +-----------------------------------------------------------+
    |-> Installer version '5.0.2_Build_20210827.19086'
    |-> Extracting commands into ..
    |-> Cleaning up .NET extract dir
    
  6. Usare l'icona di caricamento/download di Cloud Shell per caricare il file dell'entità servizio, azureauth.json e il file di configurazione AzAcSnap, ad esempio azacsnap.json, per il test.

  7. Eseguire il storage test.

    ./azacsnap -c test --test storage
    

    Nota

    Il completamento del comando di test può richiedere circa 90 secondi.

Test non riuscito nell'istanza large di Azure

L'esempio di errore seguente consiste nell'esecuzione azacsnap in un'istanza Large di Azure:

azacsnap -c test --test storage
The authenticity of host '172.18.18.11 (172.18.18.11)' can't be established.
ECDSA key fingerprint is SHA256:QxamHRn3ZKbJAKnEimQpVVCknDSO9uB4c9Qd8komDec.
Are you sure you want to continue connecting (yes/no)?

Per risolvere questo errore, non rispondere yesa . Assicurarsi che l'indirizzo IP di archiviazione sia corretto. È possibile confermare l'indirizzo IP di archiviazione con il team operativo Microsoft.

L'errore viene in genere visualizzato quando l'utente di archiviazione di istanze Large di Azure non ha accesso all'archiviazione sottostante. Per determinare se l'utente di archiviazione ha accesso all'archiviazione, eseguire il ssh comando per convalidare la comunicazione con la piattaforma di archiviazione.

ssh <StorageBackupname>@<Storage IP address> "volume show -fields volume"

L'esempio seguente mostra l'output previsto:

ssh clt1h80backup@10.8.0.16 "volume show -fields volume"
vserver volume
--------------------------------- ------------------------------
osa33-hana-c01v250-client25-nprod hana_data_h80_mnt00001_t020_vol
osa33-hana-c01v250-client25-nprod hana_data_h80_mnt00002_t020_vol

Test non riuscito con Azure NetApp Files

L'esempio di errore seguente consiste nell'eseguire azacsnap con Azure NetApp Files:

azacsnap --configfile azacsnap.json.NOT-WORKING -c test --test storage
BEGIN : Test process started for 'storage'
BEGIN : Storage test snapshots on 'data' volumes
BEGIN : 1 task(s) to Test Snapshots for Storage Volume Type 'data'
ERROR: Could not create StorageANF object [authFile = 'azureauth.json']

Per risolvere il problema:

  1. Verificare l'esistenza del file dell'entità servizio, azureauth.json, come impostato nel file di configurazione azacsnap.json .

  2. Controllare il file di log, ad esempio logs/azacsnap-test-azacsnap.log, per verificare se il contenuto del file dell'entità servizio è corretto. L'output del file di log seguente mostra che la chiave privata del client non è valida.

    [19/Nov/2020:18:39:49 +13:00] DEBUG: [PID:0020080:StorageANF:659] [1] Innerexception: Microsoft.IdentityModel.Clients.ActiveDirectory.AdalServiceException AADSTS7000215: Invalid client secret is provided.
    
  3. Controllare il file di log per verificare se l'entità servizio è scaduta. L'esempio di file di log seguente mostra che le chiavi del segreto client sono scadute.

    [19/Nov/2020:18:41:10 +13:00] DEBUG: [PID:0020257:StorageANF:659] [1] Innerexception: Microsoft.IdentityModel.Clients.ActiveDirectory.AdalServiceException AADSTS7000222: The provided client secret keys are expired. Visit the Azure Portal to create new keys for your app, or consider using certificate credentials for added security: https://learn.microsoft.com/azure/active-directory/develop/active-directory-certificate-credentials
    

Suggerimento

Per altre informazioni sulla generazione di una nuova entità servizio, vedere la sezione Abilitare la comunicazione con Archiviazione nella guida allo strumento Installa snapshot coerente app Azure lication.

Risolvere i problemi relativi al comando 'test hana' non riuscito

Il comando azacsnap -c test --test hana potrebbe non essere completato correttamente.

Comando non trovato

Quando si configura la comunicazione con SAP HANA, il hdbuserstore programma viene usato per creare le impostazioni di comunicazione sicure. AzAcSnap richiede anche il hdbsql programma per tutte le comunicazioni con SAP HANA. Questi programmi sono in genere in /usr/sap/<SID>/SYS/exe/hdb/ o /usr/sap/hdbclient e devono trovarsi nell'oggetto dell'utente $PATH.

  • Nell'esempio seguente il hdbsql comando non si trova nell'oggetto dell'utente $PATH.

    hdbsql -n 172.18.18.50 - i 00 -U AZACSNAP "select version from sys.m_database"
    
    If 'hdbsql' is not a typo you can use command-not-found to lookup the package that contains it, like this:
    cnf hdbsql
    
  • L'esempio seguente aggiunge temporaneamente il hdbsql comando all'oggetto dell'utente $PATH, consentendo azacsnap l'esecuzione corretta.

    export PATH=$PATH:/hana/shared/H80/exe/linuxx86_64/hdb/
    

Assicurarsi che il programma di installazione abbia aggiunto il percorso di questi file al file dell'utente $PATHAzAcSnap.

Nota

Per aggiungere in modo permanente all'utente $PATH, aggiornare il file $HOME/.profile dell'utente.

Valore non valido per la chiave

Questo output del comando mostra che la chiave di connessione non è stata configurata correttamente con il hdbuserstore Set comando .

hdbsql -n 172.18.18.50 -i 00 -U AZACSNAP "select version from sys.m_database"
* -10104: Invalid value for KEY (AZACSNAP)

Per altre informazioni sulla configurazione di hdbuserstore, vedere Introduzione ad AzAcSnap.

Test non superato

Quando si convalida la comunicazione con SAP HANA eseguendo un test con azacsnap -c test --test hana, è possibile che venga visualizzato l'errore seguente:

> azacsnap -c test --test hana
BEGIN : Test process started for 'hana'
BEGIN : SAP HANA tests
CRITICAL: Command 'test' failed with error:
Cannot get SAP HANA version, exiting with error: 127

Per risolvere il problema:

  1. Controllare il file di configurazione, ad esempio azacsnap.json, per ogni istanza di HANA, per assicurarsi che i valori del database SAP HANA siano corretti.

  2. Eseguire il comando seguente per verificare che il hdbsql comando si trova nel percorso e che possa connettersi al server SAP HANA.

    hdbsql -n 172.18.18.50 - i 00 -d SYSTEMDB -U AZACSNAP "\s"
    

    L'esempio seguente mostra l'output quando il comando viene eseguito correttamente:

    host          : 172.18.18.50
    sid           : H80
    dbname        : SYSTEMDB
    user          : AZACSNAP
    kernel version: 2.00.040.00.1553674765
    SQLDBC version:        libSQLDBCHDB 2.04.126.1551801496
    autocommit    : ON
    locale        : en_US.UTF-8
    input encoding: UTF8
    sql port      : saphana1:30013
    

Errore di privilegio insufficiente

Se l'esecuzione azacsnap presenta un errore, * 258: insufficient privilegead esempio , verificare che l'utente disponga dei privilegi utente del database AZACSNAP appropriati configurati in base alla guida all'installazione. Verificare i privilegi dell'utente con il comando seguente:

hdbsql -U AZACSNAP "select GRANTEE,GRANTEE_TYPE,PRIVILEGE,IS_VALID,IS_GRANTABLE from sys.granted_privileges " | grep -i -e GRANTEE -e azacsnap

Il comando deve restituire l'output seguente:

GRANTEE,GRANTEE_TYPE,PRIVILEGE,IS_VALID,IS_GRANTABLE
"AZACSNAP","USER","BACKUP ADMIN","TRUE","FALSE"
"AZACSNAP","USER","CATALOG READ","TRUE","FALSE"
"AZACSNAP","USER","CREATE ANY","TRUE","TRUE"

L'errore potrebbe fornire altre informazioni per determinare i privilegi DI SAP HANA necessari, ad esempio Detailed info for this error can be found with guid '99X9999X99X9999X99X99XX999XXX999' SQLSTATE: HY000. In questo caso, seguire le istruzioni in SAP Help Portal - GET_INSUFFICIENT_PRIVILEGE_ERROR_DETAILS, che consigliano di usare la query SQL seguente per determinare i dettagli del privilegio richiesto:

CALL SYS.GET_INSUFFICIENT_PRIVILEGE_ERROR_DETAILS ('99X9999X99X9999X99X99XX999XXX999', ?)
GUID,CREATE_TIME,CONNECTION_ID,SESSION_USER_NAME,CHECKED_USER_NAME,PRIVILEGE,IS_MISSING_ANALYTIC_PRIVILEGE,IS_MISSING_GRANT_OPTION,DATABASE_NAME,SCHEMA_NAME,OBJECT_NAME,OBJECT_TYPE
"99X9999X99X9999X99X99XX999XXX999","2021-01-01 01:00:00.180000000",120212,"AZACSNAP","AZACSNAP","DATABASE ADMIN or DATABASE BACKUP ADMIN","FALSE","FALSE","","","",""

Nell'esempio precedente, l'aggiunta del DATABASE BACKUP ADMIN privilegio all'utente AZACSNAP di SYSTEMDB deve risolvere l'errore relativo ai privilegi insufficienti.

Passaggi successivi