Amazon FSx for LustreからエクスポートされたファイルをLustreを介して削除できるか確認してみた

Amazon FSx for LustreからエクスポートされたファイルをLustreを介して削除できるか確認してみた

自動エクスポートの有効化有無に関わらず、lfs hsm_remove コマンドを用いてデータリポジトリのS3バケット上からオブジェクトを削除することはできない
2025.09.28

LustreやS3で削除したファイルがお互いにどのように反映されるのか気になる

こんにちは、のんピ(@non____97)です。

皆さんはLustreやS3で削除したファイルがお互いにどのように反映されるのか気になったことはありますか? 私はあります。

自動エクスポート/インポート機能でDeleteを有効化することで、以下のような処理を実現することが可能です。

  • Lustre上でファイルを削除すればS3上のオブジェクトが削除される (自動エクスポート)
  • S3上のオブジェクトが削除すればLustre上でファイルが削除される (自動インポート)

では、これら機能が有効ではない場合はどうでしょうか。

特に、誤ってエクスポートしてしまったファイルを削除する際に都度S3側からオブジェクトを削除しに行くのは面倒です。Lustre側から削除したいところです。

実際に可能かどうか確認してみます。

いきなりまとめ

  • 自動エクスポートの有効化有無に関わらず、lfs hsm_removeコマンドを用いてデータリポジトリのS3バケット上からオブジェクトを削除することはできない
    • 誤ってエクスポートした場合は都度S3バケット上から直接ファイルを削除する必要がある
  • 自動エクスポート/インポート機能によって常にファイルが同期されている訳ではない
    • ファイル/オブジェクトの操作をしたタイミングで同期が走る
    • そのため、FSxLファイルシステムを削除したとしてもS3バケット上にはオブジェクトは残り続ける

やってみた

検証環境

検証環境は以下のとおりです。

Amazon FSx for Lustreの自動エクスポート後のファイルは自動でリリースまでされるのか確認してみた検証環境構成図.png

Amazon FSx for Lustre(以降FSxL)ファイルシステムの作成時のオプションは以下のとおりです。

1.FSxLの作成.png

自動エクスポート/インポートは有効化しています。

現在のデータリポジトリとして設定しているS3バケット内のオブジェクトは以下のとおりです。

2.現在のオブジェクト一覧.png

マウント時の状態は以下のとおりです。

			
			$ 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を無効にしました。

3.自動エクスポートでDeleteを無効.png

この状態で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を有効化しました。

4.自動エクスポートでDeleteを有効化.png

数分ほど待ちましたが、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

		

自動エクスポート/インポートを無効にします。

6.自動エクスポートとインポートが無効であることの確認.png

削除してみます。

			
			$ 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バケット上のファイルが削除されないことを確認します。

自動エクスポートを有効にします。

7.自動エクスポートが有効.png

この状態でFSxLファイルシステムを削除します。

5.ファイルシステムの削除.png

FSxLファイルシステムが削除されたことを確認します。

8.FSxLファイルシステムが削除されたことを確認.png

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)でした!

この記事をシェアする

FacebookHatena blogX

関連記事

Amazon FSx for LustreからエクスポートされたファイルをLustreを介して削除できるか確認してみた | DevelopersIO