(O+P)ut

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



(O+P)ut

OutPut Log by SE

【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

-1無制限を指します。

コマンド実行後、/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 で変更が確認できない状態だと制限がまだ効いています

よって、再度ログインし直して設定を読み込ませます。

ログイン後、以下のように変更されていることを確認できました。

$ 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

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

以上、AIX環境での備忘録でした。