日向夏特殊応援部隊

俺様向けメモ

Note of MogileFS #03 - MogileFS Serverのインストール(覚書)

はじめに

まだ勉強中なんで内容は物凄い無保証です。w
あと基本的にSixApartではDebianでの動作が多いらしいのでDebian使いの方は少し幸せかもしれません。


それとziguzaguさんの記事を非常に参考にさせて頂きました。この場を借りてお礼申し上げます。

下準備

とりあえずMySQLは必要です!
今回はtrackerはhttpセットアップとします。

As we've said, MogileFS can use NFS or HTTP, but we highly recommend an HTTP-based setup! Linux NFS is horrible and we've experienced no end of lowmem problems, file corruption (4k pages of zeros), and NFS server problems where you can't do "nohide" mounts to wildcard hosts. NFS is hell. Avoid it.

Bradさんは相当NFSが嫌いみたいですね。*1
と言う訳でNFSでのセットアップはしないでHTTPのみでやっていきます。実際NFSでセットアップしても…って感じですしねぇ。

CPANから事前にインストール

最終的に必要で事前にあった方が楽なCPANモジュール*2を予めインストールしておきます。

  1. IO::AIO
  2. Net::Netmask
  3. Perlbal
  4. MogileFS::Client
# perl -MCPAN -e "install IO::AIO"
# perl -MCPAN -e "install Net::Netmask"
# perl -MCPAN -e "install Perlbal"
# perl -MCPAN -e "install MogileFS::Client"

事前に簡単に準備できるのはここまでみたいです。

SixApartのsvnからmogilefs-serverをインストール

とりあえず適当なディレクトリにでもmogilefsのtrunkをcheckoutしておきましょう。

# mkdir -p /usr/local/src/mogilefs
# cd /usr/local/src/mogilefs
# svn co http://code.sixapart.com/svn/mogilefs/trunk/ ./

ちなみにtrunkの中には大きく分けてserver, api, utilとあります。

server
MogileFS::Server
api
MogileFS::Client
utils
MogileFS::Utils*3


これらの詳しい話はまたの機会かShibuya.pmのTechnical Talk #7でお話します。*4

で早速serverをインストールしましょう。

# cd server

ここに入っているのがmogilefs-serverなので、入っているMakefile.PLをお決まりどおりに実行しましょう。

# perl Makefile.PL
# make
# make install

僕の手元のテスト環境がFC3なんですが、どうしてもmake testが上手く行かなかったので、今回は割愛します。


このときに、

Installing /usr/bin/mogdbsetup
Installing /usr/bin/mogautomount
Installing /usr/bin/mogilefsd

と言った具合に3つのコマンドがインストールされます。mogilefs-serverをインストールすることによって出来るコマンドは大体下記のような用途になります。*5

mogdbsetup
mogilefsdの為のデータベースをsetupするコマンドです
mogautomount
調査中ですorz...*6
mogilefsd
client側からのリクエストに対して設定されたデータベースの設定値に基づき、適切なstorage nodesを選びレスポンスを返すdaemonです。
mogstored
MogileFS Clientからのリクエストを受けつけ、レスポンスを返します。


MogileFSの各パッケージではそれぞれいろんなコマンドが存在します。
その中にはMANIFESTにはあるけど、インストールされないコマンドなんてのも存在するので、SixApartがやっているように、specfile化*7しちゃうとか工夫が必要そうです。

MogileFS::Utilsのインストール

このモジュールはCPANにはまだcommitされていないので、自分でsvnから持ってきてインストールする必要があります。


先のmogilefs-serverのときにcheckoutしているので、

# cd ../utils

がそれに当たります。


こちらも同様にして、

# perl Makefile.PL
# make
# make install

で完了です。ちなみにtestは現時点*8では入ってないのでskipしてます。


ここまでが必要なPerlモジュールのインストールになります。

mogilefs-serverのセットアップに関して

ここら辺を見ると概ね下記のような流れでセットアップを行っていくようです。

  1. storage nodesの管理用データベースをMySQLで作る
  2. trackers(mogilefsd)のセットアップ
  3. mogstoredのセットアップ

またこれらが終わった後に二つのdaemonの起動順として、

  1. http://www.danga.com/mogilefs/setup_http.bml
  2. http://durrett.net/mogilefs_setup.htmlのRunning MogileFS辺り
  3. http://mogilefs.schtuff.com/another_how_to_install_mogilefs_debian_sarge

とあるように

  • mogstored
  • mogilefsd

の順番で起動してからmogadmで確認するって言うフローになってるみたいなので、
それに沿ってやっていきます。

*1:僕も以前に何度も痛い目にあってるのでnfsは嫌いです。

*2:http://www.sixapart.jp/techtalk/2006/10/dev_mogilefs_install.html Linux::AIOが入れられるならそっちがいい。またNet::Netmaskなんかも必要みたいです。

*3:MogileFS::Utilってモジュールがmogilefs-serverに含まれているので混同しないように注意

*4:きちんと話せるかgkbrですけどw

*5:この記述、後できちんと書きます。自信無し

*6:まだ上手く動かせてない

*7:via DECON 2006 で講演してきました: blog.bulknews.net にあるpdf参照

*8:$MogileFS::Utils::VERSION = '1.00'