戻る
Fedora7で強力堅牢サーバー構築実験
FedoraでソフトウェアRaid5を作った
VirtualBoxのゲストOSにWindowsXPを載せた
beryl managerをのっけた
2007/12/13  

(動画)Linux上のVirtualBoxにWindowsXPが実行されているのをberyl-managerの一部として動きを確認できます。
(注意)動画ファイルは大きいのでダウンロードしてからご覧ください

(40秒)1.1MB

(48秒)1.3MB

シリコンディスクより早い(?)

(8分38秒)9.5MB
VirtualBoxの写真説明のサイトへのジャンプはここをクリック

ハードウェアの説明
堅牢で高性能で遊び心と実験の出来るLinuxマシンを作ってみる事が今回のテーマです。
CPU:Core2Quad(2.4G)
Memory:4GB
HDD:320GB(Linux立上げ用)
HDD:500GB×5(RAID5用)
Mother:BLITZ Formula(Asus)
Graphic:GeForce 8400GS 256MB DDR2 PCI-Express (GIGABYTE)
光学ドライブ:DVD/RW
電源:750W
CASE:サーバー用
以上の構成で約24万円
このマザーはBIOS段階でRAID5をサポートしてい るという優れものなのですが、Linuxには対応して いないようでした。最もCPU:をCore2Quadを使用する ことを最初から決めていたので、LinuxのRaidに ついてはソフトウェアレイドを実験したかった ので、BIOSでのRaidは考慮していませんでした。 写真を見てもらえばわかるがDVD-RWの場所にDVD ドライブが格納されていて、ここからFedora7の DVDでインストールをします。HDDの場所に320Gの HDDを入れていてここにFedora7をインストール されます。
①〜⑤までHDDドライブ装置はSATA-500GB(Seagate)が格納されているこれはソフトレイド 用。
メモリーは4スロット全部を使かいました。1スロット あたり1GBなので4GBのメモリーです。
電源は定評のあるメーカー製です。24時間365日利用を前提 にしているので、電源だけは良いものが必要ですね 。だから、特に自作でサーバーを作ろうと思っ ている方は電源の足回りはしっかりしておくべ きだと思います。もう一つ、UPSも必須ですね。
Fedora7のインストールはOSのダウンロードからだろう。
どの様な媒体からインストールするかは個人の自由です。私がやった方法をこちらではとりあげます。まず、FedoraダウンロードサイトからDVDのisoタイプをダウンロードしました。それをDVDに焼き付けました。ちなみに焼付けに使ったソフトはフリーソフトのDeepBurnerのfreeを利用しました。このソフトはCDやDVDを焼くのに簡単ですし、起動時にISOかどうかを聞いてくるので迷うことはありません。勿論、CD用でもいいのですが、枚数が5枚も必要なので、DVDの方が簡単ですね。すごい時代になったものです。私が最初にLinuxとつきあってから14年たちました。当時は32MBのメインメモリーでCPUは486の33でした。
OSは以下のサイトからダウンロードできます。
http://fedoraproject.org/get-fedora

なお、インストールの方法については広く多くのサイトで開設がありますので参照してください。私はその中でもFedoraで自宅サーバー構築が優れていると思いますが、いずれのサイトにおいてもWindows系よりは多くに知識が必要なのは当然です。特に最近のユーザーはコマンドラインの操作が出来ない人も多いとの事です。そんな方には正直難しいでしょうね。ただ、個人的にもっとも簡単なLinuxのディストリビューションはUbuntuであろうと思います。
動画の中でDVD再生にはvlcを利用した。サイトよりディストリビューションに合ったRPMをダウンロードしてインストールすればOKです。
ソフトウェアRAID5を作る   (ここでRaid5を作り上げたファイルシステムを確認できます。)
さて、Fedora7のインストールが終って、今度はSATA-500GのHDDをマザーにつなぎます。電源もつないでコンピューターを起動させる。 BIOS段階で立上げディスク以外に5台のHDDを確認するといいでしょう。この確認の後、Fedora7が立ち上がりますね。今回はFedora7が起動した後の操作となります。
ログイン後に[端末]を開きましょう。[端末]を開くには上のパネルの[アプリケーション]→[システムツール]→[端末]の順で開きます。こんな簡単な説明は少なくともこの記事を読む方には不要でしょうね。

fdiskコマンドの操作
# fdisk /dev/sdb

コマンド (m でヘルプ): n
コマンドアクション
   e  拡張
   p  基本領域 (1-4)
p  ←基本領域の領域番号1を選択します。
領域番号 (1-4): 1
最初 シリンダ (1-60801, default 1):  ←シリンダは最初から最後までを指定します。
Using default value 1
終点 シリンダ または +サイズ または +サイズM または +サイズK (1-60801, default 60801):
Using default value 60801

コマンド (m でヘルプ): t
Selected partition 1
16進数コード (L コマンドでコードリスト表示): fd
領域のシステムタイプを 1 から fd (Linux raid 自動検出) に変更しました

コマンド (m でヘルプ): w
領域テーブルは交換されました!

