Ext4の最大ファイルシステムサイズは1EB、最大ファイルサイズは16TBです。
しかし、ファイルシステムレベルで最大ファイルサイズを減らすことは可能ですか?たとえば、指定された値(1MBなど)を超えるファイルの生成を許可したくありません。 ext4でこれを達成する方法は?
ext4以外の場合、他の最新のファイルシステムはこれらの機能をサポートしていますか?
答え1
ext4
max_dir_size_kb
サイズを制限するインストールオプションがあります目次しかし、通常のファイルには同様のオプションはありません。
setrlimit()
ただし、特定のシェルで設定した制限または組み込みの制限を使用して、プロセスが制限ulimit
より大きいファイルを生成しないようにすることができます。limit
ほとんどのシステムでは、各ユーザーに対してシステム全体にわたってこれらの制限を設定することもできます。
プロセスがこの制限を超えると、SIGXFSZシグナルを受け取ります。この信号を無視すると、ファイルサイズを超える操作(write()
システムtruncate()
コールなど)がエラーで失敗しますEFBIG
。
この制限をファイルシステムに移動するために使用できる1つの方法は次のとおりです。ヒューズ(ユーザースペースのファイルシステム)この制限セットでユーザースペースハンドラが起動されるファイルシステム。bindfs
良い候補です。
実行する場合bindfs dir dir
(つまり、バインディングdir
自体)、bindfs
開始を次のように使用します(zsh
構文)。
(limit filesize 1M; trap '' XFSZ; bindfs dir dir)
これにより、このディレクトリに1Mを超えるファイルを作成しようとすると失敗します。ファイルを書き込むプロセスにエラーをbindfs
渡します。EFBIG
この制限は通常のファイルにのみ適用され、ディレクトリが制限を超えて大きくなるのを防ぎません(たとえば、その中に多数のファイルを作成するなど)。
答え2
システムレベルで設定する必要があります。
Ubuntu編集の場合/etc/security/limits.conf
次の行を追加します。
timb hard fsize 10000
ワイルドカード文字を使用することもできます。
session required pam_limits.so
AFAIKに追加しないと、ルートでは機能しません/etc/pam.d/common-session
。