当サーバは、さくらインターネットのVPSを使用していますが、今回、サーバのバックアップにさくらインターネットが提供するオブジェクトストレージを使用してみました。
今回は、オブジェクトストレージを特定のディレクトリにマウントする方法を紹介します。
目次
前提条件
OSは、CentOS7です。
さくらのVPSを利用しています。さくらインターネットのサービス外のサーバで使用する場合、別途転送料が掛かるみたいなので、注意して下さい。
s3fsのインストール
まず、関連ソフトウェアのインストールをyumで行います。
sudo yum install fuse fuse-devel libcurl-devel libxml2-devel openssl-devel
s3fsをダウンロードし、インストールします。さくらのオブジェクトストレージはs3fsのバージョン1.8以降では、正しく動作しませんでしたので、今回は動作報告がある1.74を使用しています。
wget https://github.com/s3fs-fuse/s3fs-fuse/archive/v1.74.tar.gz
tar zxvf v1.74.tar.gz
cd s3fs-fuse-1.74/
./autogen.sh
make
sudo make install
s3fsの設定
ここから先は、すべてroot権限が必要ですので、suすることを前提で解説します。操作ミスをしないように注意して下さい。
s3fsで使用するアクセスキーを設定します。アクセスキーは、さくらのクラウドのオブジェクトストレージのバケット画面で確認できます。
アクセスキーは権限が「読み/書き」となっている物を使用します。
バケットの作成方法については、さくらのクラウドのサポートサイトをご確認下さい。
vi /etc/passwd-s3fs
エディタが開いたら、アクセスキーIDとシークレットアクセスキーをコロンで区切って記述します。
ACCESSKEYID:SECRETACCESSKEY
ファイルを保存したら、パーミッションを600にします。
chmod 600 /etc/passwd-s3fs
マウントポイントの作成とテスト
マウントポイントを作成します。今回、マウント先は「/mnt/objstore」とします。お好みで変更して下さい。
mkdir /mnt/objstore
マウントができるかどうかテストします。BACKETNAME には、バケットの名前を指定します。
/usr/local/bin/s3fs BACKETNAME /mnt/objstore -o url=https://b.sakurastorage.jp/ -o allow_other
ファイルを置いてみて、さくらのクラウド オブジェクトストレージのバケット画面にある「オブジェクト一覧」をクリックしてみて、サーバで置いたファイルが見えることを確認します。
うまくマウント出来ない場合は、デバッグ出力を試して下さい。何らかのヒントになると思います。
/usr/local/bin/s3fs BACKETNAME /mnt/objstore -o url=https://b.sakurastorage.jp/ -d -d -f -o f2 -o curldbg
確認が終わったら、アンマウントします。
/usr/bin/fusermount -u /mnt/objstore/
もし、ロックされてアンマウントを失敗する場合、-zオプションを指定することで、強制的にアンマウントできます。
自動マウントさせる
CentOS7では、systemctlを使用して自動実行を管理しますので、systemctl用の設定ファイルを記述します。ここではサービス名に「sakura-obj」を使用しています。お好みで変更して下さい。
vi /etc/systemd/system/sakura-obj.service
エディタが開いたら、以下の内容を入力します。BACKETNAME には、バケットの名前を指定します。
[Unit]
Description=mount SakuraCloud Object storage
After=network.target
[Service]
Type=simple
RemainAfterExit=yes
ExecStart=/usr/local/bin/s3fs BACKETNAME /mnt/objstore -o url=https://b.sakurastorage.jp/ -o allow_other
ExecStop=/usr/bin/fusermount -u /mnt/objstore/
[Install]
WantedBy=multi-user.target
systemctlをリロードし、自動起動するように設定します。
systemctl daemon-reload
systemctl enable sakura-obj.service
サービスを起動して、正しくマウントされているか確認します。
systemctl start sakura-obj.service
systemctl status sakura-obj.service
「active (exited)」と表示され、dfでマウント状態が確認できていれば成功です。一度サーバを再起動して、自動的にマウントされることを確認して下さい。