Megosztás a következőn keresztül:


Azure HPC Cache-adatok betöltése – manuális másolási módszer

Ez a cikk részletes útmutatást nyújt az adatok azure HPC Cache-hez való manuális másolásához egy Blob Storage-tárolóba. Többszálas párhuzamos műveleteket használ a másolási sebesség optimalizálásához.

Ha többet szeretne tudni az adatok Azure HPC Cache-hez való Blob Storage-ba való áthelyezéséről, olvassa el az Adatok áthelyezése az Azure Blob Storage-ba című cikket.

Egyszerű másolási példa

Többszálas példányt manuálisan is létrehozhat egy ügyfélen, ha egyszerre több másolási parancsot futtat a háttérben előre definiált fájl- vagy elérési utakon.

A Linux/UNIX cp parancs tartalmazza a tulajdonjog és az időalapú metaadatok megőrzésére vonatkozó argumentumot -p . Az argumentum hozzáadása az alábbi parancshoz nem kötelező. (Az argumentum hozzáadása növeli az ügyféltől a cél fájlrendszerbe küldött hívások számát metaadatok módosítása céljából.)

Ez az egyszerű példa két fájlt másol párhuzamosan:

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

A parancs kiadása után a jobs parancs megjeleníti, hogy két szál fut.

Adatok másolása kiszámítható fájlnevekkel

Ha a fájlnevek kiszámíthatók, kifejezésekkel párhuzamos másolási szálakat hozhat létre.

Ha például a címtár 1000 fájlt tartalmaz, amelyek egymás után 0001 1000sorszámozottak, az alábbi kifejezésekkel 10 párhuzamos szálat hozhat létre, amelyek mindegyike 100 fájlt másol:

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/

Adatok másolása strukturálatlan fájlnevekkel

Ha a fájlelnevezési struktúra nem kiszámítható, címtárnevek szerint csoportosíthatja a fájlokat.

Ez a példa a teljes könyvtárakat gyűjti össze a parancsokra való küldéshez cp háttérfeladatként futtatva:

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

A fájlok összegyűjtése után párhuzamos másolási parancsokat futtathat az alkönyvtárak és azok teljes tartalmának rekurzív másolásához:

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/ &

Mikor kell csatlakoztatási pontokat hozzáadni?

Miután elegendő párhuzamos szál fut egy cél fájlrendszer csatlakoztatási ponton, lesz egy pont, ahol további szálak hozzáadása nem ad több átviteli sebességet. (Az átviteli sebesség mértéke fájlokban/másodpercben vagy bájtban/másodpercben történik, az adatok típusától függően.) Vagy ami még rosszabb, a túlfűzés néha az átviteli sebesség romlását okozhatja.

Ha ez történik, ügyféloldali csatlakoztatási pontokat adhat hozzá más Azure HPC Cache-csatlakoztatási címekhez ugyanazzal a távoli fájlrendszer-csatlakoztatási útvonallal:

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)

Az ügyféloldali csatlakoztatási pontok hozzáadásával elágaztathatja a további másolási parancsokat a további /mnt/destination[1-3] csatlakoztatási pontokra, így további párhuzamosságot érhet el.

Ha például a fájlok nagy méretűek, a másolási parancsokat különböző célelérési útvonalak használatára határozhatja meg, és több parancsot küldhet párhuzamosan a másolatot végrehajtó ügyféltől.

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/ & \

A fenti példában mindhárom cél csatlakoztatási pontot az ügyfélfájl másolási folyamatai célként kezelik.

Mikor kell ügyfeleket felvenni?

Végül, ha elérte az ügyfél képességeit, további másolási szálak vagy további csatlakoztatási pontok hozzáadása nem eredményez további fájlokat/másodperc vagy bájt/másodperc növekedést. Ebben az esetben üzembe helyezhet egy másik ügyfelet ugyanazokkal a csatlakoztatási pontokkal, amelyek saját fájlmásolási folyamatokat futtatnak.

Példa:

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/ &

Fájljegyzékek létrehozása

Miután megismerte a fenti megközelítéseket (célhelyenként több másolási szál, ügyfélenként több célhely, hálózattal elérhető forrás fájlrendszerenként több ügyfél), fontolja meg ezt a javaslatot: Fájljegyzékek létrehozása, majd másolási parancsok használata több ügyfélen keresztül.

Ez a forgatókönyv a UNIX find paranccsal hoz létre jegyzékfájlokat vagy könyvtárakat:

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

Az eredmény átirányítása egy fájlba: find . -mindepth 4 -maxdepth 4 -type d > /tmp/foo

Ezután végigvezetheti a jegyzéken, bash-parancsokkal megszámlálhatja a fájlokat, és meghatározhatja az alkönyvtárak méretét:

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

Végül a tényleges fájlmásolási parancsokat kell létrehoznia az ügyfeleknek.

Ha négy ügyféllel rendelkezik, használja ezt a parancsot:

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

Ha öt ügyféllel rendelkezik, használja a következőhöz hasonlót:

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

És hatért... Szükség szerint extrapoláljuk.

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

A parancs kimenetének részeként beszerzett négyszintű könyvtárak elérési útvonalneveit tartalmazó N-alapú fájlokat kap, egyet az N-ügyfelekhezfind.

Használja az egyes fájlokat a másolási parancs létrehozásához:

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

A fentiekben soronként egy másolási paranccsal rendelkező N-fájlokat kap, amelyek BASH-szkriptként futtathatók az ügyfélen.

A cél a szkriptek több szálának egyidejű futtatása ügyfélenként párhuzamosan több ügyfélen.