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 TMPDIR
azacsnap 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 TMPDIR
di .
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 azacsnap
comando. 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 , test
o details
e il nome file di configurazione predefinito, ad esempio backup
azacsnap.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.
Esempio di completamento riuscito:
Output nel file *.result :
Database # 1 (PR1) : completed ok
Output in
/var/log/messages
:Dec 17 09:01:13 azacsnap-rhel azacsnap: Database # 1 (PR1) : completed ok
Output di esempio in cui si è verificato un errore e AzAcSnap ha acquisito l'errore:
Output nel file *.result :
Database # 1 (PR1) : failed
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).
Nella portale di Azure aprire una sessione di Cloud Shell.
Creare una directory di test, ad esempio
mkdir azacsnap
.Passare alla directory azacsnap e scaricare la versione più recente di AzAcSnap.
wget https://aka.ms/azacsnapinstaller
Rendere eseguibile il programma di installazione, ad esempio
chmod +x azacsnapinstaller
.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
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.
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 yes
a . 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:
Verificare l'esistenza del file dell'entità servizio, azureauth.json, come impostato nel file di configurazione azacsnap.json .
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.
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
, consentendoazacsnap
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 $PATH
AzAcSnap.
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:
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.
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 privilege
ad 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.