• LVMパーティションを拡張する。

    自宅のXen仮想サーバー機でLVMパーティションのキャパシティがオーバーしました。
    このままでは仕事にならないので、LVMパーティションの容量を拡張します。

    LVMパーティションを拡張する。

    ・現在のサイズに8GBを追加で割り当てる。
    
    # lvextend -L+8G /dev/VolGroup00/LogVol02
    

    ・パーティションを50GBに拡張する。

    # lvextend -L 50G /dev/VolGroup00/LogVol02
    

    ext2/ext3 のファイルシステムをチェックする

    # e2fsck -f /dev/VolGroup00/LogVol02
    

    ext2 / ext3 ファイルシステムをリサイズする

    # resize2fs /dev/VolGroup00/LogVol02
    

    *)同時にフォーマットもされる。


  • Xen – ホストOSに割り当てるメモリを設定する方法

    XenのホストOS (domain0) に割り当てるメモリを設定する方法。

    OS起動時にホストOSのメモリを設定する方法。

    ・/boot/grub/grub.conf
    # grub.conf generated by anaconda
    # Note that you do not have to rerun grub after making changes to this file
    # NOTICE:  You have a /boot partition.  This means that
    #          all kernel and initrd paths are relative to /boot/, eg.
    #          root (hd0,0)
    #          kernel /vmlinuz-version ro root=/dev/VolGroup00/LogVol00
    #          initrd /initrd-version.img
    #boot=/dev/sda
    default=0
    timeout=5
    splashimage=(hd0,0)/grub/splash.xpm.gz
    hiddenmenu
    title CentOS (2.6.18-164.15.1.el5xen)
        root (hd0,0)
        kernel /xen.gz-2.6.18-164.15.1.el5
        module /vmlinuz-2.6.18-164.15.1.el5xen ro root=/dev/VolGroup00/LogVol00
        module /initrd-2.6.18-164.15.1.el5xen.img
    title CentOS (2.6.18-164.el5xen)
        root (hd0,0)
        kernel /xen.gz-2.6.18-164.el5
        module /vmlinuz-2.6.18-164.el5xen ro root=/dev/VolGroup00/LogVol00
        module /initrd-2.6.18-164.el5xen.img
    

    ↓ 割り当てメモリを指定

    # grub.conf generated by anaconda
    # Note that you do not have to rerun grub after making changes to this file
    # NOTICE:  You have a /boot partition.  This means that
    #          all kernel and initrd paths are relative to /boot/, eg.
    #          root (hd0,0)
    #          kernel /vmlinuz-version ro root=/dev/VolGroup00/LogVol00
    #          initrd /initrd-version.img
    #boot=/dev/sda
    default=0
    timeout=5
    splashimage=(hd0,0)/grub/splash.xpm.gz
    hiddenmenu
    title CentOS (2.6.18-164.15.1.el5xen)
        root (hd0,0)
        kernel /xen.gz-2.6.18-164.15.1.el5 dom0_mem=300M
        module /vmlinuz-2.6.18-164.15.1.el5xen ro root=/dev/VolGroup00/LogVol00
        module /initrd-2.6.18-164.15.1.el5xen.img
    title CentOS (2.6.18-164.el5xen)
        root (hd0,0)
        kernel /xen.gz-2.6.18-164.el5
        module /vmlinuz-2.6.18-164.el5xen ro root=/dev/VolGroup00/LogVol00
        module /initrd-2.6.18-164.el5xen.img
    

    そして再起動します。


  • Xen – ゲストOSに複数のNICを認識させる

    今回は、XenのゲストOSに eth0、eth1 などの複数のネットワークインターフェイスを割り当てます。

    (まだ Xen のインストールもご紹介いていませんが・・・)

    次のような要件の時に必要になります。

    ・ゲストOSを 複数のネットワークセグメントに参加させたい場合。
    ・限りあるグローバルIPアドレスを、サービスを提供するゲストOSだけに割り当てたい場合。

    では、どのようにして追加するのでしょうか。
    まずは、大まかな流れから。

    1. ホストOSに2枚目以降のブリッジデバイスを追加。
    2. xend 再起動。
    3. ゲストOSのインストール、または再設定。

    このような流れになります。
    次は、実際にやってみます。

    ■ 1.ホストOSに2枚目以降のブリッジデバイスを追加

    通常、Xenを起動する時は、/etc/xen/scripts/network-bridge というスクリプトが走ります。network-bridgeは、xenbr0 というブリッジデバイをOSにエントリします。デフォルトでは network-bridge は、xenbr0 というブリッジデバイスを1つだけ登録します。このブリッジデバイスは、ホストOSが接続されている物理ネットワークセグメントに ゲストOSを参加させ るのに必要です。ホストOSとゲストOSのブリッジのような働きをします。

    そして、ゲストOSで複数のNICを利用したい場合は、ネットワークインターフェイス分だけ ブリッジデバイスを用意します。

    まずは、ブリッジデバイスの用意。
    ブリッジデバイス制御スクリプトを /etc/xen/scripts/network-bridge から /etc/xen/scripts/network-bridge.multi に変更します。

    
    # vi /etc/xen/xend-config.sxp
    
    
    
    ...
    (network-script network-bridge)
    ...
    

    ↓修正

    
    ...
    (network-script network-bridge.multi)
    ...
    
    

    そして、 /etc/xen/scripts/network-bridge.multi を用意します。

    # vi /etc/xen/scripts/network-bridge.multi
    
    
     #!/bin/sh
     set -e
    
    OP=$1
     shift
    
    script=/etc/xen/scripts/network-bridge
    
    case ${OP} in
     start)
     $script start vifnum=0 bridge=xenbr0 netdev=eth0
     $script start vifnum=1 bridge=xenbr1 netdev=eth1
     $script start vifnum=2 bridge=xenbr2 netdev=eth2
     ;;
    
    stop)
     $script stop vifnum=0 bridge=xenbr0 netdev=eth0
     $script stop vifnum=1 bridge=xenbr1 netdev=eth1
     $script stop vifnum=2 bridge=xenbr2 netdev=eth2
     ;;
    
    status)
     $script status vifnum=0 bridge=xenbr0 netdev=eth0
     $script status vifnum=1 bridge=xenbr1 netdev=eth1
     $script status vifnum=2 bridge=xenbr2 netdev=eth2
     ;;
    
    *)
     echo 'Unknown command: ' ${OP}
     echo 'Valid commands are: start, stop, status'
     exit 1
     esac
    

    実行権限を付与。

    
    # chmod +x /etc/xen/scripts/network-bridge.multi
    
    

    ■ 2. xend 再起動

    そして、xend を再起動します。

    
    # service xend restart
    
    

    これで、xenbr0、xenbr1、xenbr2 という3つのブリッジデバイスが用意できました。
    ifconfig で確認できます。

    
    # ifconfig
    
    

    ■ 3. ゲストOSのインストール、または再設定

    次は、ゲストOSのインストールです。

    
    # virt-install -n guestos01 -r 500 --vcpus=1 \
      -f /dev/VolGroup00/guestos01 --nographics \
      -l http://ftp.riken.jp/Linux/centos/5.2/os/i386/ \
      -m 00:16:3e:51:59:f2 -b xenbr0 \
      -m 00:16:3e:51:59:f3 -b xenbr1
    

    この様に「-m」オプションと「-b」オプションで、MACアドレスとブリッジデバイスを2つずつ指定します。

    これで、ゲストOSがNIC2毎を認識してくれるので、あとは、通常のNIC2枚刺しの時のようにインストール作業を進めることができます。

    既存のゲストOSにNICを追加する場合は、xm console <name> などとして、コンソールから作業をした方が、ネットワークの設定を安全に行えます。

    ちなみに、「-m」 で指定する仮想NICのMACアドレスは、割り当てるIPv4アドレスの 下8ビットを16進数に変換して割り当ててます。そうする事でMACアドレスのバッディングを防げます。