現場ですぐに役立つ知識を欲するあなたに贈る珠玉のTips集。今回は、SolarisのUFSファイルシステムで、1ファイル当たりのサイズに制限を設定する方法について解説します。
SolarisのUFSファイルシステムで、1ファイル当たりのサイズ(容量)に制限を設定したいと考えています。何かよい方法はないでしょうか? また、ファイルサイズ(容量)の初期値および上限値はどれぐらいになるのでしょうか?
SolarisのUFSファイルシステムでは、1ファイル当たりのサイズに制限を設けていない場合の初期値および上限値は1Tバイトになります。また、この上限値は、1Tバイト以上には設定できません。扱えるサイズの上限値は以下に挙げる方法で制限できます。
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
使用しているシェルが/bin/shの場合はulimitコマンド、/bin/cshの場合はlimitコマンドを実行することで、ユーザーごとに扱えるファイルサイズの制限値を設定できます。
例えば、/bin/shにおいてファイルサイズの上限値を1Mバイトに制限するには、「-f」オプションの後に数値を指定しulimitコマンドを実行します(512バイトブロック単位)。
$ ulimit -f 2048
/bin/shにおいてファイルサイズの制限を確認する場合は、「-f」オプションを指定しulimitコマンドを実行します。
$ ulimit -f
制限なし
単位はブロックで出力されます。ほかの項目も確認したい場合は「-a」オプションを指定します。
$ ulimit -a
time(seconds) 制限なし
file(ブロック) 制限なし
:
:
/bin/cshの場合は、limitコマンドを利用します。ファイルサイズの上限値を1Mバイトに制限するには、次のように実行します。
% limit filesize 1024
% limit filesize
filesize 1024 kbytes
limitコマンドを利用し、ファイルサイズの上限値が設定されているかどうか調べるには、次のように実行します。
% limit filesize
filesize 制限なし
制限なしの場合はデフォルトの1Tバイト、もしくはファイルシステムの制限値までのファイルを扱えます。
ユーザーごとの環境設定ファイルとして$HOME/.profile、またすべてのユーザーが読み込むファイルに/etc/profileがあります。これらのファイルにulimitおよびlimitコマンドを記載することで、すべてのユーザーに対してファイルサイズの制限設定を反映させられます。また、ユーザーの環境設定ファイル$HOME/.profileの方が優先される点に注意する必要があります。
これら環境設定ファイルの読み込み順は以下のようになります。
UNIX関連の悩みなら、「UNIX処方箋」にどうぞ
Copyright © ITmedia, Inc. All Rights Reserved.