مشاركة عبر


استكشاف أخطاء أداة Azure Application Consistent Snapshot (AzAcSnap) وإصلاحها

توضح هذه المقالة كيفية استكشاف المشكلات وإصلاحها عند استخدام أداة Azure Application Consistent Snapshot (AzAcSnap) لملفات Azure NetApp وAzure Large Instance.

قد تواجه العديد من المشكلات الشائعة عند تشغيل أوامر AzAcSnap. اتبع الإرشادات لاستكشاف المشكلات وإصلاحها. إذا كانت لا تزال لديك مشكلات، فافتح طلب خدمة لدعم Microsoft من مدخل Microsoft Azure وقم بتعيين الطلب إلى قائمة انتظار SAP HANA Large Instance.

لن يتم تشغيل أمر AzAcSnap

في بعض الحالات، لن يبدأ AzAcSnap بسبب بيئة المستخدم.

فشل إنشاء CoreCLR

تتم كتابة AzAcSnap في .NET و CoreCLR هو محرك تنفيذ لتطبيقات .NET، وينفذ وظائف مثل تحميل التعليمات البرمجية لبايت IL، والتحويل البرمجي إلى التعليمات البرمجية للجهاز، وجمع البيانات المهملة. في هذه الحالة هناك مشكلة بيئية تمنع محرك CoreCLR من البدء.

السبب الشائع هو الأذونات المحدودة أو الإعداد البيئي لمستخدم نظام التشغيل AzAcSnap، عادة "azacsnap".

يمكن أن يكون الخطأ Failed to create CoreCLR, HRESULT: 0x80004005 بسبب عدم الوصول للكتابة لمستخدم azacsnap إلى النظام TMPDIR.

إشعار

يتم تشغيل جميع أسطر الأوامر التي تبدأ بالأوامر # ك ، ويتم تشغيل جميع أسطر الأوامر التي تبدأ بمستخدم > azacsnap.root

تحقق من /tmp الملكية والأذونات (لاحظ في هذا المثال أن المستخدم فقط root يمكنه القراءة والكتابة إلى /tmp):

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

النموذجي /tmp لديه الأذونات التالية، والتي من شأنها أن تسمح لمستخدم azacsnap بتشغيل أمر azacsnap:

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

إذا لم يكن من الممكن تغيير /tmp أذونات الدليل، فقم بإنشاء مستخدم محدد TMPDIR.

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

هام

يجب أن يكون تغيير المستخدم TMPDIR دائما عن طريق تغيير ملف تعريف المستخدم (على سبيل المثال $HOME/.bashrc أو $HOME/.bash_profile). ستكون هناك أيضا حاجة إلى تنظيف عند TMPDIR إعادة تمهيد النظام، وهذا عادة ما يكون تلقائيا ل /tmp.

التحقق من ملفات السجل وملفات النتائج وsyslog

بعض أفضل مصادر المعلومات للتحقيق في مشكلات AzAcSnap هي ملفات السجل وملفات النتائج وسجل النظام.

ملفات السجل

يتم تخزين ملفات سجل AzAcSnap في الدليل الذي تم تكوينه بواسطة المعلمة logPath في ملف تكوين AzAcSnap. اسم ملف التكوين الافتراضي هو azacsnap.json، والقيمة الافتراضية ل logPath هي ./logs، مما يعني أن ملفات السجل مكتوبة في دليل ./logs بالنسبة إلى مكان azacsnap تشغيل الأمر. إذا قمت بإنشاء logPath موقع مطلق، مثل /home/azacsnap/logs، azacsnap فستخرج السجلات دائما إلى /home/azacsnap/logs، بغض النظر عن مكان تشغيل azacsnap الأمر.

يستند اسم ملف السجل إلى اسم التطبيق، azacsnapوتشغيل الأمر مع -c، مثل backup، testأو details، واسم ملف التكوين الافتراضي، مثل azacsnap.json. -c backup باستخدام الأمر ، سيتم azacsnap-backup-azacsnap.log اسم ملف سجل افتراضي، تتم كتابته في الدليل الذي تم تكوينه بواسطة logPath.

يسمح اصطلاح التسمية هذا لملفات تكوين متعددة، واحد لكل قاعدة بيانات، للمساعدة في تحديد موقع ملفات السجل المقترنة. إذا كان اسم ملف التكوين SID.json، فسيكون اسم ملف السجل عند استخدام azacsnap -c backup --configfile SID.json الخيار azacsnap-backup-SID.log.

ملفات النتائج وsyslog

