LoginSignup
4
4

More than 5 years have passed since last update.

LeoFSにS3FS-Cでマウントまでやってみる

Posted at

前回LeoFSの起動までやったので、今回S3FS-Cとかいうのを使って、LeoFSのマウントをしてみる。下記のドキュメントを参考に、インストールからやる。
Amazon S3 Client Tutorials — LeoFS 1.0 documentation

FUSEというのはユーザースペースでファイルシステムを作成できる機能のこと。これをすることで、外部のツールからLeoFSが使えるようになるのかな?よくわからんが、手当たりしだいに触っているうちにわかってくるはず。

S3FS-Cのインストール

$ sudo yum install libfuse-dev libcurl4-openssl-dev fuse-utils

上記でドキュメント中にあったapt-getのやつが入るかとおもっていたけど、入らなかった。やっぱりかー

No package libfuse-dev available.
No package libcurl4-openssl-dev available.
No package fuse-utils available.

とりあえず足りないライブラリを無視して次に進んでみる。足りなかったらエラー出るやろ

$ cd /usr/local/src
$ git clone https://github.com/leo-project/s3fs-c.git
$ cd s3fs-c/
$ ./configure

No package 'fuse' found
No package 'libcurl' found
No package 'libxml-2.0' found

やっぱりなんか無いって怒られた。ちょっとググりながら必要っぽいものをいれる。

# yum -y install fuse-devel
# yum -y install curl-devel
# yum -y install libxml2-devel

もう一度make

$ cd /usr/local/src/s3fs-c
$ ./configure
$ make
$ make install

行けた!

前回作ったbucketsはこんな感じ

$ telnet 127.0.0.1 10010
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
get-buckets
cluster id   | bucket      | owner  | permissions      | created at                
-------------+-------------+--------+------------------+---------------------------
leofs_1      | tarr-bucket | tarr   | Me(full_control) | 2014-07-02 14:18:14 +0900

このtarr-bucketっていうのを使う。

hostsファイルの編集。下記の行を/etc/hostsに追加した。

127.0.0.1 localhost tarr-bucket.localhost

sudo su leofsしたあとで(ここまでrootで作業)

$ vi ~/.passwd-s3fs

# 下記を追加。
b0b13a47973f28e70ee8:7315fb1215c71273bdc721b57b7f2850437ce6ce

$ chmod 600 ~/.passwd-s3fs

mount関連

$ /usr/local/src/s3fs-c/src/s3fs tarr-bucket /usr/local/dev/tarr-bucket -o url='http://localhost:8080'
s3fs: unable to access MOUNTPOINT /usr/local/dev/tarr-bucket: No such file or directory

directory無いって怒られたのでmkdir

$ mkdir -p /usr/local/dev/tarr-bucket
$ /usr/local/src/s3fs-c/src/s3fs tarr-bucket /usr/local/dev/tarr-bucket -o url='http://localhost:8080'
fuse: failed to exec fusermount: Permission denied
$ sudo su
# /usr/local/src/s3fs-c/src/s3fs tarr-bucket /usr/local/dev/tarr-bucket -o url='http://localhost:8080'
s3fs: could not determine how to establish security credentials

パーミッション関連で怒られたのでrootでやったが、セキュリティ関連でなんかエラーが出てる。なんじゃろっておもったが、rootのホームにアクセスキーのファイルを置いていないからか。

$ sudo su
$ vi ~/.passwd-s3fs

# 下記を追加。
b0b13a47973f28e70ee8:7315fb1215c71273bdc721b57b7f2850437ce6ce

$ chmod 600 ~/.passwd-s3fs

あー、これ絶対あとでパーミッションで面倒くさいことになるなー。でも、とりあえず先に進む。

$ /usr/local/src/s3fs-c/src/s3fs tarr-bucket /usr/local/dev/tarr-bucket -o url='http://localhost:8080'

お、いけたっぽい。よくわからないままとりあえずdirectoryにファイルを直置きしてみる

$ touch /usr/local/dev/tarr-bucket/test.txt
$ ls -l /usr/local/dev/tarr-bucket/test.txt
-rwxrwxrwx. 1 root root 0 Jul  2 15:31 /usr/local/dev/tarr-bucket/test.txt

rootではいけた。leofsユーザーだとどうか。

$ touch /usr/local/dev/tarr-bucket/test.txt
touch: cannot touch `/usr/local/dev/tarr-bucket/test.txt': Permission denied

置けないよね。というかそもそもdirectoryにpermissionないのか。

$ sudo su
# chown leofs:leofs /usr/local/dev/tarr-bucket
# ls -ld /usr/local/dev/tarr-bucket
drwxrwxr-x. 1 root root 0 Jan  1  1970 /usr/local/dev/tarr-bucket

あれ、chown効かない。こういうもんなの?やっぱりマウントのところから作りなおしたほうが良さそう。

take2

umountする。

$ df
$ umount /usr/local/dev/tarr-bucket
$ df

Fuseを一般ユーザ権限で(修正版) - Hell o world (foo)
errorのこれでググったところ、fusermountコマンドのパーミッションで解決するらしい。

fuse: failed to exec fusermount: Permission denied

$ ls -l /usr/bin/fusermount 
lrwxrwxrwx. 1 root root 15 Jul  1 12:30 /usr/bin/fusermount -> /bin/fusermount
$ ls -l /bin/fusermount
-rwsr-x---. 1 root fuse 32336 Dec  8  2011 /bin/fusermount

確かにパーミッションない。fuseにleofsユーザーを追加。

$ sudo su
# usermod -G fuse leofs
# cat /etc/group | grep fuse
fuse:x:494:leofs

そしてもう一度マウント。

$ /usr/local/src/s3fs-c/src/s3fs tarr-bucket /usr/local/dev/tarr-bucket -o url='http://localhost:8080'
$ touch /usr/local/dev/tarr-bucket/apple
$ ls /usr/local/dev/tarr-bucket
apple  test.txt

leofsユーザーでいけた!とりあえずこれで大丈夫なはず。

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4