Adatok áthelyezése a vFXT-fürtbe – Párhuzamos adatok betöltése

Miután létrehozott egy új vFXT-fürtöt, lehet, hogy az első feladata az adatok áthelyezése egy új tárkötetbe az Azure-ban. Ha azonban az adatok áthelyezésének szokásos módszere egy egyszerű másolási parancsot ad ki egy ügyféltől, valószínűleg lassú másolási teljesítményt fog látni. Az egyszálas másolás nem jó megoldás az adatok az Avere vFXT-fürt háttértárába való másolásához.

Mivel az Azure-fürthöz készült Avere vFXT egy méretezhető többügyfél-gyorsítótár, az adatok másolásának leggyorsabb és leghatékonyabb módja több ügyféllel. Ez a technika párhuzamosítja a fájlok és objektumok betöltését.

Diagram showing multi-client, multi-threaded data movement: At the top left, an icon for on-premises hardware storage has multiple arrows coming from it. The arrows point to four client machines. From each client machine three arrows point toward the Avere vFXT. From the Avere vFXT, multiple arrows point to Blob storage.

copy Az cp adatok egyik tárolórendszerből a másikba történő átvitelére gyakran használt parancsok egyszálú folyamatok, amelyek egyszerre csak egy fájlt másolnak. Ez azt jelenti, hogy a fájlkiszolgáló egyszerre csak egy fájlt töltött be , ami a fürt erőforrásainak pazarlása.

Ez a cikk egy többügyféles, többszálas fájlmásoló rendszer létrehozásának stratégiáit ismerteti az adatok Avere vFXT-fürtbe való áthelyezéséhez. Ismerteti a fájlátviteli fogalmakat és döntési pontokat, amelyek több ügyféllel és egyszerű másolási parancsokkal hatékony adatmásoláshoz használhatók.

Emellett néhány segédprogramot is ismertet, amelyek segíthetnek. A msrsync segédprogrammal részben automatizálható az adathalmazok gyűjtőkre való felosztásának folyamata, valamint parancsok használata rsync . A parallelcp szkript egy másik segédprogram, amely beolvassa a forráskönyvtárat, és automatikusan problémákat tapasztal a másolási parancsokkal. Emellett az rsync eszköz két fázisban is használható, hogy gyorsabb másolatot biztosítson, amely továbbra is biztosítja az adatkonzisztenciát.

Kattintson a hivatkozásra egy szakaszra ugráshoz:

Adatbetöltési virtuálisgép-sablon

A GitHubon elérhető Resource Manager-sablon automatikusan létrehoz egy virtuális gépet a cikkben említett párhuzamos adatbetöltési eszközökkel.

diagram showing multiple arrows each from blob storage, hardware storage, and Azure file sources. The arrows point to a

Az adatbetöltési virtuális gép egy oktatóanyag része, amelyben az újonnan létrehozott virtuális gép csatlakoztatja az Avere vFXT-fürtöt, és letölti a rendszerindító szkriptjét a fürtből. A részletekért olvassa el a Bootstrap adatbetöltési virtuális gépet .

Stratégiai tervezés

Az adatok párhuzamos másolására vonatkozó stratégia tervezésekor ismernie kell a fájlméret, a fájlszám és a könyvtármélység közötti kompromisszumokat.

  • Ha a fájlok kicsik, a fontos metrika a fájlok másodpercenkénti száma.
  • Ha a fájlok nagyok (10MiBi vagy nagyobb), a fontos metrika másodpercenkénti bájt.

Minden másolási folyamat átviteli sebességével és fájlok átvitelének sebességével rendelkezik, amely a másolási parancs hosszának időzítésével, valamint a fájlméret és a fájlszám figyelembe adásával mérhető. Az arányok mérésének ismertetése kívül esik a dokumentum hatókörén, de fontos tisztában lenni azzal, hogy kis vagy nagy fájlokkal fog-e foglalkozni.

Példa manuális másolásra

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 fájlrendszer-hívások számát a 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.

Kiszámítható fájlnévstruktúra

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 00011000egymás után vannak számmal elkönyvelve, az alábbi kifejezésekkel tíz 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/

Ismeretlen fájlnévstruktúra

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 egyetlen cél fájlrendszer csatlakoztatási ponton, lesz egy pont, ahol a 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 vFXT-fürt IP-címéhez, ugyanazzal a távoli fájlrendszer csatlakoztatási elérési úttal:

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

