RAID 構成のサーバで Linux を大量インストールする時の簡略化検討

ちょうど年末年始を跨いでサーバのリース契約満了にともないサーバの入れ換え作業なんてのをやっています。ここ最近も相変わらずムーアの法則通りマシンの処理速度は2年で倍になっています。近い将来にトランジスタが原子レベルにまで小さくなるそうです。いやはや凄いですね。さて、ウチの会社の場合は3年のリース契約でマシンをそろえることが多いのですが、単に固定資産を持たないための会社の方針って側面以外にもハードの進歩の速度にもあっているかなぁ〜と感じています。

で本題。今回導入した新マシンは Dell 1950 です。

img01.jpg

毎度毎度リースの更改にあわせてサーバの再構築をするわけなのですが、この作業が猛烈に面倒です。当たり前だけど構築以外にも動作のテストとかあるんだけど、これまた面倒。台数が増えるほど面倒。というわけで、いろいろなブログでも紹介されているとおり実際にはインストールは1台だけ行って動作テストも全部クリアした完全状態のディスクをコピーして量産するってのが常套手段です。

複製方法にもいろいろ手法があるわけですが、良く紹介されているのは ATA 方式の DISK × 1台のマシンがたくさんあって、1台作ったら他のサーバの DISK を ATA のスレーブにつなげて hdd のイメージコピーってのが多いのですが、如何せんこの手法は HW-RAID マシンには使えません。というのもサーバ向けの HW-RAID の場合は RAID 情報は RAID コントローラが管理していて、いったん DISK を抜くとそれはもう別物扱いなんです。もう一度指しても元のディスクとは認識されないわけなんですよね。

ちなみにはまりまくった RAID コントローラはこいつです。

オンボードPerc5i (SAS対応デュアルチャネルRAIDコントローラ 256MBキャッシュ搭載)
- スポンサーリンク -

そのことを知らなかった僕は初めこう考えていました。構築しているのは HW-RAID1 のマシン構成のサーバ群です。

  1. まず1台を完全状態にインストールする
  2. DISK を片方抜いて新しいマシンで RAID1 の再構築機能でコピーを生成をマシンの台数分繰り返す

ですが、いきなり2で引っかかりました。前述したとおり RAID コントローラ側に DISK 情報を持っているので、そもそも抜いた時点で新規 DISK と同じ扱いなわけでして、それをどのマシンに付け替えたところで意味がないという罠・・・orz

結局どうやってインストールをしたかというと、この時点ではまだ最良ではない手法でインストールをしてしまいました。個別にインストールするミドルウェア群は /usr/local 配下に prefix を設定してアプリをコンパイルしてるってのが前提となります。

  1. 2台目以降も RHEL4 をインストールして up2date で最新状態にする
  2. /etc /var /usr をごっそり rsync でコピーする
  3. マシン再起動後にネットワーク周りだけ再設定する

こりゃだめだ。2台目を作るのに3時間かかりました。反面教師です。これでは。

後になってわかったことですが結局こうすれば良かったのです。もう全部気合いでインストールし終わった後なので VMware 上での検証になってしまうわけですが、再リース契約した古いマシンはこの手法で開発環境を整えようと思っています。

RAID 構成のサーバで Linux を大量インストールする時の簡略化

この方法は初めにこれだけのものを準備する必要があります。ネットワークは 192.168.1.0/24 のセグメントで書きました。

  • 完全状態にまでインストール、設定完了済みの1台目のマシン(192.168.1.1)
  • サーバの DISK 容量以上の USB HDD
  • knoppix の CD(最新版とかがいいんじゃない)

複製手順は、

  1. USB HDD を1台目に接続して ext3 なりで初期化してマウントする。例えば /tmp2 としてマウントするならば以下のコマンドのようになる。ちなみに USB HDD は SCSI として認識するので、/dev/sda が RAID DISK として認識しているので、/dev/sdb が USB HDD となる。
    ※ちなみに購入した DELL 1950 は購入時に SATA or SAS を選択するようになっていて SCSI を選択したら SATA のインタフェースが何処にもみあたらないので USB HDD を利用すると便利なわけです。
    fdisk   /dev/sdb
    mkfs.ext3   /dev/sdb1   -L   /tmp2
    mkdir   /tmp2
    mount   -t   ext3   /dev/sdb1    /tmp2
    
  2. DISK のイメージを /tmp2 へ保存する。今回は RAID の DISK なので /dev/sda が対象。 ATA なら /dev/hda になる。
    dd if=/dev/sda   of=/tmp2/sda.img
    
  3. 1台目のマシンで nfs-server を起動して作成したイメージ /tmp2/sda.img を公開する。
    echo '/tmp2   192.168.1.0/24   (ro)
    '   >   /etc/exports
    exportfs   -a
    /etc/init.d/nfs   restart
    
  4. 2台目以降のマシンを knoppix を使って起動して1台目とネットワーク接続可能な状態にする。ストレートケーブルで繋いでも良いし、HUB 経由でクロスケーブルで繋いでも良い。
  5. 2台目は nfs-licnet として /tmp2 を mount して sda.img を読み取り可能な状態にする。
    mkdir   /mnt/tmp2
    mount   -t   nfs   192.168.1.1:/tmp2   /mnt/tmp2
    
  6. /mnt/tmp2/sda.img を /dev/sda へ展開する
    cat /mnt/tmp2/sda.img   |   dd of=/dev/sda
    
  7. 展開処理が完了したら knoppix CD を抜いて2台目を再起動。起動時にハードウェアの変更うんぬんと聞かれますが適宜処理を選択する。基本何も変更しないでも構わない。再起動後は MAC アドレスとか1台目のままになっているのでネットワークが起動エラーとなっているはず。適宜ネットワーク周りの再設定を行えば複製の完了です。
    vm16.jpg

    vm17.jpg
  8. 大体30分程度で何も考えなくても作業が完了するかと思います。


という手順を VMware では検証済みです。次回こそは賢く量産したいと考えています。

- スポンサーリンク -

関連する記事&スポンサーリンク