【3/18〜】Amazon、VMwareが語る『クラウドの未来』 スラッシュドット    はてなブックマーク  Yahoo!ブックマークに登録  印刷
実践Xen

第4回 最短3分! ゲストOSの効率的なインストール


仮想化ソフトウェアの「Xen」を用いてサーバ統合を実践していく手順を具体的に紹介します。第4回は多数のゲストOSを効率的にインストールする手順を紹介します(編集部)

住商情報システム株式会社 中嶋一樹(著)
VA Linux Systems Japan株式会社 高橋浩和(監修)
2008/2/13

 今回は、前回の「仮想マシンの集約密度を決めるサイジング」で紹介した手順に沿って、1台のサーバ上に何台の仮想サーバを集約するかの密度を算出したという前提で、大量の仮想マシンを効率的にインストールする手順をご紹介します。データセンターやサーバルームで大量の仮想マシンを立ち上げる際に有効な方法です。

【関連記事】
http://www.atmarkit.co.jp/flinux/special/xen01/xen01.html
仮想化技術の大本命「Xen」を使ってみよう
〜 インストール & Debian環境構築編 〜 http://www.atmarkit.co.jp/flinux/special/xen02/xen01.html
仮想化技術の大本命「Xen」を使ってみよう
〜 Xen対応カスタムカーネル構築編 〜

インストールとはそもそも何ぞや

 第1回「インストールと環境構築」では、通常のゲストOSのインストール手順について説明しました。しかし、ほぼ同じ構成のゲストOSを一度に大量にインストールしたい場合、1つ1つインストールしていくやり方は効率的とはいえません。実は、仮想マシン環境でこのような作業をする場合、もっと良い手段があるのです。

 そもそもOSのインストールとは、乱暴にいえば、必要なデータ(ファイルシステム)をディスクにコピーし、いくつかの初期パラメータを設定するという作業です。インストールを行うにはインストーラを走らせなければならないように思われがちですが、実際は必要なデータがコピーできさえすれば、それでよいのです。

 この考え方でいくと、ゲストOSのインストールという作業は、非常に簡単に行うことができそうです。ホストOSから見ると、ゲストOSは基本的には単一のファイル、またはボリュームとして認識できます(注1)。

注1:厳密には、複数のファイルまたはボリュームから1つのゲストOSを構成することもできます

 ということは、基となるゲストOSのファイルまたはボリュームさえ用意できれば、あとは単純にそれをコピーするだけで必要なデータをコピーできる、つまりゲストOSをインストールできるということになります。ゲストOSインストールの具体的な手順はいろいろありますが、結局は以下の3ステップに尽きます。

  1. 基となるゲストOSのファイルまたはボリュームをコピーする
  2. ゲストOSの定義ファイルを作成する
  3. ホスト固有の設定情報(IPアドレスなど)を編集する

 それでは、上記の手順を実際にどのように進めるのかを見ていきましょう。

ファイルコピーで効率的に大量インストール

 ここでは基となるゲストOSとして、第1回で作成したデータを利用します。このゲストOSはファイルの形式で、ホストOSのファイルシステム上に/srv/vm01として存在しています。

 まず、手順1の「コピー」を行います。これはOS標準のcpコマンドで行うことができます。

# cp /srv/vm01 /srv/vm02

 ただし、ゲストOSが格納されているファイルは最低でも数Gbytesというサイズに上ることが多いため、コピーを行う際にはディスクスペースが十分に空いていることを確認してください。併せて、コピーの前にvm01を停止しておくことも確認してください。

 コピーが終われば、手順2の「定義ファイルの作成」に移ります。これも基になる定義ファイルをコピーして作成します。

 virt-installやVirtial Machine Managerで作成したゲストOSの定義ファイルは、/etc/xen/ゲストOSの識別名として保存されています。今回でいえば「/etc/xen/vm01」がそれに当たります。これをcpコマンドでコピーし、必要な項目を適宜、新しいゲストOS用に編集します。

