以前、「S3QLでさくらのオブジェクトストレージサービスをローカルマウントしてみよう」にてS3QLの構築を紹介させていただきましたが、今回はCentOS7.2で構築する手順をご紹介したいと思います。

なお、この記事では以下のWebサイトを参考にしています。
Highly available filesystem with S3QL and Orbit – Brightbox Cloud
nikratio / S3QL / wiki / installation centos — Bitbucket

S3QLのインストール手順

ベースとなるアーカイブは「CentOS 7.2 64bit #1128011222159」を使っています。
※ 作業はrootユーザーで行ってください。

1. OSのパッケージの更新

CentOSを最新状態にします。

# yum update

2. 必要パッケージのインストール

S3QLに必要なパッケージをインストールしていきます。

# yum --enablerepo=epel install python34-devel \
 python34-setuptools \
 python34-crypto \
 python34-apsw \
 systemd-devel \
 libattr-devel \
 sqlite-devel \
 fuse-devel \
 psmisc

3. pipで必要なパッケージをインストール

Pythonのパッケージ管理システムであるpip使って必要パッケージをインストールします。

# easy_install-3.4 pip
# pip3 install \
 defusedxml \
 requests \
 dugong \
 llfuse \
 pytest \
 pytest-catchlog \
 git+https://github.com/systemd/python-systemd.git#egg=systemd

4. S3QLのインストール

S3QLのサイトから最新版を取得してインストールします。

# cd /usr/local/src/
# curl -L -O https://bitbucket.org/nikratio/s3ql/downloads/s3ql-2.21.tar.bz2
# tar jxf s3ql-2.21.tar.bz2
# cd s3ql-2.21
# python3 setup.py build_ext --inplace
# python3 setup.py install

これでインストール完了です。
次は設定を行います。

S3QLの設定手順

S3QLを使うための設定ファイルを作成します。
事前にさくらのクラウドでオブジェクトストレージを作成しておきます。
必要になるパラメータは以下の2つです。

・アクセスキーID(権限は「読み/書き」)
・シークレットアクセスキー

実際に設定していくため、下記の値を仮に使っていきます。

・アクセスキーID: sakura-object-storage
・シークレットアクセスキー: XXXXXXXXXXXXXXXXXXXXXXXXXXXXX

1. 設定ファイルの作成

オブジェクトストレージを使用するための設定を入れていきます。

# mkdir /root/.s3ql/
# vi /root/.s3ql/authinfo2
[s3c]
storage-url: s3c://b.sakurastorage.jp/sakura-object-storage
backend-login: sakura-object-storage
backend-password: XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
# chmod 600 /root/.s3ql/authinfo2

2. マウントポイントの設定

ストレージのマウントポイントを作成します。

# mkdir /var/sakura_storage

3. キャッシュ用ディレクトリの作成

S3QLのキャッシュファイル用のディレクトリを作成します。

# mkdir /var/cache/s3ql
# chmod 700 /var/cache/s3ql

4. S3QLファイルシステムの作成

オブジェクトストレージ内にS3QLのファイルシステムを構築します。

# mkfs.s3ql --plain --cachedir /var/cache/s3ql --authfile /root/.s3ql/authinfo2 s3c://b.sakurastorage.jp/sakura-object-storage

4. ファイルシステムのマウント

オブジェクトストレージをマウントします。

# mount.s3ql --cachedir /var/cache/s3ql --authfile /root/.s3ql/authinfo2 --compress none --cachesize 1048576 \
 --allow-other s3c://b.sakurastorage.jp/sakura-object-storage /var/sakura_storage/

うまくできましたでしょうか?

mount コマンドで確認して s3c://b.sakurastorage.jp/…… が見え、/var/sakura_storage/ 内にファイルを読み書きできれば成功です!

次はOS起動時に自動でマウントするように起動スクリプトを作ります。
(下記は例となります)

1. Systemd用パラメータファイル作成

# vi /etc/sysconfig/s3ql
 AUTHFILE="/root/.s3ql/authinfo2"
 STORAGEURL="s3c://b.sakurastorage.jp/sakura-object-storage"
 MOUNTPOINT="/var/sakura_storage"
# chmod 600 /etc/sysconfig/s3ql

2. ServiceタイプのUnit設定ファイル作成

# vi /etc/systemd/system/s3ql.service
[Unit]
 Description=mount s3ql filesystem
 After=network.service

[Service]
 Type=simple
 EnvironmentFile=/etc/sysconfig/s3ql
 ExecStart=/usr/bin/mount.s3ql --fg --cachedir /var/cache/s3ql --authfile ${AUTHFILE} --compress none --cachesize 1048576 --allow-other ${STORAGEURL} ${MOUNTPOINT}
 ExecStop=/usr/bin/umount.s3ql ${MOUNTPOINT}
 TimeoutStopSec=42

[Install]
 WantedBy=multi-user.target

3. Service起動確認

このスクリプトでマウントできるかどうかのテストをします。

# systemctl start s3ql.service

これで無事マウントできれば、次は再起動後も自動でマウントされるように設定をします。

# systemctl enable s3ql.service

終わりに

今回はなるべく既存パッケージを使うようにしているので、前回の手順よりは楽に導入できると思います。
Beat Communicationでは、常にこのような新しい技術を取り入れながら開発を行っています。技術者も随時募集しておりますので、ご興味がある方はぜひこちらまでお問い合わせください。