Kétfázisú rsync-folyamat használata

A standard rsync segédprogram nem működik jól a felhőbeli tárolás az Azure-beli Avere vFXT-n keresztül történő feltöltéséhez, mivel nagy számú fájllétrehozási és átnevezési műveletet hoz létre az adatintegritás garantálása érdekében. Ezzel a --inplace beállítással rsync azonban nyugodtan kihagyhatja a gondos másolási eljárást, ha ezt egy második futtatással hajtja végre, amely ellenőrzi a fájl integritását.

Egy szabványos rsync másolási művelet létrehoz egy ideiglenes fájlt, és kitölti az adatokat. Ha az adatátvitel sikeresen befejeződött, az ideiglenes fájl átnevezve lesz az eredeti fájlnévre. Ez a módszer akkor is garantálja a konzisztenciát, ha a fájlok a másolás során érhetők el. Ez a módszer azonban több írási műveletet hoz létre, ami lelassítja a fájláthelyezést a gyorsítótáron keresztül.

A beállítás --inplace közvetlenül a végleges helyére írja az új fájlt. A fájlok nem garantáltan konzisztensek az átvitel során, de ez nem fontos, ha később egy tárolórendszert használ.

A második rsync művelet konzisztencia-ellenőrzésként szolgál az első műveleten. Mivel a fájlok másolása már megtörtént, a második fázis egy gyors vizsgálat, amely biztosítja, hogy a célhelyen lévő fájlok egyezzenek a forrásban lévő fájlokkal. Ha a fájlok nem egyeznek meg, a rendszer újramásozza őket.

Mindkét fázist egyszerre, egy paranccsal állíthatja ki:

rsync -azh --inplace <source> <destination> && rsync -azh <source> <destination>

Ez a módszer egy egyszerű és időhatékony módszer az adathalmazok számára, akár a belső címtárkezelő által kezelhető fájlok számától. (Ez általában 200 millió fájl egy 3 csomópontos fürthöz, 500 millió fájl egy hatcsomópontos fürthöz stb.)

Az msrsync segédprogram használata

Az msrsync eszköz arra is használható, hogy adatokat helyezzen át az Avere-fürt háttérrendszeri fájlkezelőjének. Ez az eszköz több párhuzamos rsync folyamat futtatásával optimalizálja a sávszélesség-használatot. Elérhető a GitHubon a következő címen https://github.com/jbd/msrsync: .

msrsync a forráskönyvtárat külön "gyűjtőkre" bontja, majd mindegyik gyűjtőn futtatja az egyes rsync folyamatokat.

A négymagos virtuális gép előzetes tesztelése a legjobb hatékonyságot mutatta 64 folyamat használatakor. msrsync A beállítással -p a folyamatok számát 64-esre állíthatja.

Az argumentumot parancsokkal msrsync is használhatja--inplace. Ha ezt a lehetőséget használja, érdemes lehet futtatni egy második parancsot (a fent ismertetett rsynchez hasonlóan) az adatintegritás biztosítása érdekében.

msrsync csak helyi kötetekre és kötetekről tud írni. A forrásnak és a célnak elérhetőnek kell lennie helyi csatlakoztatásként a fürt virtuális hálózatában.

