Amazon EC2 でインスタンスをいつでも複製/復元できるよう自分用のAMIを作成していたところ、ec2-bundle-vol に失敗しました。
-bash-3.2# ec2-bundle-vol -d /mnt -k xxxxx.pem -c xxxxx.pem -u xxxx-xxxxx-xxxx Please specify a value for arch [i386]: Copying / into the image file /mnt/image... Excluding: /sys /proc /dev/pts /proc/sys/fs/binfmt_misc /dev /media /mnt /proc /sys /mnt/image /mnt/img-mnt 1+0 records in 1+0 records out 1048576 bytes (1.0 MB) copied, 0.001797 seconds, 584 MB/s mke2fs 1.39 (29-May-2006) ERROR: execution failed: "rsync -rlpgoD -t -r -S -l --exclude /sys --exclude /proc --exclude /dev/pts --exclude /proc/sys/fs/binfmt_misc --exclude /dev --exclude /media --exclude /mnt --exclude /proc --exclude /sys --exclude /mnt/image --exclude /mnt/img-mnt -X /* /mnt/img-mnt 2>&1 > /dev/null"
つい1日前には同じインスタンスから実行できたのに。。。
rsync コマンドが実行エラーってなってます。 ec2-bundle-vol がrsyncコマンドを実行して、途中で失敗したようです。
ネットで調べてみると、rsyncコマンドの実行エラーで失敗する理由として、2つのパターンがあるようです。
1. volume保存用の領域が足りない
AMI保存用のイメージファイルを作成中にインスタンスのディスク領域を使いきった場合、エラーとなるようです。 この場合は、インスタンス内のいらないファイルを削除するしかないですね。。
2. rsync実行中にファイルが削除されたりしてしまった
rsyncコマンドの途中で対象となっているファイルやディレクトリが変更されると、コマンドが失敗します。
プログラムの動作中に ec2-bundle-vol を起動すると、rsyncコマンドが失敗してしまうことがあるということ。
エラーメッセージの中にあるrsyncコマンドを直接実行すると、どちらが原因かわかるようです。
-bash-3.2# rsync -rlpgoD -t -r -S -l --exclude /sys --exclude /proc --exclude /dev/pts --exclude /proc/sys/fs/binfmt_misc --exclude /dev --exclude /media --exclude /mnt --exclude /proc --exclude /sys --exclude /mnt/image --exclude /mnt/img-mnt -X /* /mnt/img-mnt file has vanished: "/var/nagios/spool/checkresults/check1n3woE" rsync warning: some files vanished before they could be transferred (code 24) at main.c(892) [sender=2.6.8]
/var/nagios/spool にあるファイルがなくなったということです。
nagiosはサーバー監視用のサービスですね。確かに昨日インストールしました。AMIを作成する間は、止めてしまいましょう。
sudo /etc/init.d/nagios stop
nagiosを止めたら ec2-bundle-vol コマンドが成功し、無事にAMIが作成できました。めでたしめでたし。
Daemon のようなプログラムは実行しているという認識が低いので、要注意ですね。