Solarisで1ファイル当たりのサイズを制限するUNIX処方箋

現場ですぐに役立つ知識を欲するあなたに贈る珠玉のTips集。今回は、SolarisのUFSファイルシステムで、1ファイル当たりのサイズに制限を設定する方法について解説します。

» 2008年12月25日 01時15分 公開
[ITmedia]

SolarisのUFSファイルシステムで、1ファイル当たりのサイズ(容量)に制限を設定したいと考えています。何かよい方法はないでしょうか? また、ファイルサイズ(容量)の初期値および上限値はどれぐらいになるのでしょうか?


SolarisのUFSファイルシステムでは、1ファイル当たりのサイズに制限を設けていない場合の初期値および上限値は1Tバイトになります。また、この上限値は、1Tバイト以上には設定できません。扱えるサイズの上限値は以下に挙げる方法で制限できます。

mountコマンドの「nolargefiles」オプションで制限

 Solarisにおいて、mountコマンドを実行しUFSファイルシステムをマウントする場合、「largefiles」オプションがデフォルトで選択されます(largefiles、nolargefilesオプションともSolaris 7以降で有効。詳細はman largefilesを参照)。これによってlargefilesフラグが設定され、2Gバイト以上のファイルを扱えるようになります。

 largefilesフラグをクリアするには、mountコマンド実行時に「-o nolargefiles」というオプションを指定します。すると、ファイルシステム単位での制限として2Gバイト以上のファイルが扱えなくなります。具体的には、以下のとおりです。


# mount -F ufs -o nolargefiles /dev/dsk/c0t0d0s4 /opt

 また次のように/etc/vfstabファイルにnolargefilesフラグを記述することで、OS起動時に制限を設定できます。

/dev/dsk/c0t0d0s4 /dev/rdsk/c0t0d0s4 /opt ufs 1 yes nolargefiles


 「nolargefiles」オプションが設定されているかどうか確認するには、mountコマンドを実行します。


# mount
		:
		:
/opt on /dev/dsk/c0t0d0s4 read/write/setuid/intr/nolargefiles/
logging/xattr/onerror=panic/dev=2200004 on (火) 9月 26 13:55:41 2006

ulimit、limitコマンドによる制限

 使用しているシェルが/bin/shの場合はulimitコマンド、/bin/cshの場合はlimitコマンドを実行することで、ユーザーごとに扱えるファイルサイズの制限値を設定できます。

/bin/shのulimitコマンド

 例えば、/bin/shにおいてファイルサイズの上限値を1Mバイトに制限するには、「-f」オプションの後に数値を指定しulimitコマンドを実行します(512バイトブロック単位)。


$ ulimit -f 2048

 /bin/shにおいてファイルサイズの制限を確認する場合は、「-f」オプションを指定しulimitコマンドを実行します。


$ ulimit -f
制限なし

 単位はブロックで出力されます。ほかの項目も確認したい場合は「-a」オプションを指定します。


$ ulimit -a
time(seconds) 制限なし
file(ブロック) 制限なし
		:
		:

/bin/cshのlimitコマンド

 /bin/cshの場合は、limitコマンドを利用します。ファイルサイズの上限値を1Mバイトに制限するには、次のように実行します。


% limit filesize 1024
% limit filesize
filesize 1024 kbytes

 limitコマンドを利用し、ファイルサイズの上限値が設定されているかどうか調べるには、次のように実行します。


% limit filesize
filesize 制限なし

 制限なしの場合はデフォルトの1Tバイト、もしくはファイルシステムの制限値までのファイルを扱えます。

ulimit、limitコマンドによる制限設定をすべてのユーザーに反映させる

 ユーザーごとの環境設定ファイルとして$HOME/.profile、またすべてのユーザーが読み込むファイルに/etc/profileがあります。これらのファイルにulimitおよびlimitコマンドを記載することで、すべてのユーザーに対してファイルサイズの制限設定を反映させられます。また、ユーザーの環境設定ファイル$HOME/.profileの方が優先される点に注意する必要があります。

 これら環境設定ファイルの読み込み順は以下のようになります。

  • ログインシェルが/bin/shの場合、/etc/profile、$HOME/.profile
  • ログインシェルが/bin/cshの場合、/etc/.login、$HOME/.cshrc、$HOME/.login

UNIX関連の悩みなら、「UNIX処方箋」にどうぞ


Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