Amazon EC2 の ec2-bundle-vol でエラー

技術話です。

AmazonEC2 で稼動中の AMI(AmazonMachineInstance) をイメージ化して保存する(合ってる?)のが ec2-bundle-vol というコマンドなのですがエラーが出ました。

# ec2-bundle-vol -d /mnt/YYYYMMDD -k ~/.ec2/pk-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.pem -c ~/.ec2/cert-YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY.pem -u NNNNNNNNNNNN
(snip)
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/YYYYMMDD/image –exclude /mnt/img-mnt -X /* /mnt/img-mnt 2>&1 > /dev/null”

ec2-bundle-vol の内部で rsync 使っていて、その rsync でエラーになっている模様。なぜだろう、と思っていたら /home を EBS 使ってマウントしているからでした。fstab に

/dev/sdb1      /home           ext3        noatime

と明示的に指定していれば ec2-bundle-vol コマンドは /dev/sda1 しかみないはずなので /home はスルーしていたはずです。しかし fstab に上記のように書いていなかったため、/home もイメージ化対象にしようとしたため、/mnt の容量超過でエラーを出していた模様。

# umount /home

したあとに ec2-bundle-vol コマンドを実行してうまくいきました。/home の容量が少ない場合は成功するはずですが、この時の /home は結構容量があったので容量超過になったのですね。

fstab に書いていないのは、起動時に /dev/sdb1 がマウントされているとは限らないからです。要は ec2-bundle-vol する前は /home を umount しておけ、ということですね。

Comments are closed.