Btrfs + LXC:LXCコンテナをホストするクォータサブボリュームの空き容量のおおよその見積もりを表示する方法はありますか?

Btrfs + LXC:LXCコンテナをホストするクォータサブボリュームの空き容量のおおよその見積もりを表示する方法はありますか?

Btrfsをバックアップストアとして使用してLXCを使用しようとしています。 Btrfsは簡単なスナップショットの作成/重複排除を可能にし、複数の「擬似仮想マシン」を起動するのに適しています。

私が経験している問題は、私がテストしているいくつかのアプリケーションが大量のデータをディスクにダンプすることです。 Btrfsボリュームの使用を制限しようとしたため、特定のコンテナに対してLXCによって作成されたサブボリュームにクォータを割り当てました。

アプリケーションにはエラー防止テストがあります。書き込み中のファイルシステムで使用可能なディスク容量が一定量(512 MBなど)未満の場合は、古いログの消去を開始して新しいログ用のスペースを解放します。

問題は、クォータが適用されても、LXCルートファイルシステムがまだホストBtrfsファイルシステムの合計サイズを報告していることです。

例:Btrfsファイルシステムが250 GBで、オプションを使用してLXCコンテナを作成した場合、-B btrfsBtrfs-sファイルシステムにこの新しいコンテナのルートを表すサブボリュームがあります。その後、コンテナが占めるスペースを制限したかったので、コンテナに32 GBのqgroup制限を適用しました。ただし、dfLXCコンテナでこのコマンドを実行すると、ファイルシステム全体のサイズはまだ250 GBで表示され、空き容量はおよそホストファイルシステムの実際の空き容量に基づいています。つまり、クォータ制限は表示されませんdf

これは、私のロギングアプリケーションがフルクォータを満たすことができ、まだ書き込むことができる容量が200 GB以上であると信じているため、古いデータをリサイクルしないことを意味します。最終的には、クォータが超過し、COWファイルシステムの制限により、クォータを無効にし、古いログを手動で削除する必要があります。クォータがまだ同じサイズで適用される場合、余分なスペースがないため、データを削除できません。削除操作のため

私はBtrfsの「空き領域」という概念が混乱し難いかもしれないことを理解するためにBtrfsについて十分に読んで十分に知っていますが、LXCで「おおよそ」取得する方法はありますか?数字?可能な限りdfディスク空き容量(使用)をインポートするための標準APIを使用してこれを行う必要があります。これは、ファイルシステムにアクセスし、おおよその空き領域を知る必要がある他のアプリケーションでも機能するという意味だからです。

約1 GBの実際の空き容量(割り当て量に応じて提供)を確保できる場合は、ファイルシステムがクォータを超えないようにログ有効期限パラメータを調整するのに十分です。

答え1

これは、btrfsサブボリューム空間の割り当てを処理するために私が見つけた最高のツールです。 BTRFSスナップショットサイズの取得|

すべてのクレジットはKyle Agronik(このスクリプト作成者)に渡されます。

関連情報