トラブルの記録
<問題>
scpを使ってスパコンにデータを転送する際、
scp: /home/hogehoge/bigfile : File too large
というエラーにより、2GBを越えるファイルを転送できなかった。
<解決方法>
圧縮して、2GB以下に落として転送。Wine*1のTSSでは2GBを超える解凍はできないので、Hop*2で、バッチジョブとして解凍する。なお、「limit datasize unlimit」と打つことで、TSSでも2097251bytesのファイルまでなら扱えるようになるらしい。
<解決に至るまでの経過>
thinkunix.netのtipsを参考に、
ssh user@remotehost -C "cat /path/to/bigfile" | dd of=bigfile
を試してみるも、今度は
dd: 0511-053 write が失敗しました。 : ファイルは ulimit によって設定された値より大きくできません。
というエラーで失敗。「ulimit」で確認してみた。
hop00> ulimit -a time(seconds) 86400 file(blocks) 4194502 data(kbytes) 1048576 stack(kbytes) 1048576 memory(kbytes) unlimited coredump(blocks) 2097151 nofiles(descriptors) 2000
fileは4GBで、問題なさそうなのに、なんでだめなんだろう?さらに別のページで「limit」というコマンドもあることを知り確認すると、
hop00> limit cputime 24:00:00 filesize 2097151 kbytes datasize 1048575 kbytes stacksize 1048575 kbytes coredumpsize 1048575 kbytes memoryuse unlimited descriptors 2000
filesizeが2GB!? なんで、limitとulimitの値が違うんだろう? どうやら、ここで制限されているらしい。しかし、これは一般ユーザーには変更できないのでは...
hop00> limit filesize 10000000 limit: filesize: Can't set limit (操作が許可されていません。)
やっぱり...。
2.2GBのファイルをあと120個くらい転送しないといけないのに、どうしたものか...。
-
- 追記1:大型計算機センターのシステム管理係に相談に行ったところ、やはりfilesizeの制限による問題とのことでした。そして、制限値の変更を月例会議に諮っていただくことになりました。
- 追記2:ulimitとlimitの違いは、「blocks」と「kbytes」の違いで、2で割ると同じくらいの大きさ(2GB)になることが判明。
- 追記3:シス管から連絡があり、バッチジョブにはリミットはかかってないが、tss処理では、上述のリミットがあるとのこと。つまり、コマンドラインで、「cat bigfile1(1.9GB) >> bigfile2(1.9GB)」として4GB近いファイルを作ることはできないが、バッチとしてllsubmitで投入すると2GBを超えるファイルを作成できるということ(確認しました)。
- 追記4:シス管から圧縮して転送してみては?とのアイデアをいただき試しに圧縮してみました。バイナリファイルなので、そんなに変わらないだろうなぁと思ったら2GBが400MBに!これで無事に転送できたので、解凍を、と思ったら今度は2GB以上のファイルを生成する解凍ができない。仕方ないので、バッチで投入したところうまくいきました。めでたしめでたし。
- 追記1:大型計算機センターのシステム管理係に相談に行ったところ、やはりfilesizeの制限による問題とのことでした。そして、制限値の変更を月例会議に諮っていただくことになりました。