Udostępnij za pośrednictwem


Pozyskiwanie danych usługi Azure HPC Cache — metoda skryptu kopiowania równoległego

Ten artykuł zawiera instrukcje dotyczące tworzenia skryptu parallelcp i używania go do przenoszenia danych do kontenera usługi Blob Storage do użycia z usługą Azure HPC Cache.

Aby dowiedzieć się więcej na temat przenoszenia danych do usługi Blob Storage dla usługi Azure HPC Cache, przeczytaj Przenoszenie danych do usługi Azure Blob Storage.

Tworzenie skryptu parallelcp

Poniższy skrypt doda plik wykonywalny parallelcp. (Ten skrypt jest przeznaczony dla systemu Ubuntu; w przypadku korzystania z innej dystrybucji należy zainstalować parallel oddzielnie).

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

Przykład kopiowania równoległego

W tym przykładzie użyto równoległego skryptu kopiowania do skompilowania glibc przy użyciu plików źródłowych w usłudze Azure HPC Cache.

Pliki źródłowe są buforowane w punkcie instalacji usługi Azure HPC Cache, a pliki obiektów są przechowywane na lokalnym dysku twardym.

W tym przykładzie użyto równoległego skryptu kopiowania z opcją -j i make uzyskania równoległego przetwarzania równoległego.

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/cache1 hpccache
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