ioctl() を呼び出して領域テーブルを再読込みします。
ディスクを同期させます。

(注意)fdiskのコマンド操作はRAID対象HDDすべてについて行います。私の場合は sdb sdc sdd sde sdf について実行しました。
Raid化
# mdadm -C /dev/md0 -l5 -n5 -f /dev/sd[bcdef]1
mdadmコマンドについては mdadm --helpで調べてください。私は/dev以下のsdb1,sdc1,sdd1,sde1,sdf1を/dev/md0というraid化したデバイスとして登録しましたので上記のようなパラメーターで実行しました。
mdadm - Linux ソフトウェア RAID md デバイスの管理>
mdadm日本語マニュアル
このコマンドの実行はとても長い時間がかかります。CPUの性能やメモリー搭載にもよりますが、場合によっては24時間以上かかる場合もあります。私の場合は先に紹介したシステムなので、140分ぐらいでした。ただ、HDDが4台以下ですともっと少ない時間でしょう。

尚、長時間のため、現在進行状態を確認するためには[端末]内で以下のようにして確認することが出来ます。私は何度もこのコマンドで確認をしました。
# cat /proc/mdstat
ファイルシステムの構築
# mkfs -t ext3 /dev/md0

デバイスのマウント マウント用ディレクトリの作成(私は/dataとしました。)
# mkdir /data
マウント
# mount /dev/md0 /data

自動マウント
# echo 'DVICE /dev/sd[bcdef]1' > /etc/mdadm.conf
# mdadm -Ds >> /etc/mdadm.conf
設定ファイルに追加 # echo '/dev/md0 /data ext3 defaults 0 2' >> /etc/fstab

異常時のメール通知
通知すべきメールアドレスがadministrator@xxxxx.xx.xxの場合
# echo 'MAILDADDR administrator@xxxxx.xx.xx' >> /etc/mdadm.conf
リビルド
以上でソフトウェアRAID5の設定を終りますが、問題は実際にHDDに異常が発生し、HDDを交換しなければならなくなった事を想定しての復旧についてはどうするか?ということですね。sdf1が壊れたものとしてリビルドを行ってみます。しかし、このリビルド作業はRAID構築と同じだけの時間がかかることになります。抜粋メモだけですが、以下の工程で行いました。
実験的にsdf1を不良としてみます。
# mdadm /dev/md0 -f /dev/sdf1
mdadm: set /dev/sdf1 faulty in /dev/md0

RAIDの状態の確認をします。
# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4] [multipath] [faulty]
md0 : active raid5 sdb1[0] sdf1[4](F) sde1[3] sdd1[2] sdc1[1]
      1953535744 blocks level 5, 64k chunk, algorithm 2 [5/4] [U_UUU]

unused devices:
sdf1を切り離す
# mdadm /dev/md0 -r /dev/sdf1
mdadm: hot removed /dev/sdf1

sdf1を追加(リビルド)
# mdadm /dev/md0 -a /dev/sdf1
mdadm: hot added /dev/sdf1

RAIDの状態の確認
# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md0 : active raid5 sdb1[0] sdf1[4] sde1[3] sdd1[2] sdc1[1]
      1953535744 blocks level 5, 64k chunk, algorithm 2 [5/5] [UUUUU]

unused devices:
RAIDの解除
コマンドを調べれば簡単な事なのですが、とりあえずメモということで
# umount /data

# mdadm -S /dev/md0
BOOT用のHDDを交換した場合(2007/12/26加筆)
今回の仕組みでは立ち上げ用のHDDとデーター用(Raid5)とを分離しています。立ち上げ用(BOOT用)について、交換する必要があった場合はどうするのかという問題があります。データーは大丈夫でもBoot用HDDを交換した場合に対応できなければ無意味です。データはRaidでカバーされていても、システムは無防備なのですから。
まず、Raid化されているデーターHDDをハード的無効(電を切るか、ケーブルを取り外しておく)にしておきます。この場合、HDDのマザーへの取り付け順番は当然のことながら変更できません。
次に新規のHDDにLinuxのシステムをインストールします。インストールが終了したら、いつものようにyum updateなどで、システムのアップデートをしておきます。
電源を落として、Raid用のHDDを結線、電源の供給でBIOS段階で完全に認識しておくことと、当然、BIOSで最初のHDDの接続順を維持していることを確認してください。
新しい、boot用HDDにRaidアレーを認識させます。上記のシステムの場合は
# mdadm -C /dev/md0 -l5 -n5 -f /dev/sd[bcdef]1
この実行にはRaid化の項目で述べましたように非常に長時間となります。確認には以下のコマンドを打ちながら行ってください。
# cat /proc/mdstat