-c backup للأمر ، يكتب AzAcSnap إلى ملف *.result. الغرض من ملف *.result هو توفير تأكيد عالي المستوى للنجاح/الفشل. إذا كان ملف *.result فارغا، فافترض الفشل. أي إخراج مكتوب إلى ملف *.result هو أيضا إخراج إلى سجل النظام (على سبيل المثال، /var/log/messages) باستخدام logger الأمر . اسم الملف *.result له نفس الاسم الأساسي لملف السجل للسماح بمطابقة ملف النتيجة مع ملف التكوين وملف سجل النسخ الاحتياطي. ينتقل ملف *.result إلى نفس موقع ملفات السجل الأخرى وهو ملف إخراج سطر واحد بسيط.

  1. مثال على الإكمال الناجح:

    1. الإخراج إلى ملف *.result :

      Database # 1 (PR1) : completed ok
      
    2. الإخراج إلى /var/log/messages:

      Dec 17 09:01:13 azacsnap-rhel azacsnap: Database # 1 (PR1) : completed ok
      
  2. مثال على الإخراج حيث حدث فشل والتقاط AzAcSnap الفشل:

    1. الإخراج إلى ملف *.result :

      Database # 1 (PR1) : failed
      
    2. الإخراج إلى /var/log/messages:

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

استكشاف أخطاء الأمر "اختبار التخزين" الفاشل وإصلاحها

قد لا يكتمل الأمر azacsnap -c test --test storage بنجاح.

التحقق من جدران حماية الشبكة

قد يفشل الاتصال ب Azure NetApp Files أو قد يتعطل. لاستكشاف الأخطاء وإصلاحها، تأكد من أن قواعد جدار الحماية لا تمنع نسبة استخدام الشبكة الصادرة من النظام الذي يقوم بتشغيل AzAcSnap إلى العناوين التالية ومنافذ TCP/IP:

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

استخدام Cloud Shell للتحقق من صحة ملفات التكوين

يمكنك اختبار ما إذا كان كيان الخدمة قد تم تكوينه بشكل صحيح باستخدام Cloud Shell من خلال مدخل Microsoft Azure. استخدام اختبارات Cloud Shell للتكوين الصحيح، وتجاوز عناصر التحكم في الشبكة داخل شبكة ظاهرية أو جهاز ظاهري (VM).

  1. في مدخل Microsoft Azure، افتح جلسة عمل Cloud Shell .

  2. إنشاء دليل اختبار، على سبيل المثال mkdir azacsnap.

  3. قم بالتبديل إلى دليل azacsnap ، وقم بتنزيل أحدث إصدار من AzAcSnap.

    wget https://aka.ms/azacsnapinstaller
    
  4. اجعل المثبت قابلا للتنفيذ، على سبيل المثال chmod +x azacsnapinstaller.

  5. استخراج الثنائي للاختبار.

    ./azacsnapinstaller -X -d .
    

    تبدو النتائج مثل الإخراج التالي:

    +-----------------------------------------------------------+
    | Azure Application Consistent Snapshot Tool Installer |
    +-----------------------------------------------------------+
    |-> Installer version '5.0.2_Build_20210827.19086'
    |-> Extracting commands into ..
    |-> Cleaning up .NET extract dir
    
  6. استخدم أيقونة تحميل/تنزيل Cloud Shell لتحميل ملف الخدمة الأساسي، azureauth.json، وملف تكوين AzAcSnap، مثل azacsnap.json، للاختبار.

  7. storage قم بتشغيل الاختبار.

    ./azacsnap -c test --test storage
    

    إشعار

    قد يستغرق الأمر الاختباري حوالي 90 ثانية لإكماله.

فشل الاختبار على Azure Large Instance

مثال الخطأ التالي من التشغيل azacsnap على 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)?

لاستكشاف هذا الخطأ وإصلاحه، لا تستجيب yes. تأكد من صحة عنوان IP الخاص بالتخزين. يمكنك تأكيد عنوان IP للتخزين مع فريق عمليات Microsoft.

يظهر الخطأ عادة عندما لا يكون لدى مستخدم تخزين Azure Large Instance حق الوصول إلى التخزين الأساسي. لتحديد ما إذا كان لدى مستخدم التخزين حق الوصول إلى التخزين، قم بتشغيل ssh الأمر للتحقق من صحة الاتصال بالنظام الأساسي للتخزين.

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

يوضح المثال التالي الإخراج المتوقع:

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

فشل الاختبار باستخدام Azure NetApp Files

مثال الخطأ التالي من التشغيل 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']

