クォータなしでディレクトリ サイズを制限する方法 (vserver)?

クォータなしでディレクトリ サイズを制限する方法 (vserver)?

質問があまり一般的でないことを願います。vserver

(Ubuntu 12.04) を使用しているため、クォータを使用してディレクトリのサイズを制限することはできません。これを実現する他の可能性があるかどうか疑問に思っています。

私が想像できる唯一の方法は、最大サイズが指定された inotify + config-file + ファイルを空にしたり削除したりするコマンドの組み合わせです。これは、ユーザー ディレクトリを制限するものではなく、ログ ファイルなどの自動的に書き込まれるファイルを制限するものです。
これが最善の方法ではないことはわかっていますが、うまくいく唯一の方法だと思います。もっと良い方法はありますか?

答え1

これは大量のクォータにはうまく対応できませんが、簡単な解決策の 1 つは、必要な固定サイズを持つ別のファイルシステムを作成することです。

予備のブロック ストレージがない場合は、スパース ファイルを指すループバック デバイスを使用できます。スパース ファイルは、使用されるまでストレージを消費しませんが、そのスパース ファイルの上にファイル システムを作成すると、使用可能なストレージの最大量が固定されているように見えます。ただし、拡張/縮小は多少困難です。最も安全な方法は、新しいスパース ファイルと、より大きい/より小さいファイル システムを作成し、古いファイルの内容を転送することです。

答え2

問題がログ ファイルだけにある場合は、最大ファイル サイズの指定をサポートする syslog デーモンを使用します。rsyslogd はそれを実行できると思います。それが不可能な場合は、最大ファイル サイズに達したときにログをローテーションし、指定された数のログのみを保持して、合計サイズが制限内に収まるようにする logrotate プログラムがいくつかあります。

関連情報