Amazon FSx for LustreからエクスポートされたファイルをLustreを介して削除できるか確認してみた
LustreやS3で削除したファイルがお互いにどのように反映されるのか気になる
こんにちは、のんピ(@non____97)です。
皆さんはLustreやS3で削除したファイルがお互いにどのように反映されるのか気になったことはありますか? 私はあります。
自動エクスポート/インポート機能でDelete
を有効化することで、以下のような処理を実現することが可能です。
- Lustre上でファイルを削除すればS3上のオブジェクトが削除される (自動エクスポート)
- S3上のオブジェクトが削除すればLustre上でファイルが削除される (自動インポート)
では、これら機能が有効ではない場合はどうでしょうか。
特に、誤ってエクスポートしてしまったファイルを削除する際に都度S3側からオブジェクトを削除しに行くのは面倒です。Lustre側から削除したいところです。
実際に可能かどうか確認してみます。
いきなりまとめ
- 自動エクスポートの有効化有無に関わらず、
lfs hsm_remove
コマンドを用いてデータリポジトリのS3バケット上からオブジェクトを削除することはできない- 誤ってエクスポートした場合は都度S3バケット上から直接ファイルを削除する必要がある
- 自動エクスポート/インポート機能によって常にファイルが同期されている訳ではない
- ファイル/オブジェクトの操作をしたタイミングで同期が走る
- そのため、FSxLファイルシステムを削除したとしてもS3バケット上にはオブジェクトは残り続ける
やってみた
検証環境
検証環境は以下のとおりです。
Amazon FSx for Lustre(以降FSxL)ファイルシステムの作成時のオプションは以下のとおりです。
自動エクスポート/インポートは有効化しています。
現在のデータリポジトリとして設定しているS3バケット内のオブジェクトは以下のとおりです。
マウント時の状態は以下のとおりです。
$ sudo mount -t lustre -o relatime,flock fs-0c563583bbb2e520c.fsx.us-east-1.amazonaws.com@tcp:/hp5qhbuv /mnt/fsxl/
$ df -hT -t lustre
Filesystem Type Size Used Avail Use% Mounted on
10.10.0.7@tcp:/hp5qhbuv lustre 1.2T 7.5M 1.2T 1% /mnt/fsxl
$ ls -l /mnt/fsxl/s3
total 3
-rw-r--r--. 1 root root 134217728 Sep 22 10:04 random_pattern_binary_block_128MiB
-rw-r--r--. 1 root root 134217728 Sep 22 10:04 random_pattern_binary_block_128MiB_2
-rw-r--r--. 1 root root 134217728 Sep 22 10:04 random_pattern_binary_block_128MiB_3
-rw-r--r--. 1 root root 134217728 Sep 22 10:07 random_pattern_binary_block_128MiB_4
-rw-r--r--. 1 root root 4294967296 Sep 17 09:02 random_pattern_binary_block_4GiB
$ lfs hsm_state /mnt/fsxl/s3/*
/mnt/fsxl/s3/random_pattern_binary_block_128MiB: (0x0000000d) released exists archived, archive_id:1
/mnt/fsxl/s3/random_pattern_binary_block_128MiB_2: (0x0000000d) released exists archived, archive_id:1
/mnt/fsxl/s3/random_pattern_binary_block_128MiB_3: (0x0000000d) released exists archived, archive_id:1
/mnt/fsxl/s3/random_pattern_binary_block_128MiB_4: (0x0000000d) released exists archived, archive_id:1
/mnt/fsxl/s3/random_pattern_binary_block_4GiB: (0x0000000d) released exists archived, archive_id:1
$ lfs df -h
UUID bytes Used Available Use% Mounted on
hp5qhbuv-MDT0000_UUID 32.7G 9.0M 32.7G 1% /mnt/fsxl[MDT:0]
hp5qhbuv-OST0000_UUID 1.1T 7.5M 1.1T 1% /mnt/fsxl[OST:0]
filesystem_summary: 1.1T 7.5M 1.1T 1% /mnt/fsxl
メタデータはLustre側で認識していますが、released exists archived
であることからデータの実態は保持していないことが分かります。
lfsコマンドでリモートストレージ上からファイルを削除するコマンドの確認
下調べとして、lfsコマンドでリモートストレージ上からファイルを削除するコマンドの確認しましょう。
$ lfs --help
Try interactive use without arguments or use one of:
"setstripe"
"getstripe"
"setdirstripe"
"getdirstripe"
"mkdir"
"rm_entry"
"unlink_foreign"
"pool_list"
"find"
"check"
"osts"
"mdts"
"df"
"getname"
"setquota"
"quota"
"project"
"flushctx"
"changelog"
"changelog_clear"
"fid2path"
"path2fid"
"rmfid"
"data_version"
"hsm_state"
"hsm_set"
"hsm_clear"
"hsm_action"
"hsm_archive"
"hsm_restore"
"hsm_release"
"hsm_remove"
"hsm_cancel"
"swap_layouts"
"migrate"
"mv"
"ladvise"
"mirror"
"getsom"
"heat_get"
"heat_set"
"pcc"
"help"
"exit"
"quit"
"--version"
"--list-commands"
as argument.
LustreとS3は階層型ストレージの関係になるため、hsm
(Hierarchical Storage Management)から始まるコマンドがいかにもという感じですね。
man lfs
とマニュアルを確認してもズバリの説明やオプションの詳細が記載なかったため、各hsm関連のサブコマンドのヘルプを叩きます。
> for cmd in $(lfs --help | grep hsm | tr -d '"'); do
printf "%-12s: " $cmd
lfs help $cmd
echo "---"
done
hsm_state : hsm_state: Display the HSM information (states, undergoing actions) for given files.
usage: hsm_state <file> ...
---
hsm_set : hsm_set: Set HSM user flag on specified files.
usage: hsm_set [--norelease] [--noarchive] [--dirty] [--exists] [--archived] [--lost] [--archive-id NUM] <file> ...
---
hsm_clear : hsm_clear: Clear HSM user flag on specified files.
usage: hsm_clear [--norelease] [--noarchive] [--dirty] [--exists] [--archived] [--lost] <file> ...
---
hsm_action : hsm_action: Display current HSM request for given files.
usage: hsm_action <file> ...
---
hsm_archive : hsm_archive: Archive file to external storage.
usage: hsm_archive [--filelist FILELIST] [--data DATA] [--archive NUM] <file> ...
---
hsm_restore : hsm_restore: Restore file from external storage.
usage: hsm_restore [--filelist FILELIST] [--data DATA] <file> ...
---
hsm_release : hsm_release: Release files from Lustre.
usage: hsm_release [--filelist FILELIST] [--data DATA] <file> ...
---
hsm_remove : hsm_remove: Remove file copy from external storage.
usage: hsm_remove [--filelist FILELIST] [--data DATA] [--archive NUM]
(FILE [FILE ...] | --mntpath MOUNTPATH FID [FID ...])
Note: To remove an archived copy of a file already deleted from a Lustre FS, the
--mntpath option and a list of FIDs must be specified
---
hsm_cancel : hsm_cancel: Cancel requests related to specified files.
usage: hsm_cancel [--filelist FILELIST] [--data DATA] <file> ...
---
hsm_remove
がLustre外部のストレージからファイルを削除するようです。
rm でファイルを削除
hsm_remove
を試す前に、自動エクスポート機能によりファイルが削除されるか確認します。
rm
でファイルを削除します。
ec2-user@ip-10-10-0-11 ~]$ sudo rm /mnt/fsxl/s3/random_pattern_binary_block_128MiB
$ ls -l /mnt/fsxl/s3
total 2
-rw-r--r--. 1 root root 134217728 Sep 22 10:04 random_pattern_binary_block_128MiB_2
-rw-r--r--. 1 root root 134217728 Sep 22 10:04 random_pattern_binary_block_128MiB_3
-rw-r--r--. 1 root root 134217728 Sep 22 10:07 random_pattern_binary_block_128MiB_4
-rw-r--r--. 1 root root 4294967296 Sep 17 09:02 random_pattern_binary_block_4GiB
$ lfs hsm_state /mnt/fsxl/s3/*
/mnt/fsxl/s3/random_pattern_binary_block_128MiB_2: (0x0000000d) released exists archived, archive_id:1
/mnt/fsxl/s3/random_pattern_binary_block_128MiB_3: (0x0000000d) released exists archived, archive_id:1
/mnt/fsxl/s3/random_pattern_binary_block_128MiB_4: (0x0000000d) released exists archived, archive_id:1
/mnt/fsxl/s3/random_pattern_binary_block_4GiB: (0x0000000d) released exists archived, archive_id:1
$ lfs df -h
UUID bytes Used Available Use% Mounted on
hp5qhbuv-MDT0000_UUID 32.7G 9.0M 32.7G 1% /mnt/fsxl[MDT:0]
hp5qhbuv-OST0000_UUID 1.1T 7.5M 1.1T 1% /mnt/fsxl[OST:0]
filesystem_summary: 1.1T 7.5M 1.1T 1% /mnt/fsxl
$ aws s3 ls non-97-fsxl-s3
2025-09-22 10:37:30 134217728 random_pattern_binary_block_128MiB_2
2025-09-22 10:37:30 134217728 random_pattern_binary_block_128MiB_3
2025-09-22 10:37:30 134217728 random_pattern_binary_block_128MiB_4
2025-09-17 09:02:45 4294967296 random_pattern_binary_block_4GiB
はい、LustreからもS3バケット上からも削除されました。
自動エクスポートはやはり便利ですね。
hsm_remove によるS3オブジェクトの削除
hsm_remove
によるS3オブジェクトの削除をトライしてみます。
$ lfs hsm_remove /mnt/fsxl/s3/random_pattern_binary_block_128MiB_2
Cannot send HSM request (use of /mnt/fsxl/s3/random_pattern_binary_block_128MiB_2): Operation not permitted
$ sudo lfs hsm_remove /mnt/fsxl/s3/random_pattern_binary_block_128MiB_2
Cannot send HSM request (use of /mnt/fsxl/s3/random_pattern_binary_block_128MiB_2): Operation not permitted
おや、削除をすることができません。
FIDを指定して削除できるかも試します。
$ lfs path2fid /mnt/fsxl/s3/random_pattern_binary_block_128MiB_2
[0x200000403:0x1:0x0]
$ sudo lfs hsm_remove --mntpath /mnt/fsxl/s3/random_pattern_binary_block_128MiB_2 [0x200000403:0x1:0x0]
Cannot send HSM request (use of /mnt/fsxl/s3/random_pattern_binary_block_128MiB_2): Operation not permitted
$ sudo lfs hsm_remove --mntpath /mnt/fsxl [0x200000403:0x1:0x0]
Cannot send HSM request (use of /mnt/fsxl): Operation not permitted
$ sudo lfs hsm_remove --mntpath /mnt/fsxl/ [0x200000403:0x1:0x0]
Cannot send HSM request (use of /mnt/fsxl/): Operation not permitted
$ aws s3 ls non-97-fsxl-s3
2025-09-22 10:37:30 134217728 random_pattern_binary_block_128MiB_2
2025-09-22 10:37:30 134217728 random_pattern_binary_block_128MiB_3
2025-09-22 10:37:30 134217728 random_pattern_binary_block_128MiB_4
2025-09-17 09:02:45 4294967296 random_pattern_binary_block_4GiB
こちらもできませんでした。
もしかすると、FSxLにおいてはhsm_remove
による階層化先のストレージのファイルを削除することはできないかもしれません。
S3バケット上でファイルを削除
続いて自動インポート機能を確認します。S3バケット上でファイルを削除します。
$ aws s3 rm s3://non-97-fsxl-s3/random_pattern_binary_block_128MiB_2
delete: s3://non-97-fsxl-s3/random_pattern_binary_block_128MiB_2
$ aws s3 ls non-97-fsxl-s3
2025-09-22 10:37:30 134217728 random_pattern_binary_block_128MiB_3
2025-09-22 10:37:30 134217728 random_pattern_binary_block_128MiB_4
2025-09-17 09:02:45 4294967296 random_pattern_binary_block_4GiB
$ ls -la /mnt/fsxl/s3/
total 67
drwxr-xr-x. 2 root root 33280 Sep 28 02:04 .
drwxr-xr-x. 5 root root 33280 Sep 28 01:05 ..
-rw-r--r--. 1 root root 134217728 Sep 22 10:04 random_pattern_binary_block_128MiB_3
-rw-r--r--. 1 root root 134217728 Sep 22 10:07 random_pattern_binary_block_128MiB_4
-rw-r--r--. 1 root root 4294967296 Sep 17 09:02 random_pattern_binary_block_4GiB
はい、Lustre上からファイルが削除されました。
自動エクスポートのDeleteを無効化した状態でrm
続いて、自動エクスポートのDelete
を無効化した状態でrm
を実行します。
Delete
を無効にしました。
この状態でLustre上からファイルを削除します。
$ sudo rm /mnt/fsxl/s3/random_pattern_binary_block_128MiB_3
$ ls -l /mnt/fsxl/s3/
total 1
-rw-r--r--. 1 root root 134217728 Sep 22 10:07 random_pattern_binary_block_128MiB_4
-rw-r--r--. 1 root root 4294967296 Sep 17 09:02 random_pattern_binary_block_4GiB
$ lfs hsm_state /mnt/fsxl/s3/*
/mnt/fsxl/s3/random_pattern_binary_block_128MiB_4: (0x0000000d) released exists archived, archive_id:1
/mnt/fsxl/s3/random_pattern_binary_block_4GiB: (0x0000000d) released exists archived, archive_id:1
$ aws s3 ls non-97-fsxl-s3
2025-09-22 10:37:30 134217728 random_pattern_binary_block_128MiB_3
2025-09-22 10:37:30 134217728 random_pattern_binary_block_128MiB_4
2025-09-17 09:02:45 4294967296 random_pattern_binary_block_4GiB
はい、Lustre上から正常にファイルが削除されましたがS3バケット上には残り続けています。
自動エクスポートのDeleteを有効化
この流れで自動エクスポートのDelete
を有効化します。
先ほどLuster上から削除したファイルはS3バケット上でも後追いで反映されるのでしょうか。
自動エクスポートのDelete
を有効化しました。
数分ほど待ちましたが、S3バケットの上のオブジェクトは削除されませんでした。
$ aws s3 ls non-97-fsxl-s3
2025-09-22 10:37:30 134217728 random_pattern_binary_block_128MiB_3
2025-09-22 10:37:30 134217728 random_pattern_binary_block_128MiB_4
2025-09-17 09:02:45 4294967296 random_pattern_binary_block_4GiB
あくまで自動エクスポートは常時同期をしているのではなく、ファイル操作の内容をトリガーに同期をしていることが分かります。
自動エクスポート/インポートが無効な状態で hsm_remove によるS3オブジェクトの削除
ふと、hsm_remove
によるS3オブジェクトの削除が失敗したのは、自動エクスポート/インポートが有効であるためではないかと感じました。
念の為確認をします。
現在のLustre上のファイルの状態は以下のとおりです。
$ ls -l /mnt/fsxl/s3
total 2
-rw-r--r--. 1 root root 134217728 Sep 22 10:04 random_pattern_binary_block_128MiB_3
-rw-r--r--. 1 root root 134217728 Sep 22 10:07 random_pattern_binary_block_128MiB_4
-rw-r--r--. 1 root root 4294967296 Sep 17 09:02 random_pattern_binary_block_4GiB
$ lfs hsm_state /mnt/fsxl/s3/*
/mnt/fsxl/s3/random_pattern_binary_block_128MiB_3: (0x0000000d) released exists archived, archive_id:1
/mnt/fsxl/s3/random_pattern_binary_block_128MiB_4: (0x0000000d) released exists archived, archive_id:1
/mnt/fsxl/s3/random_pattern_binary_block_4GiB: (0x0000000d) released exists archived, archive_id:1
自動エクスポート/インポートを無効にします。
削除してみます。
$ sudo lfs hsm_remove /mnt/fsxl/s3/random_pattern_binary_block_128MiB_3
Cannot send HSM request (use of /mnt/fsxl/s3/random_pattern_binary_block_128MiB_3): Operation not permitted
$ lfs path2fid /mnt/fsxl/s3/random_pattern_binary_block_128MiB_3
[0x200000403:0x1:0x0]
$ sudo lfs hsm_remove --mntpath /mnt/fsxl/s3/random_pattern_binary_block_128MiB_3 [0x200000403:0x1:0x0]
Cannot send HSM request (use of /mnt/fsxl/s3/random_pattern_binary_block_128MiB_3): Operation not permitted
$ sudo lfs hsm_remove --mntpath /mnt/fsxl/ [0x200000403:0x1:0x0]
Cannot send HSM request (use of /mnt/fsxl/): Operation not permitted
$ aws s3 ls non-97-fsxl-s3
2025-09-22 10:37:30 134217728 random_pattern_binary_block_128MiB_3
2025-09-22 10:37:30 134217728 random_pattern_binary_block_128MiB_4
2025-09-17 09:02:45 4294967296 random_pattern_binary_block_4GiB
やはり弾かれてしまいます。
rm
でLustre上のファイルを削除した後はどうでしょう。
$ sudo rm /mnt/fsxl/s3/random_pattern_binary_block_128MiB_3
$ ls -l /mnt/fsxl/s3
total 1
-rw-r--r--. 1 root root 134217728 Sep 22 10:07 random_pattern_binary_block_128MiB_4
-rw-r--r--. 1 root root 4294967296 Sep 17 09:02 random_pattern_binary_block_4GiB
$ aws s3 ls non-97-fsxl-s3
2025-09-22 10:37:30 134217728 random_pattern_binary_block_128MiB_3
2025-09-22 10:37:30 134217728 random_pattern_binary_block_128MiB_4
2025-09-17 09:02:45 4294967296 random_pattern_binary_block_4GiB
$ sudo lfs hsm_remove --mntpath /mnt/fsxl/ [0x200000403:0x1:0x0]
$ aws s3 ls non-97-fsxl-s3
2025-09-22 10:37:30 134217728 random_pattern_binary_block_128MiB_3
2025-09-22 10:37:30 134217728 random_pattern_binary_block_128MiB_4
2025-09-17 09:02:45 4294967296 random_pattern_binary_block_4GiB
$ sudo lfs hsm_remove --mntpath /mnt/fsxl [0x200000403:0x1:0x0]
$ aws s3 ls non-97-fsxl-s3
2025-09-22 10:37:30 134217728 random_pattern_binary_block_128MiB_3
2025-09-22 10:37:30 134217728 random_pattern_binary_block_128MiB_4
2025-09-17 09:02:45 4294967296 random_pattern_binary_block_4GiB
弾かれなくなりましたが、S3バケット上からオブジェクトは削除されていません。
自動エクスポートが有効な状態でFSxLファイルシステムの削除
自動エクスポートが有効な状態でFSxLファイルシステムを削除した際にS3バケット上のファイルが削除されないことを確認します。
自動エクスポートを有効にします。
この状態でFSxLファイルシステムを削除します。
FSxLファイルシステムが削除されたことを確認します。
S3バケットを確認すると、オブジェクトは元気に存在していました。
> aws s3 ls non-97-fsxl-s3
2025-09-22 19:37:30 134217728 random_pattern_binary_block_128MiB_3
2025-09-22 19:37:30 134217728 random_pattern_binary_block_128MiB_4
2025-09-17 18:02:45 4294967296 random_pattern_binary_block_4GiB
ということで、安心してFSxLファイルシステムは削除しましょう。
自動エクスポートの有効化有無に関わらず、lfs hsm_remove コマンドを用いてデータリポジトリのS3バケット上からオブジェクトを削除することはできない
Amazon FSx for LustreからエクスポートされたファイルをLustreを介して削除できるか確認してみました。
結論、自動エクスポートの有効化有無に関わらず、lfs hsm_remove
コマンドを用いてデータリポジトリのS3バケット上からオブジェクトを削除することはできません。
ちょっと手間ですが、都度直接S3バケット上から削除しましょう。
この記事が誰かの助けになれば幸いです。
以上、クラウド事業本部 コンサルティング部の のんピ(@non____97)でした!