Azure HPC Cache data ingest - طريقة النسخ اليدوي

توفر هذه المقالة إرشادات مفصلة لنسخ البيانات يدويا إلى حاوية تخزين Blob لاستخدامها مع ذاكرة التخزين المؤقت ل Azure HPC. يستخدم عمليات متوازية متعددة الخيوط لتحسين سرعة النسخ.

لمعرفة المزيد حول نقل البيانات إلى وحدة تخزين Blob لذاكرة التخزين المؤقت ل Azure HPC، اقرأ نقل البيانات إلى وحدة تخزين Azure Blob.

مثال على نسخة بسيطة

يمكنك إنشاء نسخة متعددة مؤشرات الترابط يدويا على عميل عن طريق تشغيل أكثر من أمر نسخ واحد في وقت واحد في الخلفية مقابل مجموعات محددة مسبقا من الملفات أو المسارات.

يتضمن الأمر Linux/UNIX cp الوسيطة -p للحفاظ على الملكية وبيانات تعريف mtime. إضافة هذه الوسيطة إلى الأوامر أدناه اختيارية. (تؤدي إضافة الوسيطة إلى زيادة عدد استدعاءات نظام الملفات المرسلة من العميل إلى نظام الملفات الوجهة لتعديل بيانات التعريف.)

ينسخ هذا المثال البسيط ملفين بالتوازي:

cp /mnt/source/file1 /mnt/destination1/ & cp /mnt/source/file2 /mnt/destination1/ &

بعد إصدار هذا الأمر، jobs سيظهر الأمر تشغيل علامتي ترابط.

نسخ البيانات بأسماء ملفات يمكن التنبؤ بها

إذا كانت أسماء الملفات قابلة للتنبؤ، فيمكنك استخدام التعبيرات لإنشاء سلاسل نسخ متوازية.

على سبيل المثال، إذا كان الدليل الخاص بك يحتوي على 1000 ملف يتم ترقيمها بالتتابع من 0001 إلى 1000، يمكنك استخدام التعبيرات التالية لإنشاء 10 مؤشرات ترابط متوازية يقوم كل منها بنسخ 100 ملف:

cp /mnt/source/file0* /mnt/destination1/ & \
cp /mnt/source/file1* /mnt/destination1/ & \
cp /mnt/source/file2* /mnt/destination1/ & \
cp /mnt/source/file3* /mnt/destination1/ & \
cp /mnt/source/file4* /mnt/destination1/ & \
cp /mnt/source/file5* /mnt/destination1/ & \
cp /mnt/source/file6* /mnt/destination1/ & \
cp /mnt/source/file7* /mnt/destination1/ & \
cp /mnt/source/file8* /mnt/destination1/ & \
cp /mnt/source/file9* /mnt/destination1/

نسخ البيانات باستخدام أسماء الملفات غير المهيكلة

إذا لم يكن من الممكن التنبؤ ببنية تسمية الملف، فيمكنك تجميع الملفات حسب أسماء الدليل.

يجمع هذا المثال الدلائل بأكملها لإرسالها إلى cp الأوامر التي يتم تشغيلها كمهام في الخلفية:

/root
|-/dir1
| |-/dir1a
| |-/dir1b
| |-/dir1c
   |-/dir1c1
|-/dir1d

بعد تجميع الملفات، يمكنك تشغيل أوامر نسخ متوازية لنسخ الدلائل الفرعية وجميع محتوياتها بشكل متكرر:

