0

Amazon s3 サービスを介してクラウドにデータを保存するために、s3backer パーティションをマウントしました。標準的なファイルシステムの動作として、削除されたファイルは単純に fs からリンク解除され、基になるブロックは変更されません。これにより、Amazon のブロックが削除されないため、使用されたスペースが消去された場合にも請求されます。これを防ぐには、zerofree ユーティリティを使用して、ファイル システム内の未使用のブロックに強制的にゼロを書き込むことができます。これにより、s3backer はクラウド内の未使用のブロックを削除します。

問題は、ゼロフリー ユーティリティがマウントされた読み取り専用パーティションを必要とするため、パーティションの使用中にスペースを節約できないことです。

rw マウントされたパーティションでこれを行うための他のオプションがあるかどうか知っていますか? ファイルシステムのマウントオプションやその他のソリューションのような?

ありがとうございました

4

1 に答える 1

1

以前は良い答えはありませんでしたが、今はあるかもしれません。ただし、チェーンには満たす必要のあるリンクがいくつかあります...

まず、block deviceコマンドをサポートするLinuxカーネルTRIM(2.6.28で追加)とそれをサポートするファイルシステム(XFS、ext4、Linux 3.7以降のbtrfs)が必要です。もともとはSSDデバイスにリサイクル可能なブロックを通知することを目的としていましたが、このコマンドは、ブロックを使用するファイルシステムでブロックが不要になったことをブロックデバイスに通知します。一部の(すべてではない)ファイルシステムは、ファイルが削除されると、を介してブロックデバイスに通知しますTRIM

チェーンの次のリンクはこのカーネルパッチです。これは、ループバックマウントの場合、TRIMブロックデバイスコマンドをループバックファイルのオプションをfallocate()使用してに変換します。FALLOC_FL_PUNCH_HOLEどうやらこれはバージョン3.2のLinuxに組み込まれました。

チェーンの次のリンクは、fallocate()FUSEバージョン2.9.2で追加されたFUSEのユーザーコードにシステムコールを渡すためのサポートです。

チェーンの最後のリンクは、fallocate()s3backerでのFUSEのサポートです。私はこれを見始めましたが、まだ完成していません。

したがって、すべての要件を(階層化順に)要約すると、次のようになります。

  • サポートする「上位」ファイルシステムTRIM(例:ext4、またはLinuxのbtrfs> = 3.7)
  • Linuxカーネル>=3.2TRIMループバックマウント
  • FUSEバージョン>=2.9.2サポートfallocate()
  • FALLOC_FL_PUNCH_HOLE定数を定義するヘッダーを含むglibcバージョン>=2.18
  • サポートするs3backerの更新バージョンfallocate()

これが実装され、テストされたら、 s3backerメーリングリストに何かを送信します。

于 2013-03-04T17:47:06.640 に答える