そんにゃわけでssh -A経由でrsync実行できるようにはにゃったのだが、sudoが挟まってると環境変数が引き継がれにゃいので公開鍵暗号が通らにゃい。
つまり
ssh -A host1 ssh host2 ls
は通るが、
ssh -A host1 sudo ssh host2 ls
は通らにゃい。
ssh -A host1 sudo var=$var ssh host2 ls
とすれば引き継げるはずにゃのだが、host1上での環境変数値で展開する方法がいまいち分からず。どういうエスケープすれば通るのかにゃぁこれ。.shにしてしまえばいいんだろうけど。
結局、visudoして環境変数を初期化しにゃいように変更。
ssh -A -o StrictHostKeyChecking=no host1 sudo rsync -e \'ssh -A -c arcfour,blowfish-cbc -o StrictHostKeyChecking=no\'-a --rsync-path=\'sudo rsync\' -v --inplace --stats --progress --human-readable --timeout=60 file user@host2:/tmp/
みたいにゃ書式で通るようににゃった。
sudoしてるのでniceかにゃにかつけたほうがいいかもやしれにゃい。
尚、visudoして変更しにゃくても、
ssh -A host1 sudo sh -c "env" \>/dev/null \; ssh -A host2 ls
でとりあえず延伸できるんで、途中の鯖でいろいろ追加しにゃいにゃらこっちで。
FreeNASでNICx2をroundrobinしたらCPUがINTで50%くらい食われて頭打ちににゃってたので、Interfacesのところでdevice pollingをONにして再起動・・・したら帰ってこにゃくにゃった。
見に行ったらIPが割り振られていにゃい。
いろいろ試行錯誤したがどうも挙動が怪しい。ひとまずLAGGを解除すると正常にもどる。configがにゃにか不整合を起こしたかと思ったがどうも違うみたい。
で、ここまでしてふと公式を見ると、
Enable 'polling' on interfaces used by a LAGG interface will make it inoperable.
とか書いてあった。分かってるにゃらGUI画面に書いとけ。
ていうかこれはLAGGしたらdevice pollingができにゃい? それって強烈にCPU食われるんじゃにゃいのかしら。
FreeNASのzfsにゃnfs鯖で、iostatとifstatを見比べると、どう見ても
zfsのread量 >> ifの出力量
ににゃってる。
そもそもzfsの圧縮が効いてるので逆ににゃるにゃらともかく、これは何か別のことが起きてるようだ。
で、多分これかにゃって事で
/boot/loader.confに
vfs.zfs.prefetch_disable="1"
したら治った。
で、別にこれはprefetchにゃのでメモリが余ってたりシーケンシャルアクセスが多いにゃら良いんじゃにゃいかにゃーってとこにゃのだが、メモリ2GでH/W RAIDでランダムread主体だったので、prefetch無しの方がレスポンスは向上した。が、全体のスループットは多分落ちてるわけで、どっちがいいかねぇ
それにしてもこの手の鯖のキャッシュってのはあまりHITしてにゃいんだろうにゃぁ。出力した直後のデータってのは絶対クライアント側でキャッシュされてるので、むしろ積極的に破棄して別の物をキャッシュした方が良いのかもしれにゃい。その意味ではまだクライアントに渡ってにゃいデータをキャッシュするのは意義がある。