AWS ParallelCluster 3.7.1 Ubuntu 22.04 で Mountpoint for Amazon S3 を利用できないときの確認ポイント

Mountpoint for Aamzon S3のインストレーションガイド通りにはいきません。
2023.09.30

AWS ParallelCluster 3.7.0 の Ubuntu 22.04 へ Ubuntu 20.04 時に使用した Mountpoint for Amazon S3 を設定を移植しました。すると、スクリプトの実行に失敗しクラスターを構築できませんでした。原因切り分けと対処方法を紹介します。

確認結果

  • Mountpoint for Amazon S3(v1.0.2)には libfuse2 ライブラリが必要
  • ParallelCluster で利用する Ubuntu 22.04 には libfuse2 がインストールされていない
    • AMI ID: ami-01fbe9119a09fa5b6
  • 以下のコマンド実行後にInstallationの手順を行う必要がある
    • sudo apt update && sudo apt install libfuse2 -y

原因調査

Mountpoint for Amazon S3 がリリースされたあとにリリースされた AWS ParallelCluster 3.7.0 で初めて Ubuntu 22.04 がサポートされました。

ParallelCluster 3.6.1 の Ubuntu 20.04 と Mountpoint for Amazon S3 1.0.0 で動作実績のある設定があります。 ParallelCluster と Mountpoint for Amazon S3 を組み合わせる方法は以下の記事を参考にしてください。

動作実績のある設定を Ubuntu 22.04 の新環境へ移植したところクラスターの構築に失敗しました。ヘッドノードは起動できましたが、コンピュートノードが起動してはすぐに終了するループに陥りました。

コンピュートノードはカスタムブートストラップ処理で Mountpoint for Amazon S3 のインストールからマウントまで実行するスクリプトを設定していました。おそらく原因はここで実行しているスクリプトが Ubuntu 22.04 に変わったことで影響があったという仮説のもと調査します。

検証環境

ヘッドノードで Mountpoint for Amazon S3 を利用して S3 バケットをマウントできるか検証します。

項目
AWS ParallelCluster 3.7.1
OS Ubuntu 22.04
Mountpoint for Amazon S3 1.0.2

切り分け

切り分けしやすい環境を用意しました。新たに構築した ParallelCluster 3.7.1 のクラスターのヘッドノード上で動作検証を行います。ParallelCluster のバージョンは脆弱性対応のため v3.7.0 ではなく v3.7.1 を利用します。

コンピュートノードで実行されるスクリプトは以下です。コマンドを順次実行して確認していきました。

#! /bin/bash

wget -P /tmp https://s3.amazonaws.com/mountpoint-s3-release/latest/x86_64/mount-s3.deb
sudo apt-get install /tmp/mount-s3.deb -y
sudo mkdir /mnt/s3
sudo mount-s3 --allow-delete --allow-other [マウントする S3 バケット名] /mnt/s3/

mount-s3(Mountpoint for Amazon S3)のインストールにはlibfuse2ライブラリが必要でした。

$ sudo apt-get install /tmp/mount-s3.deb -y
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Note, selecting 'mount-s3' instead of './mount-s3.deb'
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 mount-s3 : Depends: libfuse2 but it is not installable
E: Unable to correct problems, you have held broken packages.

libfuse2 の標準インストール状況を調べてみました。どうやら ParallelCluster と Ubuntu 22.04 の組み合わせだと libfuse2 をインストールしないといけない状況でした。

  • ParallelCluster の Ubuntu 20.04 イメージ: libfuse2 インストール済み
  • ParallelCluster の Ubuntu 22.04 イメージ: libfuse2 未インストール
  • 素の Ubuntu 22.04 イメージ: libfuse2 インストール済み

前提として libfuse2 のインストールが必要なことは公式ドキュメントには書かれていません。

Installation - Amazon Simple Storage Service

対処方法

libfuse2 を手動でインストールします。

sudo apt update
sudo apt install libfuse2 -y

libfuse2 インストール後は正常にインストールできます。

sudo apt-get install /tmp/mount-s3.deb -y

mount-s3 コマンドを実行できるようになりました。

$ mount-s3 --version
mount-s3 1.0.2

カスタムブートストラップスクリプトで実行する場合

カスタムブートストラップ処理の動作検証はまだできておりません。スクリプトを修正すると以下の様になるはずです。

2023/10/8追記
動作検証しました。詳細は以下のブログを参照ください。

#! /bin/bash

sudo apt update
sudo apt install libfuse2 -y

wget -P /tmp https://s3.amazonaws.com/mountpoint-s3-release/latest/x86_64/mount-s3.deb
sudo apt-get install /tmp/mount-s3.deb -y
sudo mkdir /mnt/s3
sudo mount-s3 --allow-delete --allow-other [マウントする S3 バケット名] /mnt/s3/

おわりに

新規にクラスターを作成するなら ParallelCluster 3.7.1 以降をご利用ください。v3.7.0 以前のバージョンは脆弱性(CVE-2023-41915)を抱えており、修正のためのアップデート作業がなかなか大変です。