Problemen met het hulpprogramma Azure-toepassing Consistente momentopname (AzAcSnap) oplossen
In dit artikel wordt beschreven hoe u problemen kunt oplossen bij het gebruik van het hulpprogramma Azure-toepassing Consistent Snapshot (AzAcSnap) voor Azure NetApp Files en Azure Large Instance.
Er kunnen verschillende veelvoorkomende problemen optreden bij het uitvoeren van AzAcSnap-opdrachten. Volg de instructies om de problemen op te lossen. Als u nog steeds problemen ondervindt, opent u een serviceaanvraag voor Microsoft Ondersteuning vanuit De Azure-portal en wijst u de aanvraag toe aan de wachtrij voor grote SAP HANA-exemplaren.
AzAcSnap-opdracht wordt niet uitgevoerd
In sommige gevallen wordt AzAcSnap niet gestart vanwege de omgeving van de gebruiker.
Kan CoreCLR niet maken
AzAcSnap is geschreven in .NET en coreCLR is een uitvoeringsengine voor .NET-apps, het uitvoeren van functies zoals il bytecode laden, compilatie naar machinecode en garbagecollection. In dit geval is er een milieuprobleem waardoor de CoreCLR-engine niet kan worden gestart.
Een veelvoorkomende oorzaak is beperkte machtigingen of omgevingsinstellingen voor de gebruiker van het AzAcSnap-besturingssysteem, meestal 'azacsnap'.
De fout Failed to create CoreCLR, HRESULT: 0x80004005
kan worden veroorzaakt door gebrek aan schrijftoegang voor de azacsnap-gebruiker naar de systeem TMPDIR
.
Notitie
Alle opdrachtregels die beginnen met #
zijn opdrachten worden uitgevoerd als root
, alle opdrachtregels die beginnen >
met worden uitgevoerd als azacsnap
gebruiker.
Controleer het eigendom en de /tmp
machtigingen (in dit voorbeeld kan alleen de root
gebruiker lezen en schrijven naar /tmp
):
# ls -ld /tmp
drwx------ 9 root root 8192 Mar 31 10:50 /tmp
Een typische /tmp
heeft de volgende machtigingen, waardoor de azacsnap-gebruiker de azacsnap-opdracht kan uitvoeren:
# ls -ld /tmp
drwxrwxrwt 9 root root 8192 Mar 31 10:51 /tmp
Als het niet mogelijk is om de /tmp
mapmachtigingen te wijzigen, maakt u een specifieke gebruiker TMPDIR
.
Maak een TMPDIR
voor de azacsnap
gebruiker:
> 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)
Belangrijk
Het wijzigen van de gebruiker TMPDIR
moet permanent worden gemaakt door het profiel van de gebruiker te wijzigen (bijvoorbeeld $HOME/.bashrc
).$HOME/.bash_profile
Er is ook behoefte aan het opschonen van het TMPDIR
systeem, dit is meestal automatisch voor /tmp
.
Logboekbestanden, resultaatbestanden en syslog controleren
Enkele van de beste informatiebronnen voor het onderzoeken van AzAcSnap-problemen zijn de logboekbestanden, resultaatbestanden en het systeemlogboek.
Logboekbestanden
De AzAcSnap-logboekbestanden worden opgeslagen in de map die is geconfigureerd door de logPath
parameter in het AzAcSnap-configuratiebestand. De standaardconfiguratiebestandsnaam is azacsnap.json en de standaardwaarde is logPath
./logs, wat betekent dat de logboekbestanden worden weggeschreven naar de map ./logs ten opzichte van waar de azacsnap
opdracht wordt uitgevoerd. Als u de logPath
absolute locatie maakt, zoals /home/azacsnap/logs, azacsnap
voert u altijd de logboeken uit naar /home/azacsnap/logs, ongeacht waar u de azacsnap
opdracht uitvoert.
De bestandsnaam van het logboek is gebaseerd op de naam van de toepassing, azacsnap
de opdracht wordt uitgevoerd met -c
, zoals backup
, test
of details
, en de standaardconfiguratiebestandsnaam, zoals azacsnap.json. Met de -c backup
opdracht wordt een standaardbestandsnaam van het logboek azacsnap-backup-azacsnap.log, geschreven in de map die is geconfigureerd door logPath
.
Met deze naamconventie kunnen meerdere configuratiebestanden, één per database, de bijbehorende logboekbestanden worden gevonden. Als de bestandsnaam van de configuratie SID.json is, wordt de bestandsnaam van het logboek bij het gebruik van de azacsnap -c backup --configfile SID.json
optie azacsnap-backup-SID.log.
Resultaatbestanden en syslog
Voor de -c backup
opdracht schrijft AzAcSnap naar een *.result-bestand . Het doel van het *.result-bestand is om een bevestiging op hoog niveau te bieden van succes/mislukking. Als het bestand *.result leeg is, gaat u ervan uit dat de fout is opgetreden. Uitvoer die naar het *.result-bestand wordt geschreven, wordt ook uitgevoerd naar het systeemlogboek (bijvoorbeeld /var/log/messages
) met behulp van de logger
opdracht. De bestandsnaam *.result heeft dezelfde basisnaam als het logboekbestand om het resultaatbestand te koppelen aan het configuratiebestand en het back-uplogboekbestand. Het bestand *.result gaat naar dezelfde locatie als de andere logboekbestanden en is een eenvoudig uitvoerbestand met één regel.
Voorbeeld voor geslaagde voltooiing:
Uitvoer naar *.result-bestand :
Database # 1 (PR1) : completed ok
Uitvoer naar
/var/log/messages
:Dec 17 09:01:13 azacsnap-rhel azacsnap: Database # 1 (PR1) : completed ok
Voorbeelduitvoer waarbij een fout is opgetreden en AzAcSnap heeft de fout vastgelegd:
Uitvoer naar *.result-bestand :
Database # 1 (PR1) : failed
Uitvoer naar
/var/log/messages
:Dec 19 09:00:30 azacsnap-rhel azacsnap: Database # 1 (PR1) : failed
Problemen met mislukte opdracht 'testopslag' oplossen
De opdracht azacsnap -c test --test storage
is mogelijk niet voltooid.
Netwerkfirewalls controleren
Communicatie met Azure NetApp Files kan mislukken of een time-out hebben. Als u problemen wilt oplossen, moet u ervoor zorgen dat firewallregels uitgaand verkeer van het systeem met AzAcSnap niet naar de volgende adressen en TCP/IP-poorten blokkeren:
https://management.azure.com:443
https://login.microsoftonline.com:443
Cloud Shell gebruiken om configuratiebestanden te valideren
U kunt testen of de service-principal correct is geconfigureerd met behulp van Cloud Shell via Azure Portal. Cloud Shell-tests gebruiken voor de juiste configuratie, waarbij netwerkbesturingselementen binnen een virtueel netwerk of virtuele machine (VM) worden overgeslagen.
Open in Azure Portal een Cloud Shell-sessie .
Maak bijvoorbeeld
mkdir azacsnap
een testmap.Schakel over naar de map azacsnap en download de nieuwste versie van AzAcSnap.
wget https://aka.ms/azacsnapinstaller
Maak bijvoorbeeld
chmod +x azacsnapinstaller
het uitvoerbare installatieprogramma.Pak het binaire bestand uit om te testen.
./azacsnapinstaller -X -d .
De resultaten zien eruit als de volgende uitvoer:
+-----------------------------------------------------------+ | Azure Application Consistent Snapshot Tool Installer | +-----------------------------------------------------------+ |-> Installer version '5.0.2_Build_20210827.19086' |-> Extracting commands into .. |-> Cleaning up .NET extract dir
Gebruik het pictogram Uploaden/downloaden van Cloud Shell om het service-principalbestand, azureauth.json en het AzAcSnap-configuratiebestand, zoals azacsnap.json, te uploaden om te testen.
Voer de
storage
test uit../azacsnap -c test --test storage
Notitie
Het kan ongeveer 90 seconden duren voordat de testopdracht is voltooid.
Mislukte test op Azure Large Instance
Het volgende foutvoorbeeld wordt uitgevoerd azacsnap
op Azure Large Instance:
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)?
Als u deze fout wilt oplossen, reageert u yes
niet. Zorg ervoor dat het IP-adres van uw opslag juist is. U kunt het IP-adres van de opslag bevestigen bij het Microsoft Operations-team.
De fout wordt meestal weergegeven wanneer de Azure Large Instance-opslaggebruiker geen toegang heeft tot de onderliggende opslag. Als u wilt bepalen of de opslaggebruiker toegang heeft tot de opslag, voert u de ssh
opdracht uit om de communicatie met het opslagplatform te valideren.
ssh <StorageBackupname>@<Storage IP address> "volume show -fields volume"
In het volgende voorbeeld ziet u de verwachte uitvoer:
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
Mislukte test met Azure NetApp Files
Het volgende foutvoorbeeld wordt uitgevoerd azacsnap
met 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']
Deze fout oplossen:
Controleer of het service-principal-bestand bestaat, azureauth.json, zoals ingesteld in het configuratiebestand azacsnap.json .
Controleer het logboekbestand, bijvoorbeeld logboeken/azacsnap-test-azacsnap.log, om te zien of het service-principalbestand de juiste inhoud heeft. In de volgende uitvoer van het logboekbestand ziet u dat de sleutel van het clientgeheim ongeldig is.
[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.
Controleer het logboekbestand om te zien of de service-principal is verlopen. In het volgende logboekbestandsvoorbeeld ziet u dat de clientgeheimsleutels zijn verlopen.
[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
Tip
Raadpleeg de sectie Communicatie met Opslag inschakelen in de handleiding Install Azure-toepassing Consistent Snapshot tool voor meer informatie over het genereren van een nieuwe service-principal.
Problemen met mislukte opdracht 'testhana' oplossen
De opdracht azacsnap -c test --test hana
is mogelijk niet voltooid.
De opdracht is niet gevonden
Bij het instellen van communicatie met SAP HANA wordt het hdbuserstore
programma gebruikt om de beveiligde communicatie-instellingen te maken. AzAcSnap vereist ook het hdbsql
programma voor alle communicatie met SAP HANA. Deze programma's bevinden zich meestal onder /usr/sap/<SID>/SYS/exe/hdb/ of /usr/sap/hdbclient en moeten zich in de gebruiker $PATH
bevinden.
In het volgende voorbeeld bevindt de
hdbsql
opdracht zich niet in de gebruiker$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
In het volgende voorbeeld wordt de
hdbsql
opdracht tijdelijk toegevoegd aan de gebruiker$PATH
, zodat deze correct kanazacsnap
worden uitgevoerd.export PATH=$PATH:/hana/shared/H80/exe/linuxx86_64/hdb/
Zorg ervoor dat het installatieprogramma de locatie van deze bestanden heeft toegevoegd aan de AzAcSnap-gebruiker $PATH
.
Notitie
Als u het bestand $HOME/.profile van de gebruiker permanent wilt toevoegen aan de gebruiker, werkt u het profielbestand van de gebruiker $PATH
bij.
Ongeldige waarde voor sleutel
Deze opdrachtuitvoer laat zien dat de verbindingssleutel niet juist is ingesteld met de hdbuserstore Set
opdracht.
hdbsql -n 172.18.18.50 -i 00 -U AZACSNAP "select version from sys.m_database"
* -10104: Invalid value for KEY (AZACSNAP)
Zie Aan de slag met AzAcSnap voor meer informatie over het instellen van de hdbuserstore
app.
Mislukte test
Wanneer u de communicatie met SAP HANA valideert door een test uit azacsnap -c test --test hana
te voeren, krijgt u mogelijk de volgende fout:
> 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
Deze fout oplossen:
Controleer het configuratiebestand, bijvoorbeeld azacsnap.json, voor elk HANA-exemplaar, om ervoor te zorgen dat de SAP HANA-databasewaarden juist zijn.
Voer de volgende opdracht uit om te controleren of de
hdbsql
opdracht zich in het pad bevindt en of deze verbinding kan maken met de SAP HANA-server.hdbsql -n 172.18.18.50 - i 00 -d SYSTEMDB -U AZACSNAP "\s"
In het volgende voorbeeld ziet u de uitvoer wanneer de opdracht correct wordt uitgevoerd:
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
Fout met onvoldoende bevoegdheden
Als de uitvoering azacsnap
een fout veroorzaakt, controleert * 258: insufficient privilege
u of de gebruiker de juiste gebruikersbevoegdheden voor de AZACSNAP-database heeft ingesteld volgens de installatiehandleiding. Controleer de bevoegdheden van de gebruiker met de volgende opdracht:
hdbsql -U AZACSNAP "select GRANTEE,GRANTEE_TYPE,PRIVILEGE,IS_VALID,IS_GRANTABLE from sys.granted_privileges " | grep -i -e GRANTEE -e azacsnap
De opdracht moet de volgende uitvoer retourneren:
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"
De fout bevat mogelijk meer informatie om de vereiste SAP HANA-bevoegdheden te bepalen, zoals Detailed info for this error can be found with guid '99X9999X99X9999X99X99XX999XXX999' SQLSTATE: HY000
. Volg in dit geval de instructies in de SAP Help-portal - GET_INSUFFICIENT_PRIVILEGE_ERROR_DETAILS, die het gebruik van de volgende SQL-query aanbevelen om de details van de vereiste bevoegdheid te bepalen:
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","","","",""
In het voorgaande voorbeeld moet het toevoegen van de DATABASE BACKUP ADMIN
bevoegdheid aan de AZACSNAP-gebruiker van SYSTEMDB de fout met onvoldoende bevoegdheden oplossen.