cp /mnt/source/* /mnt/destination/
mkdir -p /mnt/destination/dir1 && cp /mnt/source/dir1/* mnt/destination/dir1/ &
cp -R /mnt/source/dir1/dir1a /mnt/destination/dir1/ &
cp -R /mnt/source/dir1/dir1b /mnt/destination/dir1/ &
cp -R /mnt/source/dir1/dir1c /mnt/destination/dir1/ & # this command copies dir1c1 via recursion
cp -R /mnt/source/dir1/dir1d /mnt/destination/dir1/ &

متى يجب إضافة نقاط التثبيت

بعد أن يكون لديك ما يكفي من مؤشرات الترابط المتوازية التي تتعارض مع نقطة تحميل نظام ملفات وجهة واحدة ، ستكون هناك نقطة لا تؤدي فيها إضافة المزيد من مؤشرات الترابط إلى مزيد من الإنتاجية. (سيتم قياس الإنتاجية بالملفات/الثانية أو البايت/الثانية، اعتمادا على نوع البيانات لديك.) أو الأسوأ من ذلك ، يمكن أن يؤدي الإفراط في الترابط في بعض الأحيان إلى تدهور الإنتاجية.

عند حدوث ذلك، يمكنك إضافة نقاط تحميل من جانب العميل إلى عناوين تحميل Azure HPC Cache الأخرى، باستخدام نفس مسار تحميل نظام الملفات البعيد:

10.1.0.100:/nfs on /mnt/sourcetype nfs (rw,vers=3,proto=tcp,addr=10.1.0.100)
10.1.1.101:/nfs on /mnt/destination1type nfs (rw,vers=3,proto=tcp,addr=10.1.1.101)
10.1.1.102:/nfs on /mnt/destination2type nfs (rw,vers=3,proto=tcp,addr=10.1.1.102)
10.1.1.103:/nfs on /mnt/destination3type nfs (rw,vers=3,proto=tcp,addr=10.1.1.103)

تتيح لك إضافة نقاط التركيب من جانب العميل إيقاف أوامر النسخ الإضافية إلى نقاط التحميل الإضافية /mnt/destination[1-3] ، مما يحقق المزيد من التوازي.

على سبيل المثال، إذا كانت ملفاتك كبيرة جدا، فيمكنك تحديد أوامر النسخ لاستخدام مسارات وجهة متميزة، وإرسال المزيد من الأوامر بالتوازي من العميل الذي يقوم بتنفيذ النسخة.

cp /mnt/source/file0* /mnt/destination1/ & \
cp /mnt/source/file1* /mnt/destination2/ & \
cp /mnt/source/file2* /mnt/destination3/ & \
cp /mnt/source/file3* /mnt/destination1/ & \
cp /mnt/source/file4* /mnt/destination2/ & \
cp /mnt/source/file5* /mnt/destination3/ & \
cp /mnt/source/file6* /mnt/destination1/ & \
cp /mnt/source/file7* /mnt/destination2/ & \
cp /mnt/source/file8* /mnt/destination3/ & \

في المثال أعلاه ، يتم استهداف جميع نقاط تحميل الوجهة الثلاثة بواسطة عمليات نسخ ملف العميل.

متى يجب إضافة عملاء

أخيرا ، عندما تصل إلى قدرات العميل ، فإن إضافة المزيد من مؤشرات ترابط النسخ أو نقاط تحميل إضافية لن تسفر عن أي ملفات / ثوان إضافية أو بايت / ثانية زيادات. في هذه الحالة، يمكنك نشر عميل آخر بنفس مجموعة نقاط التحميل التي ستقوم بتشغيل مجموعاتها الخاصة من عمليات نسخ الملفات.

مثال:

Client1: cp -R /mnt/source/dir1/dir1a /mnt/destination/dir1/ &
Client1: cp -R /mnt/source/dir2/dir2a /mnt/destination/dir2/ &
Client1: cp -R /mnt/source/dir3/dir3a /mnt/destination/dir3/ &

Client2: cp -R /mnt/source/dir1/dir1b /mnt/destination/dir1/ &
Client2: cp -R /mnt/source/dir2/dir2b /mnt/destination/dir2/ &
Client2: cp -R /mnt/source/dir3/dir3b /mnt/destination/dir3/ &

Client3: cp -R /mnt/source/dir1/dir1c /mnt/destination/dir1/ &
Client3: cp -R /mnt/source/dir2/dir2c /mnt/destination/dir2/ &
Client3: cp -R /mnt/source/dir3/dir3c /mnt/destination/dir3/ &

Client4: cp -R /mnt/source/dir1/dir1d /mnt/destination/dir1/ &
Client4: cp -R /mnt/source/dir2/dir2d /mnt/destination/dir2/ &
Client4: cp -R /mnt/source/dir3/dir3d /mnt/destination/dir3/ &

إنشاء بيانات الملفات

بعد فهم الأساليب المذكورة أعلاه (سلاسل رسائل نسخ متعددة لكل وجهة، وجهات متعددة لكل عميل، وعملاء متعددين لكل نظام ملفات مصدر يمكن الوصول إليه عبر الشبكة)، ضع في اعتبارك هذه التوصية: إنشاء بيانات الملفات ثم استخدامها مع أوامر النسخ عبر عملاء متعددين.

يستخدم هذا السيناريو الأمر UNIX find لإنشاء بيانات الملفات أو الدلائل:

user@build:/mnt/source > find . -mindepth 4 -maxdepth 4 -type d
./atj5b55c53be6-01/support/gsi/2018-07-22T21:12:06EDT
./atj5b55c53be6-01/support/pcap/2018-07-23T01:34:57UTC
./atj5b55c53be6-01/support/trace/rolling
./atj5b55c53be6-03/support/gsi/2018-07-22T21:12:06EDT
./atj5b55c53be6-03/support/pcap/2018-07-23T01:34:57UTC
./atj5b55c53be6-03/support/trace/rolling
./atj5b55c53be6-02/support/gsi/2018-07-22T21:12:06EDT
./atj5b55c53be6-02/support/pcap/2018-07-23T01:34:57UTC
./atj5b55c53be6-02/support/trace/rolling

إعادة توجيه هذه النتيجة إلى ملف: find . -mindepth 4 -maxdepth 4 -type d > /tmp/foo

ثم يمكنك التكرار من خلال البيان ، باستخدام أوامر BASH لحساب الملفات وتحديد أحجام الدلائل الفرعية:

ben@xlcycl1:/sps/internal/atj5b5ab44b7f > for i in $(cat /tmp/foo); do echo " `find ${i} |wc -l` `du -sh ${i}`"; done
244    3.5M    ./atj5b5ab44b7f-02/support/gsi/2018-07-18T00:07:03EDT
9      172K    ./atj5b5ab44b7f-02/support/gsi/stats_2018-07-18T05:01:00UTC
124    5.8M    ./atj5b5ab44b7f-02/support/gsi/stats_2018-07-19T01:01:01UTC
152    15M     ./atj5b5ab44b7f-02/support/gsi/stats_2018-07-20T01:01:00UTC
131    13M     ./atj5b5ab44b7f-02/support/gsi/stats_2018-07-20T21:59:41UTC_partial
789    6.2M    ./atj5b5ab44b7f-02/support/gsi/2018-07-20T21:59:41UTC
134    12M     ./atj5b5ab44b7f-02/support/gsi/stats_2018-07-20T22:22:55UTC_hpccache_catchup
7      16K     ./atj5b5ab44b7f-02/support/pcap/2018-07-18T17:12:19UTC
8      83K     ./atj5b5ab44b7f-02/support/pcap/2018-07-18T17:17:17UTC
575    7.7M    ./atj5b5ab44b7f-02/support/cores/armada_main.2000.1531980253.gsi
33     4.4G    ./atj5b5ab44b7f-02/support/trace/rolling
281    6.6M    ./atj5b5ab44b7f-01/support/gsi/2018-07-18T00:07:03EDT
15     182K    ./atj5b5ab44b7f-01/support/gsi/stats_2018-07-18T05:01:00UTC
244    17M     ./atj5b5ab44b7f-01/support/gsi/stats_2018-07-19T01:01:01UTC
299    31M     ./atj5b5ab44b7f-01/support/gsi/stats_2018-07-20T01:01:00UTC
256    29M     ./atj5b5ab44b7f-01/support/gsi/stats_2018-07-20T21:59:41UTC_partial
889    7.7M    ./atj5b5ab44b7f-01/support/gsi/2018-07-20T21:59:41UTC
262    29M     ./atj5b5ab44b7f-01/support/gsi/stats_2018-07-20T22:22:55UTC_hpccache_catchup
11     248K    ./atj5b5ab44b7f-01/support/pcap/2018-07-18T17:12:19UTC
11     88K     ./atj5b5ab44b7f-01/support/pcap/2018-07-18T17:17:17UTC
645    11M     ./atj5b5ab44b7f-01/support/cores/armada_main.2019.1531980253.gsi
33     4.0G    ./atj5b5ab44b7f-01/support/trace/rolling
244    2.1M    ./atj5b5ab44b7f-03/support/gsi/2018-07-18T00:07:03EDT
9      158K    ./atj5b5ab44b7f-03/support/gsi/stats_2018-07-18T05:01:00UTC
124    5.3M    ./atj5b5ab44b7f-03/support/gsi/stats_2018-07-19T01:01:01UTC
152    15M     ./atj5b5ab44b7f-03/support/gsi/stats_2018-07-20T01:01:00UTC
131    12M     ./atj5b5ab44b7f-03/support/gsi/stats_2018-07-20T21:59:41UTC_partial
789    8.4M    ./atj5b5ab44b7f-03/support/gsi/2018-07-20T21:59:41UTC
134    14M     ./atj5b5ab44b7f-03/support/gsi/stats_2018-07-20T22:25:58UTC_hpccache_catchup
7      159K    ./atj5b5ab44b7f-03/support/pcap/2018-07-18T17:12:19UTC
7      157K    ./atj5b5ab44b7f-03/support/pcap/2018-07-18T17:17:17UTC
576    12M     ./atj5b5ab44b7f-03/support/cores/armada_main.2013.1531980253.gsi
33     2.8G    ./atj5b5ab44b7f-03/support/trace/rolling

أخيرا ، يجب عليك صياغة أوامر نسخ الملف الفعلية للعملاء.

إذا كان لديك أربعة عملاء، استخدم هذا الأمر:

for i in 1 2 3 4 ; do sed -n ${i}~4p /tmp/foo > /tmp/client${i}; done

إذا كان لديك خمسة عملاء ، فاستخدم شيئا من هذا القبيل:

for i in 1 2 3 4 5; do sed -n ${i}~5p /tmp/foo > /tmp/client${i}; done

ولمدة ستة.... استقراء حسب الحاجة.

for i in 1 2 3 4 5 6; do sed -n ${i}~6p /tmp/foo > /tmp/client${i}; done

ستحصل على ملفات N الناتجة ، واحدة لكل عميل من عملاء N الذي يحتوي على أسماء المسارات إلى أدلة المستوى الرابع التي تم الحصول عليها كجزء من الإخراج من find الأمر.

استخدم كل ملف لإنشاء أمر النسخ:

for i in 1 2 3 4 5 6; do for j in $(cat /tmp/client${i}); do echo "cp -p -R /mnt/source/${j} /mnt/destination/${j}" >> /tmp/client${i}_copy_commands ; done; done

سيعطيك ما سبق ملفات N ، لكل منها أمر نسخ لكل سطر ، يمكن تشغيله كبرنامج نصي BASH على العميل.

الهدف هو تشغيل مؤشرات ترابط متعددة من هذه البرامج النصية في وقت واحد لكل عميل بالتوازي على عملاء متعددين.