当然Raid化されていますから、ファイルシステムを作りなおすことはデータを削除することになりますので、してはいけません。ここだけがRaid化とはことなっているだけです。
Boot用HDDにRaid用のマウントを作成します。前記の例では/dataにマウントすることにいたします。
デバイスのマウント マウント用ディレクトリの作成
# mkdir /data
マウント
# mount /dev/md0 /data
自動マウント
# echo 'DVICE /dev/sd[bcdef]1' > /etc/mdadm.conf
# mdadm -Ds >> /etc/mdadm.conf
設定ファイルに追加 # echo '/dev/md0 /data ext3 defaults 0 2' >> /etc/fstab
異常時のメール通知
通知すべきメールアドレスがadministrator@xxxxx.xx.xxの場合
# echo 'MAILDADDR administrator@xxxxx.xx.xx' >> /etc/mdadm.conf
VirtualBoxのダウンロードとインストール
インストールしたPC上に仮想的なPCを作成し、別のOSを実行できるソフト。個人・学術利用または評価目的に限り無償で使用可能。仮想PC上で、本ソフトを実行しているPCに接続されたUSB機器を利用できるのが特長で、そのほかネットワークやサウンド機能も標準で利用できる。仮想PCの作成はウィザード形式で行え、各種WindowsやLinux、FreeBSDなどインストールしたいOSを選択すると、仮想PCに割り当てるメモリやHDDのサイズを自動設定してくれる。ユーザーが直接サイズを指定することも可能だ。そのほか本ソフト独自の機能として、LAN上などの別PCから、Windows標準の「リモート デスクトップ接続」を利用して仮想PCへ直接接続できる。 もちろんSourceは掲載されているので、コンパイルすればたいていのUnix系には搭載可能だろう。 とは言え、Sourceからコンパイルするには実際多くのライブラリやコンパイラをインストールしなければ出来ないだろう。
ところがありがたいことに多くのメジャーなLinuxデストリビューションにはバイナリーレベルで対応している もちろん、Fedora7についてもOKだ。
# yum -y install bridge-utils libSDL-1.2.so.0 libqt-mt.so.3 compat-libstdc++-33
以下のサイトより自分のシステムに合ったVertualBoxを選択してください。
http://www.virtualbox.org/wiki/Downloads
私はrpmになっていうるVirtualBox-1.5.2_25433_fedora7-1.i586.rpmをダウンロードしてrpmのコマンドで以下のように解凍インストールしました。
# rpm -ihv VirtualBox-1.5.2_25433_fedora7-1.i586.rpm
VirtualBoxの設定
写真説明のサイトへのジャンプはここをクリック

設定ダイアログを表示するには端末からVirtualGBoxと入力してエンターを入れればポップアップしてきます。rpmでインストールしてあれば、もう一つの方法としては上のパネルから[アプリケーション]→[システム]で探せます。

一般
まず、[新規]としてguest osを作ります。ここではguest osを如何なるものにするかとか、どれくらいのメモリーやハードディスク容量を必要とするか、その名前をなんいするかなどを決定して登録します。
縦のメニューから一般を選択し、設定します。
一般では基本の設定だけで十分であろうと思います。 基本タグでは以下の項目を決定します。
名前:このGuestOSの名前を決めます。この名前は設定後起動するときにメニューに現れるので解り易い名前がいいと思います。私はご覧のようにVirtual XPという名前にしました。
OSタイプはプルダウンメニューからインストールするOSを選択するだけで言い訳です。今回はWindowsXPをインストールするので画像のようにWindows XPを選択しました。
メインメモリのサイズはこのgustOSのメインメモリーサイズを設定します。私の機械は4GBのメモリーを搭載していますので、この際1GBを割り振ってみました。XPでこのパフォーマンスを持っているなら、512MBでも十分であろうと思います。
ビデオメモリのサイズについてはnvidiaのPCI-Expressの256MBをつんでいますので64MBを割り当てました。本体のメモリーも十分ありますので問題ありません。

高度タグ
この機種でフロッピーCD/DVD-ROM,ハードディスク,ネットワーク共にチェックボックスにチェックを入れました。フロッピーはUSBようのものなので、チェックがいいのかどうかわからないのですが、不要ならチェックしないでください。少なくともそれ以外はマークしておくべきでしょう。勿論、その環境が存在することは前提となっているのは当然ですが。
スナップショットは/root/のデフォルトにしてあります。後で述べますが、VirtualBox本体のOSのインストール先は今回の場合はRAID5上にしました。スピードもあがりますし、2テラのハードスペックを利用したいからです。

ハードディスク
プライマリーマスターのみの設定としました。
ソフトウェアRAIDの項目でRaidは/dataにマウントしてあります。そこで、/data/root/.VirtualBoxというフォルダーをつくりました。端末で
# mkdir /data/root
# mkdir /data/root/.VirtualBox
# chmod 666 /data/root/.VirtualBox

その上でプライマリマスターをデフォルトから変更しました。ちなみにデフォルトは/root/.VirtualBoxです。

CD/DVD-ROM
CD/DVDドライブのマウントにチェックをして置きます。つまり、このシステムにはDVDドライブが存在していて、FedoraをこのDVDからインストールしていますので、ホストcd/dvdドライブのプルダウンにドライブカタログが表示されていますので、画像のようにチェックをしました。

ネットワーク
ネットワークについてもFedoraの段階で設定されていればMACアドレスもせっていされていますので画像のようにチェックを入れるだけで設定はOKです。