さくらのクラウドのオブジェクトストレージをs3fsでマウントする


概要

さくらのクラウドからさくらのオブジェクトストレージをマウントする手順

環境:

  • CentOS6.8

前提条件:

  • オブジェクトストレージにバケット作成済み
  • さくらのクラウドにインスタンス作成済み

s3fsのインストール

yum では入らないようなのでソースからインストールする

##必要なパッケージをインストール
$ sudo yum install pkgconfig libcurl libcurl-devel libxml2-devel make automake gcc libstdc++-devel gcc-c++
##fuseをソースからインストール(最新バージョンはこちらで確認 https://github.com/libfuse/libfuse/releases)
$ sudo cd /usr/local/src
$ sudo wget https://github.com/libfuse/libfuse/releases/download/fuse-2.9.7/fuse-2.9.7.tar.gz
$ sudo tar zxvf fuse-2.9.7.tar.gz
$ sudo cd fuse-2.9.7
$ sudo ./configure --prefix=/usr
$ sudo make
$ sudo make install
##パスを設定
$ sudo echo "export PKG_CONFIG_PATH=/usr/lib/pkgconfig:/usr/lib64/pkgconfig" >> ~/.bash_profile
$ sudo source ~/.bash_profile
##共有ライブラリの依存関係情報を更新する
$ sudo ldconfig
##カーネルモジュールをロード
$ sudo modprobe fuse

##s3fsをgitからインストール
##※さくらで動作確認済みのバージョン1.74をインストール(1.80だと正常に動かない部分があった)
$ sudo cd /usr/local/src
$ sudo wget https://github.com/s3fs-fuse/s3fs-fuse/archive/v1.74.tar.gz
$ sudo cd s3fs-fuse
$ sudo ./autogen.sh
$ sudo ./configure
$ sudo make
$ sudo make install

アクセスキーの設定

複数マウントしたい場合は次の行に書く

$ vim ~/.passwd-s3fs
------------------------------------------------------------
<バケット名>:<アクセスキー>:<シークレットアクセスキー
<バケット名>:<アクセスキー>:<シークレットアクセスキー
------------------------------------------------------------
$ chmod 600 ~/.passwd-s3fs

sshfsの設定を行う

ファイルを作成してuser_allow_otherと記述

##rootでもアクセスできるようになる
$ echo 'user_allow_other' >> /etc/fuse.conf

マウントする

##マウントポイントのディレクトリ作成
$ mkdir -p /mnt/dirb01
##マウントする
##sigv2オプションがないとエラーになるのでつける。
##デフォルトの認証方法(Signature Version 4)だとエラーになる
##さくらのオブジェクトストレージはSignature Version 2
##nomultipartオプションを付けないと20M以上のファイルの転送でエラーとなる?
$ /usr/local/bin/s3fs  dirb01 /mnt/dirb01/ -o allow_other,url=https://b.sakurastorage.jp,nomultipart
##確認する
$ df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/vda2              16G   11G  4.7G  70% /
tmpfs                 939M     0  939M   0% /dev/shm
/dev/vdb               59G   54G  2.0G  97% /mnt/disk1
s3fs                  256T     0  256T   0% /mnt/dirb01 ##←これ
##マウントしたディレクトリに1Gのダミーファイルを作成してみる
$ cd /mnt/dirb01
$ dd if=/dev/zero of=tempfile1G bs=1G count=1
$ ll
-rw-r--r--. 1 admin admin 1.0G Aug  4 06:17 tempfile1G

↓コンソール確認しても追加されてる

ログを出力する場合

マウントがうまくいかない場合-dオプションをつけてログを確認する
出力先→ less /var/log/messages

起動時にマウントする

↓fstabに記述する方法がわからなかったのでとりあえず
追記する

/etc/rc.local
su - [実行するユーザ名] -c "/usr/local/bin/s3fs  dirb01 /mnt/dirb01/ -o allow_other,url=https://b.sakurastorage.jp,nomultipart" 

↑rootで実行されるためsu - [実行するユーザ名]で実行ユーザを指定するようにしている

アンマウントする場合

fusermount -u /mnt/dirb01/

busy状態でアンマウントできない場合-zオプションを加える

fusermount -zu /mnt/dirb01/

参考

CentOS6でs3fsをインストールする
署名バージョン 4 署名プロセス