何ができるか
さくらのクラウドで作成したサーバに同じくさくらのクラウドで
提供されているオブジェクトストレージをマウントすることができる。
もう、静的なファイルの置き場(容量)に悩まなくても済む(?)
[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ですが、さくらインターネットのサイトのこの部分に 書かれている
バージョンの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]#
コントロールパネルから確認
おしまい。
個人的にredmineとかをファイルを添付する系のものをインストールするときに、
20GBのディスクだと心もとないし、かと言ってそのために大きいディスクを用意するのもなぁって感じだったので、
これで解決するといいなぁ(まだ試していない。)
github
追記
s3fsのバージョンは1.74でないと
マウント時に'-o nomultipart'オプションを付けないと20M以上のファイルのダウンロード(get)ができないようです。
とコメントいただいたので、「ふぁl!?」っと思って試してみたらアドバイス通りできなかったので修正しました。