Udostępnij za pośrednictwem


Rozwiązywanie problemów z narzędziem aplikacja systemu Azure Consistent Snapshot (AzAcSnap)

W tym artykule opisano sposób rozwiązywania problemów podczas korzystania z narzędzia aplikacja systemu Azure Consistent Snapshot (AzAcSnap) dla usług Azure NetApp Files i Azure Large Instance.

Podczas uruchamiania poleceń AzAcSnap może wystąpić kilka typowych problemów. Postępuj zgodnie z instrukcjami, aby rozwiązać problemy. Jeśli nadal masz problemy, otwórz żądanie obsługi dla pomoc techniczna firmy Microsoft z witryny Azure Portal i przypisz żądanie do kolejki dużych wystąpień SAP HANA.

Polecenie AzAcSnap nie zostanie uruchomione

W niektórych przypadkach narzędzie AzAcSnap nie zostanie uruchomione ze względu na środowisko użytkownika.

Nie można utworzyć coreCLR

AzAcSnap jest napisany na platformie .NET, a CoreCLR jest aparatem wykonywania dla aplikacji platformy .NET, wykonując funkcje, takie jak ładowanie kodu bajtowego IL, kompilacja do kodu maszynowego i odzyskiwania pamięci. W takim przypadku występuje problem środowiskowy blokujący uruchomienie aparatu CoreCLR.

Częstą przyczyną są ograniczone uprawnienia lub konfiguracja środowiska dla użytkownika systemu operacyjnego AzAcSnap, zwykle "azacsnap".

Failed to create CoreCLR, HRESULT: 0x80004005 Błąd może być spowodowany brakiem dostępu do zapisu dla użytkownika azacsnap w systemie TMPDIR.

Uwaga

Wszystkie wiersze polecenia rozpoczynające się od # polecenia to polecenia uruchamiane jako root, wszystkie wiersze polecenia rozpoczynające się od > polecenia są uruchamiane jako azacsnap użytkownik.

/tmp Sprawdź własność i uprawnienia (uwaga w tym przykładzie root tylko użytkownik może odczytywać i zapisywać dane w programie /tmp):

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

Typowa funkcja /tmp ma następujące uprawnienia, które umożliwiają użytkownikowi azacsnap uruchomienie polecenia azacsnap:

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

Jeśli nie można zmienić /tmp uprawnień katalogu, utwórz użytkownika specyficznego dla TMPDIRużytkownika .

Utwórz element TMPDIR dla azacsnap użytkownika:

> 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)

Ważne

Zmiana nazwy użytkownika TMPDIR musi być trwała przez zmianę profilu użytkownika (np. $HOME/.bashrc lub $HOME/.bash_profile). Konieczne byłoby również wyczyszczenie po ponownym uruchomieniu TMPDIR systemu. Jest to zwykle automatyczne rozwiązanie dla programu /tmp.

Sprawdzanie plików dziennika, plików wyników i dziennika systemowego

Niektóre z najlepszych źródeł informacji dotyczących badania problemów z modułem AzAcSnap to pliki dziennika, pliki wyników i dziennik systemu.

Plik dzienników

Pliki dziennika AzAcSnap są przechowywane w katalogu skonfigurowanym logPath przez parametr w pliku konfiguracji AzAcSnap. Domyślna nazwa pliku konfiguracji to azacsnap.json, a wartość logPath domyślna to ./logs, co oznacza, że pliki dziennika są zapisywane w katalogu ./logs względem miejsca, w którym azacsnap jest uruchamiane polecenie. Jeśli ustawisz logPath bezwzględną lokalizację, taką jak /home/azacsnap/logs, azacsnap zawsze wyprowadza dzienniki do /home/azacsnap/logs, niezależnie od tego, gdzie uruchamiasz azacsnap polecenie.

Nazwa pliku dziennika jest oparta na nazwie aplikacji, azacsnap, uruchomieniu polecenia z -c, takim jak backup, testlub details, i domyślna nazwa pliku konfiguracji, na przykład azacsnap.json. -c backup Za pomocą polecenia domyślna nazwa pliku dziennika zostanie azacsnap-backup-azacsnap.log zapisana w katalogu skonfigurowanym przez logPathprogram .

Ta konwencja nazewnictwa umożliwia znalezienie skojarzonych plików dziennika dla wielu plików konfiguracji, po jednym na bazę danych. Jeśli nazwa pliku konfiguracji jest SID.json, nazwa pliku dziennika podczas korzystania z azacsnap -c backup --configfile SID.json opcji jest azacsnap-backup-SID.log.

Pliki wyników i dziennik syslog

