目次
環境
さくらVPS、CentOS 5.5 x86_64
インストール
現時点でのs3fs の最新版(1.59)では、以下のライブラリが必要となっています
- fuse 2.8.4
- libcurl 7.0
- libxml-2.0 2.6
- libcrypto 0.9
curlのインストール
# yum install curl-devel -y
libxml2のインストール
# yum install libxml2-devel -y
FUSEのインストール
$ wget http://sourceforge.net/projects/fuse/files/fuse-2.X/2.8.5/fuse-2.8.5.tar.gz/download $ tar zxvf fuse-2.8.5.tar.gz $ cd fuse-2.8.5 $ ./configure $ make # make install
s3fsをインストール
$ wget http://s3fs.googlecode.com/files/s3fs-1.59.tar.gz
$ tar zxvf s3fs-1.59.tar.gz
$ cd s3fs-1.59
$ ./configure --prefix=/usr
checking build system type... x86\_64-unknown-linux-gnu
checking host system type... x86\_64-unknown-linux-gnu
checking target system type... x86\_64-unknown-linux-gnu
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking for g++... g++
checking whether the C++ compiler works... yes
checking for C++ compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking for style of include used by make... GNU
checking dependency style of g++... gcc3
checking for pkg-config... /usr/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
checking for DEPS... no configure: error: Package requirements (fuse >= 2.8.4 libcurl >= 7.0 libxml-2.0 >= 2.6 libcrypto >= 0.9) were not met: No package 'fuse' found Consider adjusting the PKG\_CONFIG\_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables DEPS\_CFLAGS and DEPS\_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details.
fuseのパッケージが見つからないというエラーがでました
しょんぼり技術メモさんの記事を参考に
$ find / -name 'fuse.pc' 2> /dev/null /root/fuse-2.8.5/fuse.pc /usr/local/lib/pkgconfig/fuse.pc
から、PKG_CONFIG_PATHを指定して、再度configureを実施。
$ export PKG\_CONFIG\_PATH=/usr/local/lib/pkgconfig $ ./configure --prefix=/usr $ make # make install
s3との接続
s3fsのインストールが終了しました。以下のどれかの方法で、s3をマウントできるようです
- コマンドラインオプションで、passwd_fileを指定
- AWSACCESSKEYID と AWSSECRETACCESSKEY の環境変数を設定
- ホームディレクトリにある .passwd-s3fs ファイルを使用
- /etc/passwd-s3fs ファイルを使用
3番目と、4番目の方法を説明します
.passwd-s3fs ファイルを使う場合(上記3番目の方法)
AWSアクセスキーとAWSシークレットキーが記載された .passwd-s3fsファイルをホームディレクトリに作成します
$ touch ~/.passwd-s3fs $ vi ~/.passwd-s3fs # 以下のとおり編集します。 AWSアクセスキー:AWSシークレットキー
/etc/passwd-s3fs を使用する場合(上記4番目の方法)
$ touch /etc/passwd-s3fs $ vi /etc/passwd-s3fs # 以下のとおり編集します。 AWSアクセスキー:AWSシークレットキー
s3のマウント
はじめてのマウントする場合 modprobe を実行します。
# modprobe fuse
s3をマウントします。
# s3fs バケット名 マウントポイント
確認をします。
$ df -h Filesystem Size Used Avail Use% Mounted on /dev/hda2 17G 1.6G 15G 10% / /dev/hda1 99M 12M 82M 13% /boot tmpfs 250M 0 250M 0% /dev/shm fuse 256T 0 256T 0% /mnt/s3
うまくマウントされました( /mnt/s3 にマウントしています)。
fstabの設定
再起動時に自動的にマウントするように設定をします。
# vi /etc/fstab s3fs#バケット名 マウントポイント fuse allow\_other,default\_acl=public-read 0 0
起動時に以下のようなメッセージが表示された場合
fuse: device not found, try 'modprobe fuse' first
/etc/rc.d/rc.sysinit のfstab設定の前でmodprobe fuseを実行します。だいたい 「. /etc/init.d/functions」の記述のあたりです。
... . /etc/init.d/functions # for s3fs modprobe fuse # この記述を追加 ...
再起動をして、s3がマウントされていれば成功です