インテル® Xeon Phi™ コプロセッサー上での Lustre のコンパイル、設定および実行
この記事は、インテル® デベロッパー・ゾーンに公開されている「Compiling, Configuring and running Lustre on Intel® Xeon Phi™ Coprocessor」の日本語参考訳です。
この記事では、インテル® Xeon Phi™ コプロセッサー上で Lustre を有効にする推奨手順を紹介します。ここで紹介する手順は、インテル® メニーコア・プラットフォーム・ソフトウェア・スタック (インテル® MPSS) のバージョン 3.3.x と 3.4.x そして Lustre のバージョン 2.5.x と 2.6.0 に適用できます。
- MPSS 3.3.x と 3.4.x 向けの Lustre のコンパイル
- インテル® Xeon Phi™ コプロセッサー上で Lustre クライアントを設定する
- インテル® Xeon Phi™ コプロセッサー上で Lustre クライアントをマウントする
- トラブルシューティング
MPSS 3.3.x と 3.4.x 向けに Lustre をコンパイルする方法
インテル® Xeon Phi™ コプロセッサー MPSS ダウンロードページから、インテル® メニーコア・プラットフォーム・ソフトウェア・スタック (インテル® MPSS) のパッケージをダウンロードします。
任意のディレクトリーで、ダウンロードしたパッケージを解凍します。ここでは、MPSS 3.3.2 パッケージを使用して説明を行います。すでに MPSS がインストールされている場合、手順 3 をスキップできます。
MVER=3.3.2# MPSS version mkdir -p /tmp/mpss cd /tmp/mpss tar xf mpss-src-$MVER.tar tar xf mpss-$MVER-linux.tar tar xf mpss-$MVER-k1om.tar
インテル® Xeon Phi™ コプロセッサー向け MPSS をインストールします。ここで紹介する手順を続けるには、MPSS が正しくインストールされ、起動していることを想定しています。MPSS のインストール手順は、インテル® MPSS ダウンロードページの利用する MPSS バージョンのユーザーガイドと readme ファイルに記載されています。
クロスコンパイル SDK をインストールします。
MVER=3.3.2 # MPSS version cd /tmp/mpss sudo rpm -ivh ./mpss-$MVER/mpss-sdk-k1om-$MVER-1.x86_64.rpm
外部モジュールをコンパイルするためインテル® Xeon Phi™ コプロセッサーのカーネルソースを準備します。インテル® Xeon Phi™ コプロセッサー上の現在の Linux* カーネルのバージョンは、2.6.38.8+mpss$MVER です。カーネルのソースファイルが解凍され、そして cpio アーカイブファイルが作成され、RPM パッケージから抽出されます。
MVER=3.3.2 # MPSS version cd /tmp/mpss tar xjf ./mpss-$MVER/src/linux-2.6.38+mpss$MVER.tar.bz2 rpm2cpio ./mpss-$MVER/k1om/kernel-dev-2.6.38+mpss$MVER-0.1.build0.knightscorner.rpm | cpio -idm cp ./boot/config-2.6.38.8+mpss$MVER ./linux-2.6.38+mpss$MVER/.config cp ./boot/Module.symvers-2.6.38.8+mpss$MVER ./linux-2.6.38+mpss$MVER/Module.symvers cd ./linux-2.6.38+mpss$MVER eval $(grep " PATH=" /opt/mpss/$MVER/environment-setup-k1om-mpss-linux) make ARCH=k1om silentoldconfig modules_prepare
Lustre をコンパイルするため、インテル® Xeon Phi™ コプロセッサーの OFED ドライバーを抽出します。Lustre を TCP を介してのみの設定でテストする場合、この手順をスキップしてください。
MVER=3.3.2 # MPSS version rpm2cpio ./mpss-$MVER/ofed/modules/ofed-driver-devel-$(uname -r)-$MVER-1.x86_64.rpm | cpio -idm
OFED rpm が、利用中のカーネルのバージョンと一致しない場合、カーネルに合わせて OFED モジュールを再コンパイルする必要があります。OFED モジュールをコンパイルする手順は、インテル® MPSS ダウンロードページの利用する MPSS バージョンのユーザーガイドに記載されています。
これでインテル® Xeon Phi™ コプロセッサーのカーネルと OFED を、Lustre のコンパイルに使用できます。
パブリック GIT レポジトリーから Lustre のソースをダウンロードします。利用中の Lustre のバージョンに応じて、b2_5 もしくは b2_6 ブランチをチェックアウトできます。クローニング後、Lustre-release ディレクトリーが作成されます。
cd /tmp git clone git://git.whamcloud.com/fs/lustre-release.git cd /tmp/lustre-release git checkout b2_5
インテル® Xeon Phi™ コプロセッサー・カーネルと OFED を使用して Lustre をコンパイルします。
MVER=3.3.2 # MPSS version cd /tmp/lustre-release source /opt/mpss/$MVER/environment-setup-k1om-mpss-linux export LD=k1om-mpss-linux-ld sh autogen.sh ./configure --with-linux=/tmp/mpss/linux-2.6.38+mpss$MVER \ --with-o2ib=/tmp/mpss/usr/src/ofed-driver \ --disable-server --disable-tests --disable-doc \ --host=k1om-mpss-linux --build=x86_64-pc-linux make rpms
Lustre を TCP を介して構成する場合、次の手順を次のように変更します。
./configure --with-linux=/tmp/mpss/linux-2.6.38+mpss$MVER \ --without-o2ib \ --disable-server --disable-tests --disable-doc \ --host=k1om-mpss-linux --build=x86_64-pc-linux make rpms
~/rpmbuild/RPMS/x86_64 にいくつかの Lustre client RPM が生成されます。コプロセッサーを搭載するホストにインストールするには、Lustre-mic-client モジュールが必要です。
lustre-client-mic-<lustre-version>.x86_64.rpm lustre-client-mic-modules-<lustre-version>.x86_64.rpm
インテル® Xeon Phi™ コプロセッサー上で Lustre クライアントを設定する
Lustre client RPM は、インテル® Xeon Phi™ コプロセッサーを搭載するホストにインストールされる必要があります。これらのモジュールは、MPSS サービスが再起動したときに一度だけコプロセッサーに展開されます。
sudo rpm --nodeps -ivh lustre-client-mic-<lustre-version>.x86_64.rpm lustre-client-mic-modules-<lustre-version>.x86_64.rpm
Lustre を設定してインテル® Xeon Phi™ コプロセッサー上で使用するためサービスを再起動します。
sudo service mpss stop sudo service mpss start
これでコプロセッサー上の Lustre の設定が完了しました。このステップは、IPoIB がコプロセッサー上で正しく設定されていることを前提としています。IPoIB の設定手順は、インテル® MPSS ダウンロード・ページにある、利用する MPSS バージョンのユーザーガイドに記載されています。Lustre MGS サーバーがコプロセッサーからアクセスできることが重要です。
この例では、カードの IPoIB インターフェイスは ‘ib0’ そして tcp インターフェイスは ‘mic0’ としています。
ssh mic0 "echo 'options lnet networks=\"o2ib0(ib0),tcp0(mic0)\"' > /etc/modprobe.d/lustre.conf" ssh mic0 "modprobe lustre"
この設定をコプロセッサーがリブートするたびに行うには、次の操作を行います。
mkdir -p /var/mpss/mic0/etc/modprobe.d echo 'options lnet networks=\"o2ib0(ib0),tcp0(mic0)\"' > /var/mpss/mic0/etc/modprobe.d/lustre.conf echo 'file /etc/modprobe.d/lustre.conf etc/modprobe.d/lustre.conf 0644 0 0' >> /var/mpss/mic0.filelist
インテル® Xeon Phi™ コプロセッサー上で Lustre クライアントをマウントする
適切に設定を行った後、ネットワークから Lustre ファイル共有をマウントできます:
ssh mic0 "mkdir -p /mnt/lustre" ssh mic0 "/sbin/mount.lustre <MGS IP>@o2ib0:/lustre /mnt/lustre"
ここで MGS とは、Lustre 管理サーバーを指します。Lustre を TCP を介してマウントするには、次の手順を使用します:
ssh mic0 "mkdir -p /mnt/lustre" ssh mic0 "/sbin/mount.lustre <MGS IP>@tcp0:/lustre /mnt/lustre"
このマウント・ポイントをコプロセッサーがリブートするたびに継続的に使用するには、次の操作を行います:
mkdir -p /var/mpss/mic0/mnt/lustre echo 'dir /mnt/lustre 0755 0 0' >> /var/mpss/mic0.filelist
そして、自動マウントのため /etc/fstab にこのマウント・ポイントを追加できます。
インテル® Xeon Phi™ コプロセッサー上の Lustre が正しく設定されているかどうかを確認するには、コプロセッサーから Lustre ファイル共有できるかどうか確かめます:
ssh mic0 lfs check servers //Should list down active lustre servers if the mount is successful lfs df -h //Should list down Lustre file system volume usage for Metadata and Object targets
トラブルシューティング
以下に Lustre の設定やコプロセッサーでの実行時に発生する可能性がある問題と解決策をリストします。
インテル® Xeon Phi™ カードを搭載するホスト上で、Lustre-Client-Mic* RPM のインストール中に依存関係のエラーが発生した。
rpm -ivh lustre-client-mic-2.6.0-2.6.38.8+mpss3.3.2.x86_64.rpm lustre-client-mic-modules-2.6.0-2.6.38.8+mpss3.3.2.x86_64.rpm error: Failed dependencies: libc.so.6(GLIBC_2.14)(64bit) is needed by lustre-client-mic-2.6.0-2.6.38.8+mpss3.3.2.x86_64 libdl.so.2(GLIBC_2.14)(64bit) is needed by lustre-client-mic-2.6.0-2.6.38.8+mpss3.3.2.x86_64 kernel = 2.6.38.8+mpss3.3.2 is needed by lustre-client-mic-modules-2.6.0-2.6.38.8+mpss3.3.2.x86_64
解決方法:
モジュールは、ホスト上ではなくコプロセッサー上にロードされるため、依存性チェックは無視できます。rpm --nodeps -ivh lustre-client-mic-2.6.0-2.6.38.8+mpss3.3.2.x86_64.rpm lustre-client-mic-modules-2.6.0-2.6.38.8+mpss3.3.2.x86_64.rpm
インテル® Xeon Phi™ カード上の mount.lustre が失敗し、“Is MGS server running” のようなメッセージが表示された。
解決方法:
- MGS サーバーが起動しているかチェックしてください。以下のコマンドを MGS サーバー上で実行する必要があります。
cat /proc/fs/lustre/mgs/MGS/live/* //Should list down active targets
- コプロセッサーから Lustre management server (MGS) を ping して確認できます。ping が失敗した場合、ネットワークの設定を確認してください。Lustre MGS サーバーのネットワーク上の配置場所に応じて、内部もしくは外部ブリッジの設定が必要になることがあります。ネットワークを設定する手順の詳細は、インテル® MPSS ダウンロードページの利用する MPSS バージョンのユーザーガイドに記載されています。
- MGS サーバーが起動しているかチェックしてください。以下のコマンドを MGS サーバー上で実行する必要があります。
次のように、インテル® Xeon Phi™ コプロセッサーを搭載するホストでのカウントが失敗した:
mount -t lustre <MGS IP>@tcp0:/lustre /lustre mount: unknown filesystem type 'lustre'
解決方法:
おそらく、(コプロセッサーではなく) ホスト上で Lustre ファイル共有をマウントしようとしています。ホスト向けの Lustre をコンパイルする手順が異なります。例えば、カーネルバージョン 2.6.32-431.el6.x86_64 と Lustre 2.6 で、Lustre を TCP を介してマウントする手順は次のようになります。git clone http://git.whamcloud.com/fs/lustre-release.git cd lustre-release/ git checkout b2_6 sh autogen.sh ./configure --with-linux=/usr/src/kernels/2.6.32-431.el6.x86_64 --without-o2ib --disable-server --disable-tests --disable-doc cd ~/rpmbuild/RPMS/x86_64/ rpm -ihv lustre-client-2.6.0-2.6.32_431.el6.x86_64.x86_64.rpm lustre-client-modules-2.6.0-2.6.32_431.el6.x86_64.x86_64.rpm echo "options lnet networks=tcp0(eth0)" > /etc/modprobe.d/lustre.conf modprobe lustre mount -t lustre <MGS IP>@tcp0:/lustre /lustre
コンパイラーの最適化に関する詳細は、最適化に関する注意事項を参照してください