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.
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:
- Manuális másolási példa – Részletes magyarázat másolási parancsokkal
- Példa kétfázisú rsyncre
- Részben automatizált (msrsync) példa
- Párhuzamos másolási példa
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.
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 0001
1000
egymá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:
Telepítés
msrsync
és előfeltételei (rsync és Python 2.6 vagy újabb)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
argumentumokkalprime.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 GNUfind
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)
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.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ó parallelcp
fá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