2010-04-06
■DRBDを動かしてみた備忘録
参考サイト
いつものように、ゲストOS 2台で構築。OSはCentOS 5.4です。
1台目のホスト名を"drbd_prim"、IPアドレスを192.168.1.96、2台目のホスト名を"drbd_second"、IPアドレスを192.168.1.97とします。
また、DRBDデバイスは/dev/drbd0とします。
まず、ゲストOS一つを準備してその後それをコピーします。
1台目
先日作っておいた素のCentOS 5.4(先日の「ゲストOSのインストール(CentOS)」のところまでのもの)をコピー。
# virt-clone -o centos.base -n drbd_prim -f /var/lib/libvirt/images/drbd_prim.img
で、ハードディスクを追加。virt-manager等で追加してください。
ここでは、/dev/hdbに16Gを作っています。
起動してパッケージインストール
ゲストを起動して、必要なパッケージのインストールをしていきます。
まずはアップデート。
# yum -y update
# yum -y install make gcc flex kernel-devel rpm-build
DRBDのビルドとインストール
適当なディレクトリでDRBDのソースを取得して展開します。
# mkdir work # cd work/ # wget http://oss.linbit.com/drbd/8.3/drbd-8.3.7.tar.gz # tar zxf drbd-8.3.7.tar.gz # cd drbd-8.3.7 #
# ./configure # make rpm # make km-rpm #
/usr/src/redhat/RPMS/*/ 以下にrpmパッケージが8個作成されるので、これらをインストール。
# rpm -ivh /usr/src/redhat/RPMS/*/drbd-* 準備中... ########################################### [100%] 1:drbd-utils ########################################### [ 13%] 2:drbd-bash-completion ########################################### [ 25%] 3:drbd-heartbeat ########################################### [ 38%] 4:drbd-pacemaker ########################################### [ 50%] 5:drbd-udev ########################################### [ 63%] 6:drbd-xen ########################################### [ 75%] 7:drbd ########################################### [ 88%] 8:drbd-km-2.6.18_164.15.1########################################### [100%] #
DRBDの設定
DRBDの設定は、/etc/drbd.d/に、*.resとして作成します。(/etc/drbd.confを直接編集してもいいですが。)
# cat /etc/drbd.d/test.res
resource test {
device /dev/drbd0;
disk /dev/hdb1;
meta-disk internal;
on drbd_prim {
address 192.168.1.96:7789;
}
on drbd_second {
address 192.168.1.97:7789;
}
}
#
因みに設定ファイルの例は、ソースコードの scripts/drbd.conf.example にあります。
続いて、追加したハードディスクはfdiskでパーティション(/dev/hdb1)を作成しておきます。
# fdisk -l /dev/hdb Disk /dev/hdb: 17.1 GB, 17179868672 bytes 255 heads, 63 sectors/track, 2088 cylinders Units = シリンダ数 of 16065 * 512 = 8225280 bytes デバイス Boot Start End Blocks Id System /dev/hdb1 1 2088 16771828+ 83 Linux #
ネットワーク設定は、以下のように赤いところを編集し、また、ifcfg-eth0.bakは削除します。
# cat /etc/sysconfig/network NETWORKING=yes NETWORKING_IPV6=no HOSTNAME=drbd_prim ← ホスト名 # rm /etc/sysconfig/network-scripts/ifcfg-eth0.bak # cat /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 BOOTPROTO=none ← 固定IPアドレス ONBOOT=yes HWADDR=00:16:36:4d:6f:90 IPADDR=192.168.1.96 NETMASK=255.255.255.0 GATEWAY=192.168.1.1 #
一旦ここまで完了したら、シャットダウンし、2台目のゲストを作成します。
2台目のゲスト作成
virt-cloneコマンドを使ってdrbd_primをdrbd_secondとしてコピーします。
# virt-clone -o drbd_prim -n drbd_second What would you like to use as the cloned disk (file path) for '/var/lib/libvirt/ images/drbd_prim.img'? /var/lib/libvirt/images/drbd_second.img What would you like to use as the cloned disk (file path) for '/var/lib/libvirt /images/drbd_prim_sync.img'? /var/lib/libvirt/images/drbd_second_sync.img Cloning /var/lib/libvirt/ 100% |=========================| 16 GB 01:34 Cloning /var/lib/libvirt/ 100% |=========================| 16 GB 01:39 Clone 'drbd_second' created successfully. #
で、2台とも起動します。(2台目はこの後ネットワークなどの設定をします。)
# virsh start drbd_prim # virsh start drbd_second #
1台目の続き
# modprobe drbd # cat /proc/drbd ← 確認 version: 8.3.7 (api:88/proto:86-91) GIT-hash: ea9e28dbff98e331a62bcbcc63a6135808fe2917 build by root@drbd_prim, 2010-04-05 23:10:16 #
drbdのメタデータを作ります。
# drbdadm create-md test md_offset 17174347776 al_offset 17174315008 bm_offset 17173790720 Found ext3 filesystem 104388 kB data area apparently used 16771280 kB left usable by current configuration Even though it looks like this would place the new meta data into unused space, you still need to confirm, as this is only a guess. Do you want to proceed? [need to type 'yes' to confirm] yes ← ここで"yes"を入力 Writing meta data... initializing activity log NOT initialized bitmap New drbd meta data block successfully created. success #
次にDRBDのデーモンを開始します。
# /etc/init.d/drbd start Starting DRBD resources: [ d(test) n(test) ].......... ************************************************************** DRBD's startup script waits for the peer node(s) to appear. - In case this node was already a degraded cluster before the reboot the timeout is 0 seconds. [degr-wfc-timeout] - If the peer was available before the reboot the timeout will expire after 0 seconds. [wfc-timeout] (These values are for resource 'test'; 0 sec -> wait forever) To abort waiting enter 'yes' [ 13]:yes ← "yes"を入力 . #
/proc/drbdを確認すると"Secondary/Unknown"になっているのが分かります(2台目はまだ未設定なのでUnknownです)。
# cat /proc/drbd version: 8.3.7 (api:88/proto:86-91) GIT-hash: ea9e28dbff98e331a62bcbcc63a6135808fe2917 build by root@drbd_prim, 2010-04-05 23:10:16 0: cs:StandAlone ro:Secondary/Unknown ds:Inconsistent/DUnknown r---- ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:16771280 #
これをPrimaryにしてやります。
# drbdsetup /dev/drbd0 primary -o # cat /proc/drbd ← 確認すると"Primary/Unknown"になりました。 version: 8.3.7 (api:88/proto:86-91) GIT-hash: ea9e28dbff98e331a62bcbcc63a6135808fe2917 build by root@drbd_prim, 2010-04-05 23:10:16 0: cs:StandAlone ro:Primary/Unknown ds:UpToDate/DUnknown r---- ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:16771280 #
これでDRBDデバイスが使えるようになったので、/dev/drbd0 をフォーマットしてやります。
# mkfs.ext3 /dev/drbd0 mke2fs 1.39 (29-May-2006) Filesystem label= OS type: Linux <中略> This filesystem will be automatically checked every 38 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override. #
マウントすれば使えるようになっています。
# mount /dev/drbd0 /mnt/ # df Filesystem 1K-ブロック 使用 使用可 使用% マウント位置 /dev/mapper/VolGroup00-LogVol00 15109112 2679456 11649780 19% / /dev/hda1 101086 19114 76753 20% /boot tmpfs 255024 0 255024 0% /dev/shm /dev/drbd0 16508024 176244 15493216 2% /mnt #
2台目
2台目はまずネットワークを設定してやります(赤いところを編集、ifcfg-eth0.bakは削除)。
# cat /etc/sysconfig/network NETWORKING=yes NETWORKING_IPV6=no HOSTNAME=drbd_second ← ホスト名 # rm /etc/sysconfig/network-scripts/ifcfg-eth0.bak # cat /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 BOOTPROTO=none ← 固定IPアドレス ONBOOT=yes HWADDR=00:16:36:0f:62:75 IPADDR=192.168.1.97 NETMASK=255.255.255.0 GATEWAY=192.168.1.1 # reboot ← 再起動
あとは、再起動後にDRBDのメタデータの作成とデーモンを起動するだけ。
# drbdadm create-md test md_offset 17174347776 al_offset 17174315008 bm_offset 17173790720 Found ext3 filesystem 104388 kB data area apparently used 16771280 kB left usable by current configuration Even though it looks like this would place the new meta data into unused space, you still need to confirm, as this is only a guess. Do you want to proceed? [need to type 'yes' to confirm] yes ← "yes"を入力 Writing meta data... initializing activity log NOT initialized bitmap New drbd meta data block successfully created. success # /etc/init.d/drbd start Starting DRBD resources: [ d(test) ]. # cat /proc/drbd version: 8.3.7 (api:88/proto:86-91) GIT-hash: ea9e28dbff98e331a62bcbcc63a6135808fe2917 build by root@drbd_prim, 2010-04-05 23:10:16 0: cs:SyncTarget ro:Secondary/Primary ds:Inconsistent/UpToDate C r---- ns:0 nr:3200 dw:3200 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:16768080 [>....................] sync'ed: 0.1% (16372/16376)M finish: 11:38:40 speed: 352 (352) K/sec #
勝手に同期が始まります。
2010-03-25
■Hadoopのインストール
前提条件
以下の環境で動作させています。
また、Hadoopのマスターノードのホスト名を「hmaster」、スレーブを「hslave1, hslave2, ...」とします。
ゲストOSのインストール(CentOS)
KVM上で動作するCentOSのイメージを一つ作成します。各ノードはこのイメージのコピーを使用します。
再起動後の最初の設定では、FirewallとSELinuxを無効にしておきます。
その他のCentOSのインストール自体の説明はここでは省略しますので、あしからず。
ログイン後、ホスト側から扱い易いように、コンソールの設定をしておきます。/etc/inittabに、"co:2345:respawn:/sbin/agetty ttyS0 115200 vt100-nav"を追加しておけば良いです。これでホスト側から「virsh console <ホスト名>」でアクセスできます。
共通項目のインストール・設定
SunのJavaをインストール
ここからJDK(現在はJDK 6 Update 18)をダウンロードし、インストールします。(インストールの詳細は略)
Hadoopのインストール
yumリポジトリを登録して、「hadoop-0.20」をインストールします。(rootで作業します。)
# cd /etc/yum.repos.d/ # wget http://archive.cloudera.com/redhat/cdh/cloudera-testing.repo # yum -y install hadoop-0.20
この後、仮想マシンを終了させます。
マスターノードの設定
マスターノード用の仮想マシンの準備
まずホスト上で、作成した仮想マシンイメージをコピーしてマスターノード用の仮想マシンイメージを作成します。次のコマンドを使います。
virt-clone -o 元のゲスト名 -n 新しいゲスト名 -f ディスクイメージ名
例えば、
$ sudo virt-clone -o centos54 -n hmaster -f /var/lib/libvirt/images/hmaster.img
とします。
その後、マスターノードの仮想マシンを起動し、コンソールで接続します。
$ virsh start hmaster $ sudo virsh console hmaster
一般ユーザでログインした後、suコマンドでrootにスイッチします。
ネットワークの設定
まず、ネットワーク関連を設定します。
仮想マシンをコピーした際に作成される ifcfg-eth0.bak は削除し、ifcfg-eth0 に、ダイナミックDNSにホスト名を登録するための設定をします。
# rm /etc/sysconfig/network-scripts/ifcfg-eth0.bak
# echo 'DHCP_HOSTNAME=hmaster' >> /etc/sysconfig/network-scripts/ifcfg-eth0
また、/etc/sysconfig/network に書かれたホスト名を編集します。
# cat /etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=hmaster
#
あと、/etc/hosts 内の127.0.0.1は、「localhost.localdomain localhost」だけになるようにします。
(インストール時にホスト名を設定したりすると、ここに追記されたりするので)
# /etc/init.d/network restart
Hadoopの設定
ここでは、/etc/hadoop/conf/ 以下のファイルを編集します。
- core-site.xml
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://hmaster:8020</value>
</property>
</configuration>
<configuration> <property> <name>dfs.replication</name> <value>3</value> ← スレーブノードの数(ここでは3つ) </property> </configuration>
- mapred-site.xml
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>hmaster:8021</value>
</property>
</configuration>
- masters
hmaster
- slaves
hslave1 hslave2 hslave3
次にHDFSのフォーマットを行います。
# sudo -u hadoop hadoop-0.20 namenode -format
最後に、起動時にHadoopのデーモンを開始出来るように設定します。
# chkconfig --add hadoop-0.20-namenode # chkconfig --add hadoop-0.20-jobtracker
NFSの設定
/etc/hadoop/ 以下をスレーブと共有できるよう、NFSの設定を行います。
まず、/etc/exports を編集します。
/etc/hadoop hslave*(rw,no_all_squash,sync)
その後、NFSデーモンを起動し、起動時に開始できるようにします。
# /etc/init.d/nfs start # chkconfig nfs on
ここまで完了したら再起動し、スレーブの設定に進みましょう。
スレーブノードの設定
ここではhslave1のスレーブノードについて説明します。他のhslave2, hslave3は、ホスト名を変更して作業してください。
$ sudo virt-clone -o centos54 -n hslave1 -f /var/lib/libvirt/images/hslave1.img
その後、スレーブノードの仮想マシンを起動し、コンソールで接続します。
$ virsh start hslave1 $ sudo virsh console hslave1
一般ユーザでログインした後、suコマンドでrootにスイッチし、マスターノードと同じようにネットワーク関連を設定します。
# rm /etc/sysconfig/network-scripts/ifcfg-eth0.bak
# echo 'DHCP_HOSTNAME=hslave1' >> /etc/sysconfig/network-scripts/ifcfg-eth0
/etc/sysconfig/network に書かれたホスト名を修正します。
# cat /etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=hslave1
#
# /etc/init.d/network restart
NFSの設定
起動時にマスターノードの/etc/hadoopをスレーブの/etc/hadoopにマウントするようにします。
# rm -rf /etc/hadoop/* # echo 'hmaster:/etc/hadoop /etc/hadoop nfs defaults 0 0' >> /etc/fstab
Hadoopのデーモンの設定
起動時にHadoopのデーモンを開始出来るように設定します。
# chkconfig --add hadoop-0.20-datanode # chkconfig --add hadoop-0.20-tasktracker
そしてリブートし、他のマスターノードについても同じ設定を行います。
確認
スレーブノードの追加
2009-11-12 はてぶを初めてからちょうど4年
■[セキュアOS]TOMOYO Linux 1.7.1がリリース
昨日、TOMOYO Linux 1.7.1がリリースされました。
このTOMOYO LinuxがOSSとしてリリースされたのが4年前の11月11日です。
私がこのはてぶを開始したのがその次の日の11月12日で、その日にTOMOYO Linuxに触れています。その時はここまでTOMOYO Linuxに関わるとは思ってもいませんでしたね。
■[セキュアOS]TOMOYO GUI on Mandriva Linux 2010
TOMOYO Linuxがつぶやき始めましたが、その中に「Mandriva Linux 2010 is Finally Out with TOMOYO Linux」と言うのがありました。
「ふ〜ん。」と思ってそこにあるリンク先を見てみると、
Mandriva Control Center also bring improvements in tools: new netprofile management tool, gui for Tomoyo security framework, and parental control.
とあるではないですか。「以前作っていたEclipseベースのGUIかな?」と思ってもう少し調べてみるとこんな記事が見つかり、どうもEclipseベースではないようです。
ということで、Mandriva Linux 2010を動かして試してみます。
Mandriva Linux 2010のインストール
公式サイトから、インストールDVDのイメージをダウンロードします。
後は略。
TOMOYO GUIのインストール
デフォルトでは、TOMOYO GUIはインストールされていませんので、インストールから始めます。
まずメインメニューから「ツール」→「システムツール」→「コンピュータを設定」を選択(もしくはパネルの「コンピュータを設定」アイコンをクリック)してコントロールセンターを開きます。
そして「RPMをインストール/アンインストール」を選ぶと「ソフトウェアの管理」が開きます。
左上のプルダウンメニューが「GUIのあるパッケージ」となっていれば、「すべて」に変更してやります。
右の「検索対象」に「tomoyo-gui」と入力して検索すると、パッケージが表示されます。
後は、パッケージを選択して「適用」ボタンを押すと、関連するパッケージも一緒にインストールされます。
インストール完了後は、一旦コントロールセンターを終了します。
TOMOYO GUIを使ってみる(初期化)
再度、コントロールセンターを起動し、左のメニューから「セキュリティ」を選択すると、「Configure TOMOYO Linux policy」という項目が追加されているので、それを選択します。
コントロールセンター内でTOMOYO GUIが動作しますが、ポリシーはまだないので、初期化するかどうか聞いてきます。
初期化が完了すると、再起動するように促されるので、再起動してやります。
TOMOYO GUIを使ってみる(ポリシー設定)
ふたたびTOMOYO GUIを起動すると、こんどはドメインが出来上がっています。
また、例外ポリシーも出来上がってます。
「Help」のタグを開いてみると、誇らしげなTOMOYOペンギンがあらわれます。いいですね〜。
「All domains」のタグでドメインを選択(ShiftキーやCtrlキーを使って複数選択も可能)すると、各ドメインの詳細が表示されます。
右端にはドメインのプロファイルがプルダウンメニューで選択できるようになっています。
以下は、いくつかをLearningモードにして再起動した結果で、Disabledモード以外のドメインが強調表示され、学習した結果が下に表示されます。(強調されているドメインは、「Active domains」タブで見ることが出きるようになります)
学習した結果にマウスを持っていくとアンダーラインが表示され、
そこをクリックすると、「編集」か「削除」を選べます。
「編集」を選ぶと編集画面が表示され、そこで修正することができます。
使ってみて
GUIでTOMOYO Linuxのポリシー編集作業が行えるのはいいですね。ccs-editpolicyは便利ですが、初めての人にはGUIであるというだけで抵抗感は少なくなると思います。
ただ、ポリシーの修正や削除はできても、追加ができないのはちょっとやりにくいですね。
まあ、そのうち改善されるんでしょうが。

















