あーかいぶすハイディフィニション

ここはもう更新しとらんのじゃ

rsync が失敗してた

receiver と generator が 150,000,000,000 byte のファイルで云々かんぬん。

2014/03/31 追記
その後 rsync の進捗を確認しようとしたら、同期先筐体の HDD が物理的に死亡めされた。ナンデ?!

ナンデ?!

rsync で運用してるデータベースのスナップショット持ってこようと思ったんだけど、その運用してるデータベース ( PostgreSQL 8.X ) の容量が 600Gbyte 弱あるんすよ。んで、転送の途中(エラーメッセージ通りなら 150Gbyte 付近)で rsync が挫折したんすね。

data/base/114514/114514.24
  114514893810 100%   11.50MB/s    0:01:29  (764, 29.9% of 2586)
data/base/114514/114514.240
rsync: connection unexpectedly closed (158245498245 bytes received so far) [receiver]
rsync error: error in rsync protocol data stream (code 12) at io.c(359)
rsync: connection unexpectedly closed (41742 bytes received so far) [generator]
rsync error: error in rsync protocol data stream (code 12) at io.c(359)

エラーメッセージ内のログファイル名の部分は意図的に改ざんしてます、いいよ、こいよ!大体 1Gbyte 位のファイルが550個位あって、残りはよくわかんねーファイルが色々あった気がする。よくおぼえてない。んで、その実行時に使ったコマンドはこう。

rsync -avz --progress yjsnpi@114.514.19.19:/backup/172.20.0.893/var/lib/pgsql/data ./ --exclude 'pg_log/'

postgresql の $PGDATA を /var/lib/pgsql/data としている為、日毎のスナップショットがこういうふうに生成されるバックアップタスク組んでる。その $PGDATA ディレクトリを rsync の元に指定したんだけど、まあ上記のエラーのように失敗してるんね。

対策

なんか -z で圧縮すると負荷が上がるとか、 --bwlimit オプションによって帯域を増やせばいい、とか言ってるのを見かけるんですけど、手元で man rsync 叩くと

--bwlimit=KBPS          limit I/O bandwidth, KBytes per second

とか出てくんのね。何 rsync は I/O の帯域制限してんの?あとしてるなら default いくらなのか書いてくれよ頼むよ。調べてもよくわかんねえ!という訳で次善の策として、-av --bwlimit=125000 として実行することにしてみます。どうなるのかなー、まあ圧縮オプション投げ捨てるから、同期速度は遅くなるでしょうなあ…。