はじめに
AIXをインストールした直後のLPARに対してデータを転送した際に、一定量のデータを転送して停止した際のメモです。
/etc/security/limits
を書き換えることで解決できました。
実施環境
- 転送元:192.168.t.t (転送ファイルを持つ)
- 転送先:192.168.r.r (AIXをインストールした直後)
- 転送ファイル:test (8304MB)
- 転送方法:scp
手順
scpコマンドを利用して、8304MBのtestファイルを転送した際に、1026MBの転送を行ったところで停止してしまいました。
# scp -r test root@192.168.r.r:/
root@192.168.r.r's password:
test 12% 1026MB 26.2MB/s 04:38 ETA
scp: write remote "/test": Failure
scp: remote fsetstat: Failure
scp: failed to upload file test to /
ulimit -a
により転送先のユーザー処理リソース制限の設定を確認したところ、file(blocks)が転送ファイルのサイズと比較して小さな値に制限されていました。
# 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) 128
転送先の/etc/security/limits
を編集し、file(blocks)の制限をunlimitedにしました。
vi /etc/security/limits
fsize = 2097151をfsize = -1に変更しました。
-1は制限がないことを示しています。
変更前
default:
fsize = 2097151
core = 2097151
cpu = -1
data = 262144
rss = 65536
stack = 65536
nofiles = 2000
変更後
default:
fsize = -1
core = 2097151
cpu = -1
data = 262144
rss = 65536
stack = 65536
nofiles = 2000
/etc/security/limits
を変更した転送先サーバー側でログインし直すと、
ユーザ処理リソース制限のfile(blocks)が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) 128
8304MBのtestファイルを再度転送すると、全て転送することができました。
#scp -r test root@192.168.r.r:/
root@192.168.r.r's password:
test 100% 8304MB 26.5MB/s 05:13
気をつけること
ulimit -f unlimited
こちらのコマンドでも、file(blocks)はunlimitedに変更可能です。
しかし、/etc/security/limits
は変更されないため、再ログインした際に変更前の値に戻ります。
以上です。