Use EBS on EC2 Centos 5.2 and snapshot with cron to S3

Posted by Edmund Haselwanter on Friday, March 06, 2009

Create the volume and assign it to your instance

Attach it to your Centos 5.2 instance

yum install xfsprogs

according to Thread: Debian Lenny and XFS causes kernel panic: Suggested Workaround

mkfs.xfs -l version=1 /dev/sdh

insert into /etc/fstab

/dev/sdh /vol/shared xfs noatime 0 0

mount the volume

mount /vol/shared

Setup ec2-extra-tools

copy over your EC2_CERT and EC2_PRIVATE_KEY

setup /etc/profile.d/ec2.sh

   1  export EC2_HOME=/home/ec2 
   2  export EC2_CERT=/root/.ec2/cert-xxx.pem
   3  export EC2_PRIVATE_KEY=/root/.ec2/pk-xxx.pem
   4  export AWS_ACCOUNT_NUMBER=
   5  export AWS_ACCESS_KEY_ID=
   6  export AWS_SECRET_ACCESS_KEY=
   7  export PATH=$PATH:/home/ec2/bin/

install http://github.com/cmer/ec2-extra-tools/tree/master

add the binaries to e.g. /home/ec2/bin/

test the setup with:

ec2-xfs-snapshot /dev/sdh

sample output:
<pre class="sunburst"><span class="line-numbers"> 1 </span> [root<span class="Variable"><span class="Variable">@</span>domU</span><span class="Keyword">-</span><span class="Variable">XX</span><span class="Keyword">-</span><span class="Variable">XX</span><span class="Keyword">-</span><span class="Variable">XX</span><span class="Keyword">-</span><span class="Variable">XX</span><span class="Keyword">-</span><span class="Variable">XX</span><span class="Keyword">-</span><span class="Variable">XX</span><span class="Constant"><span class="Constant">:</span>~</span><span class="StringRegexp"><span class="StringRegexp">/</span></span><span class="StringRegexp">] ec2-xfs-snapshot </span><span class="StringRegexp"><span class="StringRegexp">/</span></span>dev<span class="Keyword">/</span>sdh <span class="line-numbers"> 2 </span> device: <span class="StringRegexp"><span class="StringRegexp">/</span></span><span class="StringRegexp">dev</span><span class="StringRegexp"><span class="StringRegexp">/s</span></span>dh <span class="line-numbers"> 3 </span> mount point: <span class="StringRegexp"><span class="StringRegexp">/</span></span><span class="StringRegexp">vol</span><span class="StringRegexp"><span class="StringRegexp">/s</span></span>hared <span class="line-numbers"> 4 </span> ec2<span class="Keyword">-</span>volume<span class="Keyword">-</span>id: vol<span class="Keyword">-</span>67890a <span class="line-numbers"> 5 </span> <span class="line-numbers"> 6 </span> <span class="Variable">Freezing</span> <span class="Variable">XFS</span> volume... <span class="line-numbers"> 7 </span> <span class="line-numbers"> 8 </span> <span class="Variable">Creating</span> snapshot... <span class="line-numbers"> 9 </span> <span class="Variable">SNAPSHOT</span> snap<span class="Keyword">-</span>b99bh1d8 vol<span class="Keyword">-</span>67890a pending <span class="Constant">2009</span><span class="Keyword">-</span><span class="Constant">03</span><span class="Keyword">-</span>06T14:<span class="Constant">56</span>:<span class="Constant">17</span><span class="Keyword">+</span><span class="Constant">0000</span> <span class="line-numbers"> 10 </span> <span class="Variable">Unfreezing</span> <span class="Variable">XFS</span> volume... <span class="line-numbers"> 11 </span> <span class="line-numbers"> 12 </span> <span class="Variable">Done</span>! </pre>

Setup cron


crontab -e
SHELL=/bin/bash
PATH=/usr/bin:/bin:/usr/sbin
5 20 * * * source /etc/profile.d/java.sh; source /etc/profile.d/ec2.sh ; \ 
ec2-xfs-snapshot /dev/sdh >> /var/log/ebs_snapshots  2>> /var/log/ebs_snapshots

you need both: java.sh and ec2.sh for the amazon tools.