2014年9月8日月曜日

CentOS6.x + S3QL 2系 (Amazon S3マウント編)

前回のインストール編の続きで、Amazon S3ストレージサービスをマウントして使ってみようというのが今回の内容です。
#検証環境は、CentOS6.5(x86_64) + S3QLのバージョン2.11.1です



Amazon Web Serviceでの準備


ここでは詳細な説明は割愛させてもらいますが、AWSにアカウントを作成後、以下の2点を準備しておく必要があります。

1.Amazon S3でバケットの作成
 ⇒今回は、メールBOXの場所として利用しようと思ったので、"s3ql-mail"と作成しました

2.S3にアクセスするためのAccess Key IDSecret Access Keyの作成


S3QLからの操作


1.ファイルシステムの作成
暗号化パスワードは、この作業で新規に作成します。
# mkfs.s3ql s3://s3ql-mail
Enter backend login: Access Key ID を入力
Enter backend passphrase: Secret Access Key を入力
Before using S3QL, make sure to read the user's guide, especially
the 'Important Rules to Avoid Loosing Data' section.
Enter encryption password: 暗号化パスワード を入力
Confirm encryption password: 暗号化パスワード を再度入力
Generating random encryption key...
Creating metadata tables...
Dumping metadata...
..objects..
..blocks..
..inodes..
..inode_blocks..
..symlink_targets..
..names..
..contents..
..ext_attributes..
Compressing and uploading metadata...
Wrote 150 bytes of compressed metadata.
#

2.マウント
適当なマウントポイント(ここでは、/mail_storage)を作成してマウントします。
※暗号化パスワードは、ファイルシステムの作成時に指定したものを入力します。
※マウントオプションは、"mount.s3ql --help"で確認してください。
# mkdir /mail_storage
# mount.s3ql --allow-other s3://s3ql-mail /mail_storage
Using 2 upload threads.
Autodetected 10202 file descriptors available for cache entries
Enter backend login:Access Key ID を入力
Enter backend passphrase:Secret Access Key を入力
Enter file system encryption passphrase:暗号化パスワード を入力
Using cached metadata.
Setting cache size to 8732 MB
Mounting filesystem...
#
# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3        13G  1.4G   11G  11% /
tmpfs           935M     0  935M   0% /dev/shm
/dev/sda1       194M   86M   98M  47% /boot
s3://s3ql-mail  1.0T     0  1.0T   0% /mail_storage
#

以上で、後はローカルのファイルシステムと同様に読み書きができます。




(備考1)マウント時にAccess Key ID、Secret Access Key、暗号化パスワードの入力を省略するには
 ⇒authinfo2を以下のように作成する
# touch ~/.s3ql/authinfo2
# chmod 600 ~/.s3ql/authinfo2
# vi ~/.s3ql/authinfo2

<記述内容>==========================
[s3]
storage-url: s3://s3ql-mail
backend-login: Access Key ID
backend-password: Secret Access Key 
fs-passphrase: 暗号化パスワード
====================================

(備考2)OS起動時に自動的にバケットをマウントするには
下記のような起動スクリプトを作成後、ファイルに実行権を付与し、自動起動するようにしてください
# chkconfig --add s3ql

<起動スクリプトの作成例>
※バケット名やマウントポイントなどは各自の環境にあわせて修正する必要があります
#!/bin/bash
#
# chkconfig: 35 60 40
# description: S3QL Backup File System
#
# Source function library.
. /etc/init.d/functions
#
AUTHFILE="/root/.s3ql/authinfo2"
BUCKET="s3://s3ql-mail"
MOUNTPOINT="/mail_storage"
OPTIONS="--allow-other"
start() {
        echo -n $"Mounting S3QL: "
        mount | grep $MOUNTPOINT > /dev/null
        if [ $? -eq 0 ];then
                echo $"Cannot mount $MOUNTPOINT. Already mounted !!"
                echo
                exit 1
        fi
        echo
        fsck.s3ql --batch $BUCKET
        mount.s3ql $OPTIONS $BUCKET $MOUNTPOINT
        RETVAL=$?
        [ $RETVAL -eq 0 ] && success || failure
        echo
}
stop() {
        echo -n $"Unmounting S3QL: "
        mount | grep $MOUNTPOINT > /dev/null
        if [ $? -ne 0 ];then
                echo $"Already unmounted !!"
                echo
                exit 1
        fi
        umount.s3ql $MOUNTPOINT && success || failure
        echo
}
case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    *)
        echo "Usage: `basename $0` {start|stop}"
        exit 1
        ;;
esac