AWS FSx for Lustre S3レプリケーションオブジェクトをインポートできない

# 初めに

なぜインポートできないのか理由はわかりません。原因をご存知の方がいらっしゃいましたらご教示頂けますと幸いです。

# その後

この記事を書いてから新たなことがわかりました。復号の権限がLustreに与えられていないことが原因である可能性があります。検証出来次第、更新します。2021/06/15

***

Storage Gateway で同様のことが起き、KMSの権限を付与したところアクセスできました。やはり復号の権限のようです。Lustre でも後日検証してみます。2021/06/15

https://qiita.com/quryu/items/9a0f4ee77b193ff8a4b6

# やってみた

Lustreのストレージ構造は、MDT（Meta Data Target） と OST（Object Storage Target） という2つの構造を持っています。MDT はファイルのメタデータを格納し、OST は実データを格納します。

以下の `released exists archived` となっている状態のファイルは、S3 から透過的に表示されたファイルであることを意味しています。つまりメタデータのみ Lustre に格納され、実データは Lustre にはありません。

実データを Lustre にインポートする方法は2つあります。

1. ファイルにアクセスする
2. `lfs hsm_restore` というコマンドを実行する

```
$ sudo lfs hsm_state /mnt/fsx/*
/mnt/fsx/sample.txt: (0x0000000d) released exists archived, archive_id:1
/mnt/fsx/test_upload_2.txt: (0x0000000d) released exists archived, archive_id:1
/mnt/fsx/test_upload_3.txt: (0x0000000d) released exists archived, archive_id:1
/mnt/fsx/test_upload_4.txt: (0x0000000d) released exists archived, archive_id:1
/mnt/fsx/test_upload_5.txt: (0x0000000d) released exists archived, archive_id:1
/mnt/fsx/test_upload_6.txt: (0x0000000d) released exists archived, archive_id:1
/mnt/fsx/test_upload.txt: (0x0000000d) released exists archived, archive_id:1
```

1 の方法を実行してみます。

```
$ cat /mnt/fsx/test_upload.txt
test upload
```

再度ファイルの状態を確認してみます。test_upload.txt のみ、`exists archived` という状態に移行しました。これは Lustre に実データが格納されたことを意味します。

```
/mnt/fsx/sample.txt: (0x0000000d) released exists archived, archive_id:1
/mnt/fsx/test_upload_2.txt: (0x0000000d) released exists archived, archive_id:1
/mnt/fsx/test_upload_3.txt: (0x0000000d) released exists archived, archive_id:1
/mnt/fsx/test_upload_4.txt: (0x0000000d) released exists archived, archive_id:1
/mnt/fsx/test_upload_5.txt: (0x0000000d) released exists archived, archive_id:1
/mnt/fsx/test_upload_6.txt: (0x0000000d) released exists archived, archive_id:1
/mnt/fsx/test_upload.txt: (0x00000009) exists archived, archive_id:1
```

次に 2 の方法を実行してみます。

```
$ sudo lfs hsm_restore /mnt/fsx/sample.txt
```

標準出力はありませんが、samle.txt の状態が `exists archived` に移行しました。

```
$ sudo lfs hsm_state /mnt/fsx/*
/mnt/fsx/sample.txt: (0x00000009) exists archived, archive_id:1
/mnt/fsx/test_upload_2.txt: (0x0000000d) released exists archived, archive_id:1
/mnt/fsx/test_upload_3.txt: (0x0000000d) released exists archived, archive_id:1
/mnt/fsx/test_upload_4.txt: (0x0000000d) released exists archived, archive_id:1
/mnt/fsx/test_upload_5.txt: (0x0000000d) released exists archived, archive_id:1
/mnt/fsx/test_upload_6.txt: (0x0000000d) released exists archived, archive_id:1
/mnt/fsx/test_upload.txt: (0x00000009) exists archived, archive_id:1
```

次にレプリケートされたオブジェクトをインポートしてみます。`cat` でファイルにアクセスすれば（方法 1）、上記のようにファイルの中身を見ることができるはずです。

```
$ cat /mnt/fsx/test_upload_2.txt
cat: /mnt/fsx/test_upload_2.txt: No data available
```

ファイルにアクセスできませんでした。次に 2 方法を実行してみます。

```
$ sudo lfs hsm_restore /mnt/fsx/test_upload_2.txt
```

再度状態を確認してみます。`lfs hsm_restore` を実行しても依然として test_upload_2.txt は `released exists archived` のままです。インポートができませんでした。

```
$ sudo lfs hsm_state /mnt/fsx/*
/mnt/fsx/sample.txt: (0x00000009) exists archived, archive_id:1
/mnt/fsx/test_upload_2.txt: (0x0000000d) released exists archived, archive_id:1
/mnt/fsx/test_upload_3.txt: (0x0000000d) released exists archived, archive_id:1
/mnt/fsx/test_upload_4.txt: (0x0000000d) released exists archived, archive_id:1
/mnt/fsx/test_upload_5.txt: (0x0000000d) released exists archived, archive_id:1
/mnt/fsx/test_upload_6.txt: (0x0000000d) released exists archived, archive_id:1
/mnt/fsx/test_upload.txt: (0x00000009) exists archived, archive_id:1
```

レプリケートされたオブジェクトを直接ダウンロードし、/mnt/fsx にコピーすることは可能です。しかし通常のコピーでは No data available が表示されます。

```
$ sudo cp test_upload_2.txt /mnt/fsx/
cp: cannot create regular file ‘/mnt/fsx/test_upload_2.txt’: No data available
```

 `-f` オプションを付けるとコピーすることができます。

```
$ sudo cp -f test_upload_2.txt /mnt/fsx/
```

# 参考記事

https://docs.aws.amazon.com/ja_jp/fsx/latest/LustreGuide/performance.html

https://dev.classmethod.jp/articles/amazon-fsx-for-lustre-learn/

https://d1.awsstatic.com/webinars/jp/pdf/services/20190319_AWS-Blackbelt-Amazon_FSx_Lustre.pdf

https://www.hpc.co.jp/tech-blog/2020/02/03/lustrefs-for-everyone-1/

https://www.hpc.co.jp/tech-blog/2020/02/20/lustrefs-for-everyone-2/

https://www.hpc.co.jp/tech-blog/2020/03/25/lustrefs-for-everyone-3/