# cp /etc/xen/vm01 /etc/xen/vm02
# vi /etc/xen/vm02

  # 新しいゲストOSの識別子を指定(uuidgenツールで取得しておく)
  uuid = "22106df4-5eb3-4382-86b4-0e858053afad"

  # 新しいゲストOSの識別名を指定
  name = "vm02"

  bootloader="/usr/bin/pygrub"
  on_poweroff = "destroy"
  on_reboot = 'restart'
  on_crash = 'restart'
  vcpus = 1
  maxmem = 512
  memory = 512
  vfb = [ ]

  # 新しいゲストOSの実体が格納されているファイルを指定
  disk = [ "tap:aio:/srv/vm02,xvda,w" ]

  # 新しいゲストOSのMACアドレスを指定
  vif = [ "mac=00:16:3e:3b:e7:a9,bridge=xenbr0" ]

 赤い部分は新しいゲストOS用に編集した項目です。

 この中で少し戸惑うのは、uuidとvifのところではないでしょうか。uuidは識別子として汎用的に使われる属性で、uuidgenというツールを用いて簡単に生成できます。

# uuidgen
018e3612-f0aa-4a7d-b4b6-aa276ca9ea60

 こうして実行するたびに、ランダムなuuid値が生成できます。

 次にMACアドレスですが、上位3オクテット(00:16:3e:)はベンダ固有の番号となっており、Xenの場合は一般的に、旧XenSourceの番号を用います。残る下3オクテットはランダムに値を生成して指定すればOKです。独自の割り当てポリシーに従って指定してもいいですし、それが面倒な場合は、以下のスクリプト(注2)を使えばuuidgenと同様の操作感でランダムにMACアドレスを生成できます。

# vi macgen.py

  #! /usr/bin/python
  # macgen.py script generates a MAC address for Xen guests

  import random
  mac = [ 0x00, 0x16, 0x3e,
  random.randint(0x00, 0x7f),
  random.randint(0x00, 0xff),
  random.randint(0x00, 0xff) ]
  print ':'.join(map(lambda x: "%02x" % x, mac))

# ./macgen.py
00:16:3e:14:f2:ab

注2:このスクリプトはまったくランダムにアドレスを生成しますので、結果的にMACアドレスに重複が出る可能性もゼロではありません。実環境で運用される際には、IPアドレス同様にMACアドレスも指定して管理することをお勧めします

 最後に、手順3の「ホスト固有の設定情報の編集」を行います。この作業を最も簡単に行うには、一度このゲストOSを起動し、そのOS上で設定を行うのがよいでしょう。

 ただし、この時点ではまだvm02の設定はvm01と全く同じ内容になっているので、vm01が起動しているとIPアドレスのバッティングが起こってしまいます。そこで、vm01は停止したままで、以下のようにvm02を起動してください。

# xm create /etc/xen/vm02 -c

 vm02が起動したら、設定を行います。ここで重要なのは「ホスト固有の設定情報」としてどのような項目があるかを知っておくことです。以下に最低限の項目を列挙します。

  • ホスト名
  • IPアドレス
  • MACアドレス

これらを設定するには、以下のファイルを編集していきます(この手順では前回までと同様、OSはRed Hat Enterprise Linux 5:RHEL 5を想定しています)。

ホスト名
# vi /etc/hosts
    127.0.0.1 vm02 localhost.localdomain localhost
    ::1 localhost6.localdomain6 localhost6

# vi /etc/sysconfig/network
    NETWORKING=yes
    NETWORKING_IPV6=no
    HOSTNAME=vm02
    GATEWAY=172.20.95.254

IPアドレス
# vi /etc/sysconfig/network-scripts/ifcfg-eth0
    DEVICE=eth0
    IPADDR=172.20.95.102
    HWADDR=00:16:3e:3b:e7:a9
    NETMASK=255.255.248.0
    ONBOOT=yes

 ここまで設定すれば、後は再起動すればゲストOSのインストールは完了です。

 実際には、DHCPを使っている環境ならば、IPアドレスやホスト名は個々に設定する必要はありません。またMACアドレスについては、特段指定しなくとも、ゲストOS定義ファイルの設定情報を基にOSが自動的に認識してくれるので、省略しておいた方が無難です。

 逆に、元のゲストOSをある程度作り込んでいる場合には、上記のほかにも各アプリケーションの設定ファイル中のIPアドレス/ホスト名、クラスタ構成でのノードIDなど、ホスト固有の情報が存在しますので、それを設定する必要があります。

第3回へ
1/3

Index
実践! Xenで実現するサーバ統合(4)
 最短3分! ゲストOSの効率的なインストール
Page 1
インストールとはそもそも何ぞや
ファイルコピーで効率的に大量インストール
  Page 2
