AWS

2009年08月20日

10分で巨大ストレージを調達する

livedoorClipに登録 livedoorClipに登録 | このエントリーをはてなブックマークに追加 | del.icio.usに登録 | MM/Memoに登録

概要

  • s3fsを使い、Amazon S3をファイルシステム扱いする

前提条件

  • Amazon Web Serviceのアカウントを持っている事
  • s3foxなどでAmazon S3にバケットを作っておく事

作業環境

作業内容

■UNIXグループ設定

  • AWSのキーを/etc/passwd-s3fsに設定(記述)する必要がある
    • 一般ユーザーに見せたくないので、特定アカウント/特定グループにのみ公開する
      • 特定ユーザー名: ubuntu
      • 特定グループ名: s3fs
  • ⇒と言う事で、グループ設定する

▼グループ名「s3fs」存在有無を確認

$ getent group s3fs

▼「s3fs」グループ作成

$ sudo addgroup --system s3fs

▼「s3fs」グループが作成された事を確認

$ getent group s3fs
s3fs:x:120:

▼ubuntuを「fuse」と「s3fs」に追加

$ sudo vigr

▼ubuntuが「fuse」と「s3fs」に追加された事を確認

$ getent group fuse
fuse:x:106:ubuntu
$ getent group s3fs
s3fs:x:120:ubuntu

▼s3fsビルド環境整理

必要に応じてパッケージをインストール。
今回は下記パッケージが不足していたのでインストール。

$ sudo apt-get install libcurl4-gnutls-dev
$ sudo apt-get install libxml2-dev
$ sudo apt-get install libfuse-dev

▼s3syncをビルド

$ wget http://s3fs.googlecode.com/files/s3fs-r177-source.tar.gz
$ tar zxvf s3fs-r177-source.tar.gz
$ cd s3fs
$ make

▼s3fsをインストールし、setgid設定

$ sudo install -m 2755 -o root -g s3fs ./s3fs /usr/local/bin/s3fs
$ ls -la /usr/local/bin/s3fs
-rwxr-sr-x 1 root s3fs 697215 Aug 19 07:17 /usr/local/bin/s3fs

▼/etc/passwd-s3fs作成

$ sudo vi /etc/passwd-s3fs
---
accesskey_id:secret_accesskey_id の形式で記述
---

▼s3fsグループのみ公開する

$ sudo chown root:s3fs /etc/passwd-s3fs
$ sudo chmod 640 /etc/passwd-s3fs

■実際にマウントしてみる

  • S3バケット名: s3fs-sandbox-bucket
  • マウントポイント: /home/ubuntu/mnt-s3fs

▼ユーザー確認

$ whoami
ubuntu

▼マウントポイント作成

$ cd
$ pwd
/home/ubuntu
$ mkdir mnt-s3fs

▼Amazon S3をs3fsでマウント

$ s3fs s3fs-sandbox-bucket mnt-s3fs/

▼マウント状況を確認

$ mount | grep s3fs
s3fs on /home/ubuntu/mnt-s3fs type fuse.s3fs (rw,nosuid,nodev,user=ubuntu)

▼dfを実行してみる

$ df /home/ubuntu/mnt-s3fs
Filesystem           1K-blocks      Used Available Use% Mounted on
s3fs                 274877906944         0 274877906944   0% /home/ubuntu/mnt-s3fs
$ df -h /home/ubuntu/mnt-s3fs
Filesystem            Size  Used Avail Use% Mounted on
s3fs                  256T     0  256T   0% /home/ubuntu/mnt-s3fs

dfには256Tとして認識されている。
Amazon S3の容量に上限は無い。
いつまでもディスク使用率「0%」となるはずだ。

▼lsしてみる

$ cd mnt-s3fs
$ ls -la
total 0

▼ファイル生成

$ touch foo.txt
$ ls -la
total 1
-rw-r--r-- 1 ubuntu ubuntu 0 Aug 20 03:14 foo.txt
$ date | tee date.txt
Thu Aug 20 04:31:22 UTC 2009
$ ls -la date.txt
-rw-r--r-- 1 ubuntu ubuntu 29 Aug 20 04:31 date.txt
$ cat date.txt
Thu Aug 20 04:31:22 UTC 2009
$ df /home/ubuntu/mnt-s3fs
Filesystem           1K-blocks      Used Available Use% Mounted on
s3fs                 274877906944         0 274877906944   0% /home/ubuntu/mnt-s3fs

極小ファイルとは言え、ファイルを生成した。
しかし、使用サイズに変化が見られない。
Amazon S3の無制限を表している。


あとがき

  • Amazon S3をファイルシステムとして扱えるのが面白い
  • 手元の環境に巨大ストレージを構築可能となってしまった
  • しかも、共有ストレージとして利用が可能だ。遅いNFSのようなもの。
  • リアルタイム性が求められる場面、更新頻度が高いファイル(例えばアクセスログ)にはs3fs(Amazon S3)は向かない。

Amazon S3の特性・性質を十分理解した上でs3fsを上手に使えば、様々な利用方法が考えられる。
s3fsは面白いので、色々とハックしてみる予定。



半袖 at 14:25|PermalinkComments(0)TrackBack(0)