لاستكشاف أخطاء هذا الخطأ وإصلاحها:

  1. تحقق من وجود ملف كيان الخدمة، azureauth.json، كما هو محدد في ملف تكوين azacsnap.json .

  2. تحقق من ملف السجل، على سبيل المثال، السجلات/azacsnap-test-azacsnap.log، لمعرفة ما إذا كان الملف الأساسي للخدمة يحتوي على المحتوى الصحيح. يظهر إخراج ملف السجل التالي أن مفتاح سر العميل غير صالح.

    [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. تحقق من ملف السجل لمعرفة ما إذا كان كيان الخدمة قد انتهت صلاحيته. يوضح مثال ملف السجل التالي انتهاء صلاحية المفاتيح السرية للعميل.

    [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
    

تلميح

لمزيد من المعلومات حول إنشاء كيان خدمة جديد، راجع قسم تمكين الاتصال مع التخزين في دليل أداة تثبيت لقطة متناسقة لتطبيق Azure.

فشل استكشاف أخطاء أمر "اختبار hana" وإصلاحها

قد لا يكتمل الأمر azacsnap -c test --test hana بنجاح.

القيادة لم يتم العثور

عند إعداد الاتصال مع SAP HANA، hdbuserstore يتم استخدام البرنامج لإنشاء إعدادات الاتصال الآمنة. يتطلب hdbsql AzAcSnap أيضا البرنامج لجميع الاتصالات مع SAP HANA. عادة ما تكون هذه البرامج ضمن /usr/sap/<SID>/SYS/exe/hdb/ أو /usr/sap/hdbclient ويجب أن تكون في المستخدم $PATH.

  • في المثال التالي، hdbsql الأمر ليس في .$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
    
  • يضيف hdbsql المثال التالي الأمر مؤقتا إلى الخاص بالمستخدم $PATH، مما azacsnap يسمح بتشغيله بشكل صحيح.

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

تأكد من أن المثبت أضاف موقع هذه الملفات إلى مستخدم $PATHAzAcSnap.

إشعار

لإضافته بشكل دائم إلى ملف المستخدم $PATH، قم بتحديث ملف $HOME/.profile الخاص بالمستخدم.

قيمة غير صحيحة للمفتاح

يظهر إخراج الأمر هذا أن مفتاح الاتصال لم يتم إعداده بشكل صحيح باستخدام hdbuserstore Set الأمر .

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

لمزيد من المعلومات حول إعداد hdbuserstore، راجع بدء استخدام AzAcSnap.

فشل الاختبار

عند التحقق من صحة الاتصال مع SAP HANA عن طريق تشغيل اختبار باستخدام azacsnap -c test --test hana، قد تحصل على الخطأ التالي:

> 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

لاستكشاف أخطاء هذا الخطأ وإصلاحها:

  1. تحقق من ملف التكوين، على سبيل المثال azacsnap.json، لكل مثيل HANA، للتأكد من صحة قيم قاعدة بيانات SAP HANA.

  2. قم بتشغيل الأمر التالي للتحقق من أن hdbsql الأمر في المسار وأنه يمكن الاتصال بخادم SAP HANA.

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

    يوضح المثال التالي الإخراج عند تشغيل الأمر بشكل صحيح:

    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
    

خطأ امتياز غير كاف

إذا كان التشغيل azacsnap يقدم خطأ مثل * 258: insufficient privilege، فتحقق من أن المستخدم لديه امتيازات مستخدم قاعدة بيانات AZACSNAP المناسبة التي تم إعدادها وفقا لدليل التثبيت. تحقق من امتيازات المستخدم باستخدام الأمر التالي:

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

يجب أن يرجع الأمر الإخراج التالي:

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"

قد يوفر الخطأ مزيدا من المعلومات للمساعدة في تحديد امتيازات SAP HANA المطلوبة، مثل Detailed info for this error can be found with guid '99X9999X99X9999X99X99XX999XXX999' SQLSTATE: HY000. في هذه الحالة، اتبع الإرشادات الموجودة في مدخل تعليمات SAP - GET_INSUFFICIENT_PRIVILEGE_ERROR_DETAILS، والتي توصي باستخدام استعلام SQL التالي لتحديد تفاصيل الامتياز المطلوب:

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

في المثال السابق، يجب أن تؤدي إضافة DATABASE BACKUP ADMIN الامتياز إلى مستخدم AZACSNAP الخاص ب SYSTEMDB إلى حل خطأ الامتياز غير الكافي.

الخطوات التالية