-c backup W przypadku polecenia azAcSnap zapisuje dane w pliku *.result. Celem pliku *.result jest zapewnienie wysokiego poziomu potwierdzenia powodzenia/niepowodzenia. Jeśli plik *.result jest pusty, przyjmij błąd. Wszystkie dane wyjściowe zapisane w pliku *.result są również wyjściowe do dziennika systemowego (na przykład /var/log/messages) przy użyciu logger polecenia . Nazwa pliku *.result ma taką samą nazwę podstawową jak plik dziennika, aby umożliwić dopasowanie pliku wynikowego z plikiem konfiguracji i plikiem dziennika kopii zapasowej. Plik *.result przechodzi do tej samej lokalizacji co inne pliki dziennika i jest prostym plikiem wyjściowym wiersza.

  1. Przykład pomyślnego ukończenia:

    1. Dane wyjściowe do pliku *.result :

      Database # 1 (PR1) : completed ok
      
    2. Dane wyjściowe do :/var/log/messages

      Dec 17 09:01:13 azacsnap-rhel azacsnap: Database # 1 (PR1) : completed ok
      
  2. Przykładowe dane wyjściowe, w których wystąpił błąd, a polecenie AzAcSnap przechwyciło błąd:

    1. Dane wyjściowe do pliku *.result :

      Database # 1 (PR1) : failed
      
    2. Dane wyjściowe do :/var/log/messages

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

Rozwiązywanie problemów z nieudanym poleceniem "test storage"

Polecenie azacsnap -c test --test storage może nie zostać ukończone pomyślnie.

Sprawdzanie zapór sieciowych

Komunikacja z usługą Azure NetApp Files może zakończyć się niepowodzeniem lub przekroczeniem limitu czasu. Aby rozwiązać problemy, upewnij się, że reguły zapory nie blokują ruchu wychodzącego z systemu z uruchomionym modułem AzAcSnap do następujących adresów i portów TCP/IP:

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

Weryfikowanie plików konfiguracji przy użyciu usługi Cloud Shell

Możesz sprawdzić, czy jednostka usługi jest poprawnie skonfigurowana przy użyciu usługi Cloud Shell w witrynie Azure Portal. Używanie testów usługi Cloud Shell pod kątem prawidłowej konfiguracji, pomijając mechanizmy kontroli sieci w sieci wirtualnej lub maszynie wirtualnej.

  1. W witrynie Azure Portal otwórz sesję usługi Cloud Shell .

  2. Utwórz katalog testowy, na przykład mkdir azacsnap.

  3. Przejdź do katalogu azacsnap i pobierz najnowszą wersję narzędzia AzAcSnap.

    wget https://aka.ms/azacsnapinstaller
    
  4. Utwórz plik wykonywalny instalatora, na przykład chmod +x azacsnapinstaller.

  5. Wyodrębnij plik binarny do testowania.

    ./azacsnapinstaller -X -d .
    

    Wyniki wyglądają podobnie do następujących danych wyjściowych:

    +-----------------------------------------------------------+
    | Azure Application Consistent Snapshot Tool Installer |
    +-----------------------------------------------------------+
    |-> Installer version '5.0.2_Build_20210827.19086'
    |-> Extracting commands into ..
    |-> Cleaning up .NET extract dir
    
  6. Użyj ikony Przekazywania/pobierania usługi Cloud Shell, aby przekazać plik jednostki usługi, azureauth.json i plik konfiguracji AzAcSnap, taki jak azacsnap.json, na potrzeby testowania.

  7. storage Uruchom test.

    ./azacsnap -c test --test storage
    

    Uwaga

    Wykonanie polecenia testowego może potrwać około 90 sekund.

Test niepowodzenie w dużym wystąpieniu platformy Azure

Poniższy przykład błędu pochodzi z uruchamiania azacsnap w dużym wystąpieniu platformy 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)?

Aby rozwiązać ten problem, nie odpowiadaj .yes Upewnij się, że adres IP magazynu jest poprawny. Adres IP magazynu można potwierdzić zespołowi ds. operacji firmy Microsoft.

Ten błąd występuje zwykle, gdy użytkownik magazynu dużego wystąpienia platformy Azure nie ma dostępu do magazynu bazowego. Aby określić, czy użytkownik magazynu ma dostęp do magazynu, uruchom ssh polecenie , aby zweryfikować komunikację z platformą magazynu.

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

W poniższym przykładzie przedstawiono oczekiwane dane wyjściowe:

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 niepowodzenie z usługą Azure NetApp Files

Poniższy przykład błędu pochodzi z uruchamiania z usługą azacsnap 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']

