2013年8月22日木曜日

macでbind使いたい人のメモ

Macでインターネッツ共有をしたときに、自前のDNSを参照させたい時ってあると思います。
そんなときに、MacでBINDを使うメモです。

環境


Max OS X Lion

事前準備



/etc/rndc.keyの作成

sudo rndc-confgen -a


named.confの設定

vim /etc/named.conf


以下サンプル


include "/etc/rndc.key";

controls {
inet 127.0.0.1 port 54 allow {any;}
keys { "rndc-key"; };
};

options {
directory "/var/named";
pid-file "/var/run/named.pid";
allow-query { any; };

// query-source address * port 53;

};

zone "." IN {
type hint;
file "named.ca";
};

zone "localhost" IN {
type master;
file "localhost.zone";
allow-update { none; };
};

zone "0.0.127.in-addr.arpa" IN {
type master;
file "named.local";
allow-update { none; };
};

zone "blog.shase.info" IN {
type master;
file "blog.shase.info.zone";
};

logging {
category default {
_default_log;
};

channel _default_log {
file "/Library/Logs/named.log";
severity debug;
print-time yes;
};
};



zoneファイルを作る


vim /var/named/blog.shase.info.zone


以下zoneのサンプル

$TTL 86400
@ IN SOA localhost root.example.jp.(
2002122001 ; serial
3600 ; refresh 1hr
900 ; retry 15min
604800 ; expire 1w
86400 ; min 24hr
)
IN NS localhost.
hoge IN A 0.0.0.0


他のファイルはデフォルトです。

起動と停止



フォアグラウンド起動


$ sudo named -g


デーモン起動

$ sudo launchctl load -F /System/Library/LaunchDaemons/org.isc.named.plist
Password:
$ ps aux |grep named
hoge 41792 0.2 0.0 2434892 548 s007 S+ 9:27PM 0:00.00 grep named
root 41784 0.0 0.1 2439512 6280 ?? Ss 9:27PM 0:00.02 /usr/sbin/named -f


デーモン停止

$ sudo launchctl unload /System/Library/LaunchDaemons/org.isc.named.plist
$ ps aux |grep named
hoge 41800 0.0 0.0 2434892 548 s007 R+ 9:29PM 0:00.00 grep named


あわせてどうぞ


MacOSXのインターネット共有で、MACアドレス制限を行いたい

2013年8月5日月曜日

JBODはややこしい

カイワレ先生のブログを見て、自分のメモがてら、JBODについて書いてみます。
JBODって、なんぞやって、日本人なら誰もが一度は考えると思うからです。(RAID0と何が違うの?って)

現状、JBODという言葉は非常に曖昧な言葉です。
日本語wikipediaにも3つ定義があります。


1.JBOD機能を持つRAIDコントローラカードを取り付けて、JBODにしたいハードディスクをRAIDコントローラカードに接続する。
2.JBOD用として製造されたディスクアレイ製品をSCSIやファイバーチャネル等のインターフェースに接続する。
3.すでに接続されている複数のハードディスクを、ソフトウェア的に統合してJBODとする(Windows NT系列のOSには「スパン」という名称でこの機能が標準装備されている)。


http://ja.wikipedia.org/wiki/JBOD
より。これはこれで微妙なんですが。。。

まず大雑把な理解として、JBODの特徴を2つ挙げます。(どちらともRAIDに対する優位点です)

  • A.複数のディスクにて、容量が異なる場合も(単純な足し算の)単一のボリュームを構成することができる

  • B.I/O性能がよい、とされる



ちなみに、Aが成立するのは、上記wikipedia定義の1,2,3のときです。
Bが成立するのは、1,2です。(とはいうものの、状況によってRAIDのほうが性能がよかったりします。これは使い方によって変わります。)

3のとき、なぜBが成立しないかというと、ソフトウェアで処理している分オーバーヘッドが大きく、I/Oが出ません。

以下は、ざっくり、1と2は、ハードウェアベースのJBOD。3をソフトウェアベースのJBODとします。

ハードウェアベースのJBOD


ハードウェアベースのJBODとHadoopの話に入りますね。ハードウェアベースのJBODも2つの意味があります。1つは、「束ねられたディスク群」という意味のJBOD。

もうひとつは「物理ディスクが別々の論理ボリュームにマッピングされて、並列書き込み可能な状態(仕組み)」です。上記とはぜんぜん違いますね。

つまり、OSから見えるマウントポイントと物理的なディスクが紐付いている状態ということです。(そして、きちんと別々に書き込むように対応したコントローラがいわゆるJBOD対応のコントローラってやつです)。

Hadoopはアーキテクチャ上、並列に書き込みをしてくれるようです。これは、マウントポイントと実際のディスクが一対一で結びついている時に、その並列性が意味を成すということです。逆にRAIDを組んでしまうとストライプ書き込みをしてしまうので、そのラウンドロビン並列書き込みの意味がなくなってしまうということですね。

ハードウェアのJBODは外付けのエンクロージャで使用されることが多く、サーバ筐体の内蔵ディスクで対応しているものがどのくらい世にあるのかは知りません。

ちょっとだけ調べたら、さすがにDELLのCシリーズとかはJBOD対応のチップ(HBAとしての役割しか果たさないモード)を搭載したLSIのチップとか積んでるみたいですね。

ソフトウェアベースのJBOD


ソフトウェアベースのJBODの話は余談です。こっちは束ねる方だけ触れておきます。

お仕事用途ではあまり使われないので。カイワレ先生がWindows Home Serverの例を出してましたが、あれは、「Drive Bender」の実装の話だと思います。(別に、HOME鯖が最初のJBOD実装ってわけではないです)。

なぜ、Home Server(家庭用鯖)にJBODが必要とされてMSが実装したかというと(最新のHOME鯖では外されているようです)、発売当時、まだ、HDDの値段はそれなりに高く、ユーザのニーズとして、「ジャンク屋で買ってきたHDDいくつか、組み合わせて、でかいOneボリューム構成したいんだけどなー」というのがあったからです。

そのニーズに合致していたのが、ソフトウェアJBODだったんですね。

Linuxの場合は、LVMでソフトウェアのJBOD(のようなもの)を構成することができます。

まとめ


JBODという言葉は、いろんな人が勝手にオレオレ定義で使っている言葉です。さりとて、代替になる適当な言葉もないので、JBODいいよーって言いたいエライ人は、適当に新しい言葉をでっち上げていただけると、世のエンジニアが助かります。

ちなみに、Hadoopのクラスタ組もうと思って、JBOD使えないRAIDカードしか積んでないサーバ渡されたら、しょうがないから、1ディスクでRAID 0ってのを一つの筐体で何個か組む感じの構成になるかと思います。お金くれるんだったら、LSIとかのちゃんと対応したチップ詰んだ鯖にしたいですが。

世の事例を見ると、RAID 0を並べたようなものをJBODなんて言ってる例もあるので、みんな適当に使ってる単語といえばそんな感じ。

おまけ


JBODではWriteキャッシュを切りましょうが一般的なお約束なのですが、もしかしたらHadoopだと気にしなくてもいいのかもしれません。ぐぐればどっかにそんなこと言ってる人いるかも。