Share via


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, azacsnapde opdracht wordt uitgevoerd met -c, zoals backup, testof 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.

  1. Voorbeeld voor geslaagde voltooiing:

    1. Uitvoer naar *.result-bestand :

      Database # 1 (PR1) : completed ok
      
    2. Uitvoer naar /var/log/messages:

      Dec 17 09:01:13 azacsnap-rhel azacsnap: Database # 1 (PR1) : completed ok
      
  2. Voorbeelduitvoer waarbij een fout is opgetreden en AzAcSnap heeft de fout vastgelegd:

    1. Uitvoer naar *.result-bestand :

      Database # 1 (PR1) : failed
      
    2. 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.

  1. Open in Azure Portal een Cloud Shell-sessie .

  2. Maak bijvoorbeeld mkdir azacsnapeen testmap.

  3. Schakel over naar de map azacsnap en download de nieuwste versie van AzAcSnap.

    wget https://aka.ms/azacsnapinstaller
    
  4. Maak bijvoorbeeld chmod +x azacsnapinstallerhet uitvoerbare installatieprogramma.

  5. 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
    
  6. 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.

  7. 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 yesniet. 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:

  1. Controleer of het service-principal-bestand bestaat, azureauth.json, zoals ingesteld in het configuratiebestand azacsnap.json .

  2. 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.
    
  3. 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 $PATHbevinden.

  • 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 kan azacsnap 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 $PATHbij.

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

Mislukte test

Wanneer u de communicatie met SAP HANA valideert door een test uit azacsnap -c test --test hanate 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:

  1. Controleer het configuratiebestand, bijvoorbeeld azacsnap.json, voor elk HANA-exemplaar, om ervoor te zorgen dat de SAP HANA-databasewaarden juist zijn.

  2. 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 privilegeu 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.

Volgende stappen