Aby rozwiązać problem z tym błędem:

  1. Sprawdź istnienie pliku jednostki usługi, azureauth.json, zgodnie z ustawieniem w pliku konfiguracji azacsnap.json .

  2. Sprawdź plik dziennika, na przykład logs/azacsnap-test-azacsnap.log, aby sprawdzić, czy plik jednostki usługi ma poprawną zawartość. Następujące dane wyjściowe pliku dziennika pokazują, że klucz tajny klienta jest nieprawidłowy.

    [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. Sprawdź plik dziennika, aby sprawdzić, czy jednostka usługi wygasła. Poniższy przykładowy plik dziennika pokazuje, że klucze tajne klienta wygasły.

    [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
    

Napiwek

Aby uzyskać więcej informacji na temat generowania nowej jednostki usługi, zapoznaj się z sekcją Włączanie komunikacji z magazynem w przewodniku instalowanie narzędzia do tworzenia migawek spójnych na poziomie aplikacja systemu Azure.

Rozwiązywanie problemów z nieudanym poleceniem "test hana"

Polecenie azacsnap -c test --test hana może nie zostać ukończone pomyślnie.

Nie znaleziono polecenia

Podczas konfigurowania komunikacji z platformą SAP HANA hdbuserstore program jest używany do tworzenia bezpiecznych ustawień komunikacji. Moduł AzAcSnap wymaga również programu do całej hdbsql komunikacji z platformą SAP HANA. Te programy są zwykle w folderze /usr/sap/SID>/<SYS/exe/hdb/ lub /usr/sap/hdbclient i muszą znajdować się w pliku użytkownika $PATH.

  • W poniższym przykładzie hdbsql polecenie nie znajduje się w pliku użytkownika $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
    
  • Poniższy przykład tymczasowo dodaje hdbsql polecenie do użytkownika $PATH, co umożliwia azacsnap poprawne uruchomienie.

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

Upewnij się, że instalator dodał lokalizację tych plików do użytkownika $PATHAzAcSnap .

Uwaga

Aby trwale dodać do pliku użytkownika $PATH, zaktualizuj plik $HOME/.profile użytkownika.

Nieprawidłowa wartość klucza

Dane wyjściowe tego polecenia pokazują, że klucz połączenia nie został poprawnie skonfigurowany za hdbuserstore Set pomocą polecenia .

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

Aby uzyskać więcej informacji na temat konfigurowania programu , zobacz Get started with AzAcSnap (Rozpoczynanie pracy z modułem hdbuserstoreAzAcSnap).

Test zakończony niepowodzeniem

Podczas sprawdzania poprawności komunikacji z platformą SAP HANA przez uruchomienie testu za pomocą azacsnap -c test --test hanapolecenia może wystąpić następujący błąd:

> 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

Aby rozwiązać problem z tym błędem:

  1. Sprawdź plik konfiguracji, na przykład azacsnap.json dla każdego wystąpienia platformy HANA, aby upewnić się, że wartości bazy danych SAP HANA są poprawne.

  2. Uruchom następujące polecenie, aby sprawdzić, czy hdbsql polecenie znajduje się w ścieżce i czy może nawiązać połączenie z serwerem SAP HANA.

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

    Poniższy przykład przedstawia dane wyjściowe, gdy polecenie działa poprawnie:

    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
    

Błąd niewystarczającego uprawnień

Jeśli uruchomienie azacsnap programu wyświetla błąd, taki jak * 258: insufficient privilege, sprawdź, czy użytkownik ma odpowiednie uprawnienia użytkownika bazy danych AZACSNAP skonfigurowane zgodnie z przewodnikiem instalacji. Sprawdź uprawnienia użytkownika za pomocą następującego polecenia:

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

Polecenie powinno zwrócić następujące dane wyjściowe:

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"

Błąd może zawierać dodatkowe informacje ułatwiające określenie wymaganych uprawnień platformy SAP HANA, takich jak Detailed info for this error can be found with guid '99X9999X99X9999X99X99XX999XXX999' SQLSTATE: HY000. W takim przypadku postępuj zgodnie z instrukcjami w witrynie SAP Help Portal — GET_INSUFFICIENT_PRIVILEGE_ERROR_DETAILS, która zaleca użycie następującego zapytania SQL w celu określenia szczegółów wymaganych uprawnień:

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","","","",""

W poprzednim przykładzie dodanie DATABASE BACKUP ADMIN uprawnień do użytkownika AZACSNAP bazy danych SYSTEMDB powinno rozwiązać problem z błędem niewystarczającego poziomu uprawnień.

Następne kroki