こんにちは、大分久々の記事になってしまったわたなべです。ご無沙汰していたこの春に、前職を退職して現在はフリーのエンジニアとして活動しています。
前回まではAPIに関する記事を数本書いていますが、今回から「ニフティクラウド ストレージ」に関して幾つか記事を書きたいと思います。
「ニフティクラウド ストレージ」の概要
「ニフティクラウド ストレージ」は昨年2011年9月に正式提供が開始された、大容量・大量のデータを容量を気にせずクラウド上に保存できるサービスです。昨今では、コンピュータシステムで扱うデータ量は増える傾向にあります。また、BCPやDRなどの実現の為にこれらのデータのバックアップは重要な課題です。「ニフティクラウド ストレージ」はこのような大量・大容量のデータの保存先として利用しやすいサービスです。「ニフティクラウド ストレージ」の特徴は以下の通りです。
容量無制限
通常のハードディスクと違い容量に制限が無い
従量課金
利用した分だけ利用料金がかかるので無駄が無い
自由度の高いAPIによるアクセス
Amazon S3互換の自由度が高いAPIを利用して独自のシステムを構築可能
高い信頼性
トリプルミラーによる冗長化
分割アップロードによる高速アップロード
GB/TBクラスのデータも分割アップロードで高速にアップロード可能
「ニフティクラウド ストレージ」は通常のハードディスクとは違いサーバーにマウントすることは出来ません。データの管理はコントロールパネルまたはAPIを使用する必要があります。しかし、s3fs - http://code.google.com/p/s3fs/ を使用すると「ニフティクラウド ストレージ」上のファイルを通常のローカルファイルと同じように扱うことが出来ます。今回は、s3fs-cloudpack - https://github.com/memorycraft/s3fs-cloudpack を使用して「ニフティクラウド ストレージ」をマウントする方法を解説します。
なお、以下の内容はニフティクラウド上のCentOS 6.2 plain 上で動作を確認しています。
s3fs-cloudpackの設定
ビルドに必要なパッケージのインストール
s3fs-cloudpackはバイナリパッケージが存在しないためソースからインストールする必要があるため、まずは以下の要領でビルドに必要なパッケージをインストールします。
# yum install -y gcc gcc-c++ libstdc++-devel curl-devel libxml2-devel openssl-devel mailcap make
FUSEのインストール
s3fsはFUSE - http://fuse.sourceforge.net/ というモジュールを使用してファイルシステムの機能を実現しています。以下のようにFUSEをインストールします。
# cd /usr/local/src
# wget "http://sourceforge.net/projects/fuse/files/fuse-2.X/2.8.5/fuse-2.8.5.tar.gz/download
"
# tar xfz fuse-2.8.5.tar.gz
# cd fuse-2.8.5
# ./configure prefix=/usr
# make
# make install
# ldconfig
# modprobe fuse
s3fs-cloudpackのインストール
# cd /usr/local/src
# curl -Lhttps://github.com/memorycraft/s3fs-cloudpack/tarball/master
-o s3fs-cloudpack.tgz # tar xfz s3fs-cloudpack.tgz # cd memorycraft-s3fs-cloudpack-a5e4da3 # chmod 755 configure # export PKG_CONFIG_PATH=/usr/lib/pkgconfig:/usr/lib64/pkgconfig # ./configure prefix=/usr # make # make install
s3fs-cloudpackの設定
s3fs-cloudpackはREST APIを使用して「ニフティクラウド ストレージ」にアクセスするためAPIアクセスキーを設定します。アクセスキー/シークレットアクセスキーはコントロールパネルで作成・取得することが出来ます。
# vim /etc/passwd-s3fs [アクセスキー]:[シークレットアクセスキー] # chmod 640 /etc/passwd-s3fs
最後に、「ニフティクラウド ストレージ」をマウントするディレクトリを作成します。
# mkdir /mnt/ncs
「ニフティクラウド ストレージ」をマウント
「ニフティクラウド ストレージ」を利用するにはバケットと呼ばれる容器のようなものを作成する必要があります。コントロールパネルのクラウドストレージエクスプローラより作成してください。
バケットの作成が完了したら以下のコマンドでファイルシステムとしてマウントすることが出来ます。
# s3fs [バケット名] /mnt/ncs -o allow_other -o url=http://ncss.nifty.com
正常にマウントが完了すると以下のように 256TBのファイルシステムとして表示されます。
# df -h Filesystem Size Used Avail Use% マウント位置 /dev/sda3 28G 1.4G 25G 6% / tmpfs 499M 0 499M 0% /dev/shm /dev/sda1 504M 53M 426M 12% /boot s3fs 256T 0 256T 0% /mnt/ncs
マウントが完了すればあとは通常のハードディスクと同じようにアクセスすることが可能です。ただし、ネットワーク越しでのアクセスが行われるためハードディスクと比べるとアクセス速度はかなり遅いので注意が必要です。筆者がdbenchを使って計測した結果では 0.9MB/sec?2.5MB/sec 程度の速度でした。
まとめ
s3fsを利用することでAPIを使用するよりも簡単に「ニフティクラウド ストレージ」を利用することが出来ることがおわかりいただけたかと思います。アクセス性能はハードディスクに劣りますが、容量に制限の無いことや可用性は非常に魅力的です。また、ローカルファイルと同じようにアクセスすることが出来るため、既存のアプリケーションへの適用も比較的容易に実現できると思います。