(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

【AIX】ulimitのfsizeを変更して設定の上限エラーを回避する

スポンサーリンク

事象

AIX環境にて巨大ファイルを作成しようとしたところ、

ファイルは ulimit によって設定された値より大きくできません。

上記メッセージでエラーとなる。

原因/解決策

limitsファイルに記載されているfsizeの値に抵触。

よってchuser fsize=-1 ユーザ名として値を変更し、再ログインを行い反映させる。

補足

以下ファイル(/etc/security/limits)に各ユーザに対して制限値が記述されており、記述されていないユーザはdeefaultとして扱われています。

ためしに中身を見てみまると以下のようなフォーマットで記載されており

default:
        fsize = 2097151
        core = 2097151
        cpu = -1
        data = 262144
        rss = 65536
        stack = 65536
        nofiles = 2000

fsizeとして2097151ブロックと記載されていることが確認できました。要は1ブロックは512byteなので約1GBを超えるファイルは作成できないことになります

ちなみにulimitコマンドを確認すれば、現在のユーザの値を確認できます。

$ ulimit -a
time(seconds)        unlimited
file(blocks)         2097151
data(kbytes)         131072
stack(kbytes)        32768
memory(kbytes)       32768
coredump(blocks)     2097151
nofiles(descriptors) 2000
threads(per process) unlimited
processes(per user)  unlimited

今回はユーザ名testuserの上限を以下のように無制限とする設定を入れると

$ sudo chuser fsize=-1 testuser

コマンド実行後、/etc/security/limitsを確認すると、以下の記載が追記されています。

testuser
        fsize = -1

一方で、ulimit - a では未変更なので

$ ulimit -a
time(seconds)        unlimited
file(blocks)         2097151
data(kbytes)         131072
stack(kbytes)        32768
memory(kbytes)       32768
coredump(blocks)     2097151
nofiles(descriptors) 2000
threads(per process) unlimited
processes(per user)  unlimited

再度ログインし直して設定を読み込ませます。
ログイン後、以下のように変更されていることを確認できました。

$ ulimit -a
time(seconds)        unlimited
file(blocks)         unlimited
data(kbytes)         131072
stack(kbytes)        32768
memory(kbytes)       32768
coredump(blocks)     2097151
nofiles(descriptors) 2000
threads(per process) unlimited
processes(per user)  unlimited

この状態になれば、冒頭の制限に引っかかることなく巨大ファイルを作成できます。