Jan 022009
 

CentOS 5.2のXen環境にDomain-U Debian(sid)を構築してみた。
ディスクはイメージファイルではなく、論理ボリューム区画を割り当てている。
論理ボリューム区画にしてみたのは、将来ディスク領域が不足したときDomain0で割り当てを増やし(lvextend)、DomainUでファイルシステムをオンラインリサイズ(ext2online)できないものかと考えたから。

論理ボリュームの割り当てとフォーマット

vg00はCentOSセットアップ時に作成したボリュームグループ。

# lvcreate -L 96M -n debian_boot vg00
# lvcreate -L 1024M -n debian_swap vg00
# lvcreate -L 8192M -n debian_root vg00
# mke2fs -j /dev/vg00/debian_boot
# mke2fs -j /dev/vg00/debian_root
# mkswap /dev/vg00/debian_swap

論理ボリュームをマウント

# mkdir /mnt/debian
# mount /dev/vg00/debian_root /mnt/debian
# mkdir /mnt/debian/boot
# mount /dev/vg00/debian_boot /mnt/debian/boot

debootstrapコマンドの準備

debootstrapコマンドをインストール。rpmパッケージ管理外のファイルが/usr/binや/usr/lib直下に配置されるが良しとする。

# cd /usr/local/src
# wget -N http://ftp.debian.org/debian/pool/main/d/debootstrap/debootstrap_0.3.3.2_all.deb
# yum -y install binutils
# ar -x debootstrap_0.3.3.2_all.deb
# cd /
# zcat /usr/local/src/data.tar.gz | tar xvp

Debianインストール

debootstrapコマンドで論理ボリューム上にDebianをインストール。

# /usr/sbin/debootstrap --arch amd64 sid /mnt/debian http://ftp.jp.debian.org/debian

セットアップ

セットアップのためインストールしたDebianにchrootする。

# chroot /mnt/debian
# mount -t proc proc /proc
  • /etc/fstab作成
    # /etc/fstab: static file system information.
    #
    /dev/sda1    /boot   ext3    ro,nosuid,nodev         0 2
    /dev/sda2    /       ext3    defaults                0 1
    /dev/sda3    none    swap    sw                      0 0
    proc         /proc   proc    defaults                0 0
    
  • kernelイメージインストール
    # aptitude install linux-image-xen-amd64
    
  • /etc/inittabにXen用コンソール定義追加
    以下を追加。ラベルは重複しないものを適当に割り当てた。

    h0:12345:respawn:/sbin/getty 38400 hvc0
    x0:12345:respawn:/sbin/getty 38400 xvc0
    

    ちなみにDebian sidの場合、hvcもxvcも/etc/securettyには定義済み(以下、抜粋)。

    # Standard hypervisor virtual console
    hvc0
    
    # Oldstyle Xen console
    xvc0
    
  • /boot/grub/grub.conf作成
    boot=/dev/sda
    default=0
    timeout=5
    #splashimage=(hd0,0)/grub/splash.xpm.gz
    hiddenmenu
    title Debian (2.6.26-1-xen-amd64)
            root (hd0,0)
            kernel /vmlinuz-2.6.26-1-xen-amd64 ro root=/dev/sda2 xencons=xvc console=xvc0
            initrd /initrd.img-2.6.26-1-xen-amd64
    

    kernelパラメータにXen用コンソール定義、xvcを追加している。

  • /boot/grub/menu.lst作成(grub.confにシンボリックリンク)
    # cd /boot/grub
    # ln -s grub.conf menu.lst
    
  • /boot/grub/device.map作成
    (hd0)   /dev/sda
    
  • DomainU設定ファイル作成

    /etc/xen/debianで作成

    name = "debian"
    uuid = "4917533f-38ac-4650-a342-dd468650b2d3"
    maxmem = 384
    memory = 384
    vcpus = 1
    bootloader = "/usr/bin/pygrub"
    disk = [ 'phy:vg00/debian_boot,sda1,w',
             'phy:vg00/debian_root,sda2,w',
             'phy:vg00/debian_swap,sda3,w' ]
    vif = [ "mac=00:16:3e:27:ea:aa,bridge=xenbr0" ]
    on_poweroff = 'destroy'
    on_reboot   = 'restart'
    on_crash    = 'restart'
    

    uuidはuuidgenを使って生成。
    vifのMACアドレスは『19.22. MAC アドレス生成の為のスクリプト作成』に掲載されているmacgen.pyスクリプトを用意して生成。

    最初の目的であるファイルシステム拡張がおこなえるかどうかは後日。

    参考サイト

    Sorry, the comment form is closed at this time.