インストール自動化をさらに極める
 コラム Xenでの大量インストール方法は?
Sparseファイルによるディスク節約術
 コピー時間の大幅短縮効果
  Page 3
スクリプトで設定ファイルの編集まで自動化
 コラム コピー時間を短縮するほかの方法は?
Sparseファイルのメリットとデメリット

Linux Square全記事インデックス


 Linux Squareフォーラム 仮想化技術関連記事
連載:実践! Xenで実現するサーバ統合
有力な仮想化技術として注目を集めるようになった「Xen」。このXenを活用してサーバ統合を実践していく手順を具体的に紹介します
特集:サーバの仮想化技術とビジネス展開の可能性
jailからUML/VMwareまで
1台のマシンで複数のサーバを動かす「仮想化技術」。VMwareやUMLの登場により、WebサイトだけでなくOS自体を仮想化できるようになった
特集:仮想化技術のアプローチと実装
VMwareから要注目技術Xenまで

1台のサーバで複数の仮想マシンを実行する仮想化技術は、空間コストを引き下げる可能性を持つ。最新の仮想化技術を概観してみよう
特集:仮想OS「User Mode Linux」活用法
技術解説からカーネルカスタマイズまで
Linux上で仮想的なLinuxを動かすUMLの仕組みからインストール/管理方法やIPv6などに対応させるカーネル構築までを徹底解説
特集:仮想化技術の大本命「Xen」を使ってみよう
インストール & Debian環境構築編

高いパフォーマンスで本命の1つとなった仮想マシンモニタ「Xen」。日本語による情報が少ないXenを、実際に動かしてみよう
特集:仮想化技術の大本命「Xen」を使ってみよう
Xen対応カスタムカーネル構築編

Xen環境およびその上で動作する仮想マシン用カーネルを自分で構築しよう。これにより、自由にカスタマイズしたカーネルを利用できる
特集:IPv6、UML、セキュリティ機能の統合
全貌を現したLinuxカーネル2.6[第4章]

今回は、これまでに紹介し切れなかった機能を一気に紹介する。これを読めば、カーネル2.6の正式リリースが楽しみになるだろう
Linux Squareプロダクトレビュー VMware Workstation 4
PC/AT互換機エミュレータとして不動の地位を築いたVMware。その新バージョンがリリースされた。新機能を早速試してみよう
古くて新しい「サーバ仮想化技術」の行方
サーバ仮想化を実現するための技術がソフトウェア、ハードウェアの両面で出そろってきた。ハイパーバイザーのさらなる高速化に向けた動きを紹介する
Linux Squareフォーラム全記事インデックス

ホワイトペーパーTechTargetジャパン

Linux Square フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

スキルアップ/キャリアアップ(JOB@IT)



- PR -
- PR -

お勧め求人情報

キャリアアップ 〜JOB@IT
@IT Special -PR-
  上司や部下、部署内メンバーとの情報共有
を“ガラッ”と変えるコラボツールとは?

New!
  おばかアプリ選手権、第4弾開催中!!
ムダにカッコよくてくだらない作品求ム!

  社内ファイルサーバを“クラウド”に統合
VPN直結「クラウド型ストレージ」を紹介

  Twitterのアカウントはなぜ突破された?
メールによる新手の攻撃手法とその対策

  もう仮想化のお試しフェイズは終わりだ!
Hyper-V 2.0が基幹システムも仮想化

  美人!? まあまあ? 気になる いやし系!!
PV急増で「美人時計」がとった手段とは?

  クライアント企業から求められる人材
⇒IT技術と経営戦略を併せ持つ「戦略家」

  .NET編集長が実践する「技術情報検索術」
サンプル・コードを簡単に探す“技”は?

  業務効率と情報セキュリティ対策を両立!
手間なく確実に機密情報を守る方法とは?

  直属上司が海外にいるのエンジニアに見る
【実例】場所に捉われないワークスタイル

  進化を続ける富士通ストレージETERNUS DX
製品開発者の自信を裏付けるものとは何か

  運用管理の課題を“2つの観点”から分析
ユーザー満足度の高い「仮想環境」とは?

  【CTC事例】約30の基幹システムを統合!
膨大なバッジジョブを制御した方法は?

  仮想化すればコストは削減できるか?
仮想化に必要な「3つの視点」を解説する

  その数、なんと400台以上! グループ内
サーバの「統合管理」によるメリットは?