msrsync Ha egy Azure-felhőkötetet Avere-fürttel szeretne feltölteni, kövesse az alábbi utasításokat:

  1. Telepítés msrsync és előfeltételei (rsync és Python 2.6 vagy újabb)

  2. Határozza meg a másolandó fájlok és könyvtárak teljes számát.

    Használja például az Avere segédprogramot prime.py argumentumokkal prime.py --directory /path/to/some/directory (az URL https://github.com/Azure/Avere/blob/master/src/clientapps/dataingestor/prime.pyletöltésével érhető el).

    Ha nem használja prime.py, a GNU find eszközzel az alábbi módon számíthatja ki az elemek számát:

    find <path> -type f |wc -l         # (counts files)
    find <path> -type d |wc -l         # (counts directories)
    find <path> |wc -l                 # (counts both)
    
  3. A folyamatonkénti elemek számának meghatározásához ossza el az elemek számát 64-sel. Ezzel a -f számmal beállíthatja a gyűjtők méretét a parancs futtatásakor.

  4. A fájlok másolásához adja ki a msrsync parancsot:

    msrsync -P --stats -p 64 -f <ITEMS_DIV_64> --rsync "-ahv" <SOURCE_PATH> <DESTINATION_PATH>
    

    Ha ezt használja --inplace, adjon hozzá egy második végrehajtást anélkül, hogy ellenőriznie kell, hogy az adatok megfelelően lettek-e másolva:

    msrsync -P --stats -p 64 -f <ITEMS_DIV_64> --rsync "-ahv --inplace" <SOURCE_PATH> <DESTINATION_PATH> && msrsync -P --stats -p 64 -f <ITEMS_DIV_64> --rsync "-ahv" <SOURCE_PATH> <DESTINATION_PATH>
    

    Ez a parancs például úgy lett kialakítva, hogy 64 folyamat 11 000 fájlját helyezze át a /test/source-adattárból az /mnt/vfxt/adattárba:

    msrsync -P --stats -p 64 -f 170 --rsync "-ahv --inplace" /test/source-repository/ /mnt/vfxt/repository && msrsync -P --stats -p 64 -f 170 --rsync "-ahv --inplace" /test/source-repository/ /mnt/vfxt/repository

Párhuzamos másolási szkript használata

A parallelcp szkript akkor is hasznos lehet, ha adatokat helyez át a vFXT-fürt háttértárába.

Az alábbi szkript hozzáadja a végrehajtható parallelcpfájlt. (Ez a szkript az Ubuntu-hoz készült; ha más disztribúciót használ, külön kell telepítenie parallel .)

sudo touch /usr/bin/parallelcp && sudo chmod 755 /usr/bin/parallelcp && sudo sh -c "/bin/cat >/usr/bin/parallelcp" <<EOM
#!/bin/bash

display_usage() {
    echo -e "\nUsage: \$0 SOURCE_DIR DEST_DIR\n"
}

if [  \$# -le 1 ] ; then
    display_usage
    exit 1
fi

if [[ ( \$# == "--help") ||  \$# == "-h" ]] ; then
    display_usage
    exit 0
fi

SOURCE_DIR="\$1"
DEST_DIR="\$2"

if [ ! -d "\$SOURCE_DIR" ] ; then
    echo "Source directory \$SOURCE_DIR does not exist, or is not a directory"
    display_usage
    exit 2
fi

if [ ! -d "\$DEST_DIR" ] && ! mkdir -p \$DEST_DIR ; then
    echo "Destination directory \$DEST_DIR does not exist, or is not a directory"
    display_usage
    exit 2
fi

if [ ! -w "\$DEST_DIR" ] ; then
    echo "Destination directory \$DEST_DIR is not writeable, or is not a directory"
    display_usage
    exit 3
fi

if ! which parallel > /dev/null ; then
    sudo apt-get update && sudo apt install -y parallel
fi

DIRJOBS=225
JOBS=225
find \$SOURCE_DIR -mindepth 1 -type d -print0 | sed -z "s/\$SOURCE_DIR\///" | parallel --will-cite -j\$DIRJOBS -0 "mkdir -p \$DEST_DIR/{}"
find \$SOURCE_DIR -mindepth 1 ! -type d -print0 | sed -z "s/\$SOURCE_DIR\///" | parallel --will-cite -j\$JOBS -0 "cp -P \$SOURCE_DIR/{} \$DEST_DIR/{}"
EOM

Párhuzamos másolási példa

Ez a példa a párhuzamos másolási szkriptet használja az Avere-fürt forrásfájljaival való fordításhoz glibc .

A forrásfájlok az Avere-fürt csatlakoztatási pontján, az objektumfájlok pedig a helyi merevlemezen vannak tárolva.

Ez a szkript a fenti párhuzamos másolási szkriptet használja. A beállítás -j a párhuzamosításhoz parallelcp és make a párhuzamosításhoz használható.

sudo apt-get update
sudo apt install -y gcc bison gcc binutils make parallel
cd
wget https://mirrors.kernel.org/gnu/libc/glibc-2.27.tar.bz2
tar jxf glibc-2.27.tar.bz2
ln -s /nfs/node1 avere
time parallelcp glibc-2.27 avere/glibc-2.27
cd
mkdir obj
mkdir usr
cd obj
/home/azureuser/avere/glibc-2.27/configure --prefix=/home/azureuser/usr
time make -j