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

# 何ができるか
さくらのクラウドで作成したサーバに同じくさくらのクラウドで
提供されている[オブジェクトストレージ](http://cloud.sakura.ad.jp/specification/object-storage/)をマウントすることができる。
もう、静的なファイルの置き場（容量）に悩まなくても済む（？）

```
[root@objstorage s3fs-fuse]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda3        16G  2.0G   13G  14% /
devtmpfs        483M     0  483M   0% /dev
tmpfs           497M     0  497M   0% /dev/shm
tmpfs           497M  6.5M  490M   2% /run
tmpfs           497M     0  497M   0% /sys/fs/cgroup
tmpfs           100M     0  100M   0% /run/user/0
s3fs            256T     0  256T   0% /mnt/objstoragedir　#←コレ！めっちゃ容量ある！
[root@objstorage s3fs-fuse]# 
```

# なぜこの記事を書いたのか
思いの外、情報が少なく先人の方々が書いた記事通りに行かないこともあり、
躓いたので自分の備忘録として。

## 先人たちの記事（ありがたや）
http://qiita.com/sh_cs/items/9cd9d1b4d902ef750ab6
https://www.softel.co.jp/blogs/tech/archives/4660

# 前提
- さくらのクラウドでサーバは作成済み。
- OSはcentOS7 でインストール直後で何もしていない。  
CentOS Linux release 7.3.1611 (Core) 
- オブジェクトストレージにはバケットを作成済み

# s3fsのインストール

- **注意** ：s3fsのバージョンは2016/12/17の時点で1.80ですが、[さくらインターネットのサイトのこの部分に](http://cloud-news.sakura.ad.jp/faq_top/faq_objectstorage/?_ga=1.199858542.1933601246.1476020725)  書かれている  
バージョンの1.74以外だとオブジェクトストレージからダウンロードするときになんだかうまくいかないとか、  
マウントしたのにいきなり切断されるとかあるようなので、 **1.74** を使用するのがよいです。


```
■ yumで必要なものをインストール
# yum install yum install pkgconfig libcurl libcurl-devel libxml2-devel make automake gcc libstdc++-devel gcc-c++ openssl-devel wget fuse-devel
# cd /usr/local/src
# wget https://github.com/libfuse/libfuse/releases/download/fuse-3.0.0/fuse-3.0.0.tar.gz
# tar zxvf fuse-3.0.0.tar.gz
# cd fuse-3.0.0
# ./configure --prefix=/usr
# make
# make install
# ldconfig
# modprobe fuse
# cd /usr/local/src
# wget "https://github.com/s3fs-fuse/s3fs-fuse/archive/v1.74.zip"
# unzip v1.74.zip
# cd s3fs-fuse-1.74
# ./autogen.sh
# ./configure --prefix=/usr
# make
# make install
```

# アクセスキーの設定
1行1バケットで書く

```
# vi ~/.passwd-s3fs
バケット名:アクセスキー:シークレットキー
-----
■記載例
mybucket:mybucket:himitsunopasswordhimituhimitsu
-----

# chmod 600 ~/.passwd-s3fs
# echo 'user_allow_other' >> /etc/fuse.conf
```

# マウントポイントの作成

```
# mkdir -p /mnt/objstoragedir
```
`objstoragedir` の部分は任意

# マウントする

```
# s3fs  バケット名 マウントポイント -o allow_other,url=https://b.sakurastorage.jp,nomultipart
-----
■記載例
# s3fs mybucket /mnt/objstoragedir/ -o allow_other,url=https://b.sakurastorage.jp,nomultipart
-----
```

## マウントできた！

```
[root@objstorage s3fs-fuse]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda3        16G  2.0G   13G  14% /
devtmpfs        483M     0  483M   0% /dev
tmpfs           497M     0  497M   0% /dev/shm
tmpfs           497M  6.5M  490M   2% /run
tmpfs           497M     0  497M   0% /sys/fs/cgroup
tmpfs           100M     0  100M   0% /run/user/0
s3fs            256T     0  256T   0% /mnt/objstoragedir　#←コレ！めっちゃ容量ある！
[root@objstorage s3fs-fuse]# 
```

# 書き込んで見る

```
[root@objstorage objstoragedir]# time dd if=/dev/zero of=test1G bs=1G count=1
1+0 records in
1+0 records out
1073741824 bytes (1.1 GB) copied, 223.14 s, 4.8 MB/s

real    3m43.389s
user    0m0.000s
sys     0m4.193s
[root@objstorage objstoragedir]#
```

# できたファイルを確認してみる
## CUIで確認

```
[root@objstorage objstoragedir]# ls -lah
total 1.1G
drwxrwxrwx  1 root root    0 Jan  1  1970 .
drwxr-xr-x. 3 root root 4.0K Dec 12 22:11 ..
-rw-r--r--  1 root root 1.0G Dec 12 22:14 test1G　#←できてる！
[root@objstorage objstoragedir]# 
```

## コントロールパネルから確認
できてる！
![file.png](https://qiita-image-store.s3.amazonaws.com/0/86853/b746fad6-a7cf-11da-0ba7-d8ff77789c21.png)

# おしまい。
個人的にredmineとかをファイルを添付する系のものをインストールするときに、
20GBのディスクだと心もとないし、かと言ってそのために大きいディスクを用意するのもなぁって感じだったので、
これで解決するといいなぁ（まだ試していない。）

# github
https://github.com/tomokitamaki/setup_sakuranoObjectStrage

# 追記
s3fsのバージョンは1.74でないと
> マウント時に'-o nomultipart'オプションを付けないと20M以上のファイルのダウンロード(get)ができないようです。

とコメントいただいたので、「ふぁｌ！？」っと思って試してみたらアドバイス通りできなかったので修正しました。