Amazon FSx for LustreでS3エクスポート/インポートしてみた #reinvent
こんにちは、坂巻です。
re:Invent 2018にて発表された「Amazon FSx for Lustre」はS3と統合されており、S3データにシームレスなアクセスが可能です。今回はS3へのエクスポート/インポートを実施してみたいと思います。
Amazon FSx for Lustreのサービス仕様、構築手順については割愛していますので、以下をご確認ください。
- [新サービス] HPC用の高速な分散ファイルシステムAmazon FSx for Lustreが発表されました #reinvent
- 新発表されたAmazon FSx for Lustreを構築してEC2からアクセスしてみた #reinvent
やってみた
エクスポート
オプションのデータリポジトリを指定し、ファイルシステムを作成しました。
データリポジトリは、以下のような定義です。
ファイルシステムが作成された後に、EC2よりマウントしてみました。
$ df -h Filesystem Size Used Avail Use% Mounted on /dev/xvda2 10G 1.7G 8.4G 17% / devtmpfs 472M 0 472M 0% /dev tmpfs 496M 0 496M 0% /dev/shm tmpfs 496M 13M 483M 3% /run tmpfs 496M 0 496M 0% /sys/fs/cgroup tmpfs 100M 0 100M 0% /run/user/1000 10.0.10.83@tcp:/fsx 3.4T 14M 3.4T 1% /fsx
マウントポイント配下にファイルを作成します。
$ sudo echo 'Hello' >/fsx/export.txt $ ls -l /fsx total 1 -rw-r--r--. 1 root root 6 Dec 2 01:32 export.txt
S3へファイルをエクスポートする前に、エクスポート対象のバケットを確認しました。
バケットが空であることが確認できましたので、S3へエクポートします。
$ sudo lfs hsm_archive /fsx/export.txt $ sudo lfs hsm_action /fsx/export.txt /fsx/export.txt: NOOP
sudo lfs hsm_archive
でS3へ出力しています。sudo lfs hsm_action
でファイルがデータリポジトリに正常にエクスポートされたことを確認しています。戻り値「NOOP」は正常にエクスポートされたことを示します。エクスポート対象バケットの「FSxLustre20181202T010836Z」を確認してみます。
エクスポートできた事が確認できました。次はディレクトリのエクスポートを行ってみたいと思います。エクスポートするディレクトリ等を作成します。
$ sudo mkdir /fsx/exportdir $ cp -p /fsx/export.txt /fsx/exportdir/export_1.txt $ cp -p /fsx/export.txt /fsx/exportdir/export_2.txt $ ls -l /fsx/exportdir total 1 -rw-r--r--. 1 root root 6 Dec 2 01:32 export_1.txt -rw-r--r--. 1 root root 6 Dec 2 01:32 export_2.txt
ディレクトリをS3へエクポートします。
$ find /fsx/exportdir/ -type f -print0 | xargs -0 -n 50 -P 8 sudo lfs hsm_archive $ find /fsx/exportdir/ -type f -print0 | xargs -0 -n 50 -P 8 sudo lfs hsm_action | grep "ARCHIVE" | wc -l 0
ハイライト部のコマンドで正常にエクスポートされたことを確認しています。戻り値「0」は正常にエクスポートされたことを示します。エクスポート対象バケットの「FSxLustre20181202T010836Z」配下の「exportdir」を確認してみます。
エクスポートできた事が確認できました。なお、/fsx配下に存在しないファイルについてはエクスポートすることはできません。
$ ls -l /home/ec2-user/kmod-lustre-client-2.10.5-1.el7.x86_64.rpm -rw-rw-r--. 1 ec2-user ec2-user 2291884 Aug 27 17:47 /home/ec2-user/kmod-lustre-client-2.10.5-1.el7.x86_64.rpm $ sudo lfs hsm_archive /home/ec2-user/kmod-lustre-client-2.10.5-1.el7.x86_64.rpm Cannot read FID of /home/ec2-user/kmod-lustre-client-2.10.5-1.el7.x86_64.rpm: No data available
また、ファイルを削除してもS3側のファイルが削除されることはありません。
$ sudo rm -rfd /fsx/exportdir $ sudo rm -rf export.txt $ ls -l /fsx total 0
以下は、ローカルにてファイルを削除した後のS3バケットです。
インポート
インポートはファイルシステム作成中に行われますので、インポートするためのS3バケットを作成しました。
Importing data from your Amazon S3 data repository happens during file system creation. If you have a large number of files to import, this affects how long it takes for your file system to be created.
作成したファイルは以下2ファイルです。
- s3://fsx-lustre-test2/import_1.txt
- s3://fsx-lustre-test2/dir/import_2.txt
作成したバケットとリンクするようにファイルシステムを作成しました。
ファイルシステムマウント前の状態です。
$ ls -l /fsx total 0 $ df -h Filesystem Size Used Avail Use% Mounted on /dev/xvda2 10G 1.7G 8.4G 17% / devtmpfs 472M 0 472M 0% /dev tmpfs 496M 0 496M 0% /dev/shm tmpfs 496M 13M 483M 3% /run tmpfs 496M 0 496M 0% /sys/fs/cgroup tmpfs 100M 0 100M 0% /run/user/1000 tmpfs 100M 0 100M 0% /run/user/0
ファイルシステムをマウントします。
$ sudo mount -t lustre fs-0fb85428e4b38c6c1.fsx.us-east-1.amazonaws.com@tcp:/fsx /fsx $ ls -lR /fsx /fsx: total 33 drwxr-xr-x. 2 root root 33280 Dec 2 02:58 dir -rwxr-xr-x. 1 root root 6 Dec 2 02:49 import_1.txt /fsx/dir: total 1 -rwxr-xr-x. 1 root root 6 Dec 2 02:50 import_2.txt
インポートの確認ができました。
さいごに
Amazon FSx for LustreでS3へシームレスにアクセスすることができました。データ処理はAmazon FSx for Lustreにて実施して、結果についてはより安価なS3に格納しておく等、用途にあわせた利用ができそうですね!