centosでkvm

いままで、kvmはすべてdebian系ではしらせていて、centos系でためしたことが
なかったのはひみつです。

土曜日だし、ためしてみるかね。
ってことで、
http://www.server-world.info/query?os=CentOS_5&p=kvm

[root@ml115-cent5-14 ~]# lsmod | grep kvm
kvm_amd                67624  0 
kvm                   224928  2 ksm,kvm_amd
[root@ml115-cent5-14 ~]# 

なにはなくともカーネルモジュールの状態確認。

[root@ml115-cent5-14 rc.d]# yum erase  qemu-img
Loaded plugins: fastestmirror
Setting up Remove Process
Resolving Dependencies
--> Running transaction check
---> Package qemu-img.x86_64 2:0.10.5-1.el5.2 set to be erased
--> Processing Dependency: qemu-img = 2:0.10.5-1.el5.2 for package: qemu
--> Running transaction check
---> Package qemu.x86_64 2:0.10.5-1.el5.2 set to be erased
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package         Arch          Version                   Repository        Size
================================================================================
Removing:
 qemu-img        x86_64        2:0.10.5-1.el5.2          installed        156 k
Removing for dependencies:
 qemu            x86_64        2:0.10.5-1.el5.2          installed         0.0 

Transaction Summary
================================================================================
Remove        2 Package(s)
Reinstall     0 Package(s)
Downgrade     0 Package(s)

Is this ok [y/N]: y
Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Erasing        : qemu-img                                                 1/2 
  Erasing        : qemu                                                     2/2 

Removed:
  qemu-img.x86_64 2:0.10.5-1.el5.2                                              

Dependency Removed:
  qemu.x86_64 2:0.10.5-1.el5.2                                                  

Complete!
[root@ml115-cent5-14 rc.d]# yum install kvm kmod-kvm kvm-qemu-img libvirt python-virtinst bridge-utils
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: ftp.jaist.ac.jp
 * epel: ftp.jaist.ac.jp
 * extras: ftp.jaist.ac.jp
 * rpmforge: fr2.rpmfind.net
 * updates: ftp.jaist.ac.jp
Setting up Install Process
Package kvm-83-239.el5.centos.x86_64 already installed and latest version
Package kmod-kvm-83-239.el5.centos.x86_64 already installed and latest version
Package libvirt-0.8.2-22.el5.x86_64 already installed and latest version
Package libvirt-0.8.2-22.el5.i386 already installed and latest version
Package python-virtinst-0.400.3-12.el5.noarch already installed and latest version
Package bridge-utils-1.1-3.el5.x86_64 already installed and latest version
Resolving Dependencies
--> Running transaction check
---> Package kvm-qemu-img.x86_64 0:83-239.el5.centos set to be updated
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package             Arch          Version                    Repository   Size
================================================================================
Installing:
 kvm-qemu-img        x86_64        83-239.el5.centos          base        182 k

Transaction Summary
================================================================================
Install       1 Package(s)
Upgrade       0 Package(s)

Total size: 182 k
Is this ok [y/N]: y
Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing     : kvm-qemu-img                                             1/1 

Installed:
  kvm-qemu-img.x86_64 0:83-239.el5.centos                                       

Complete!
[root@ml115-cent5-14 rc.d]# 
[root@ml115-cent5-14 rc.d]# cd /etc/init.d/
[root@ml115-cent5-14 init.d]# ls -l | grep kvm
[root@ml115-cent5-14 init.d]# 
[root@ml115-cent5-14 init.d]# 
[root@ml115-cent5-14 init.d]# ls -l | grep lib
-rwxr-xr-x 1 root root  8006  7月 22 15:50 libvirt-guests
-rwxr-xr-x 1 root root  3024  7月 22 15:50 libvirtd
[root@ml115-cent5-14 init.d]# 
[root@ml115-cent5-14 init.d]# chkconfig --list | grep libvirtd
libvirtd        0:off   1:off   2:on    3:on    4:on    5:on    6:off
[root@ml115-cent5-14 init.d]# 
[root@ml115-cent5-14 init.d]# /etc/init.d/libvirtd restart
Stopping libvirtd daemon:                                  [  OK  ]
Starting libvirtd daemon:                                  [  OK  ]
[root@ml115-cent5-14 init.d]# 
[root@ml115-cent5-14 network-scripts]# cat ifcfg-br0 
# Broadcom Corporation NetXtreme BCM5722 Gigabit Ethernet PCI Express
DEVICE=br0
BOOTPROTO=static
HWADDR=00:23:7D:61:43:4A
ONBOOT=yes
NETMASK=255.255.255.0
IPADDR=192.168.1.14
GATEWAY=192.168.1.1
TYPE=Bridge
USERCTL=no
IPV6INIT=yes
PEERDNS=yes
[root@ml115-cent5-14 network-scripts]# cat ifcfg-eth0 
# Broadcom Corporation NetXtreme BCM5722 Gigabit Ethernet PCI Express
DEVICE=eth0
BOOTPROTO=static
HWADDR=00:23:7D:61:43:4A
ONBOOT=yes
NETMASK=255.255.255.0
IPADDR=192.168.1.14
GATEWAY=192.168.1.1
TYPE=Ethernet
USERCTL=no
IPV6INIT=yes
#PEERDNS=yes
BRIDGE=br0
[root@ml115-cent5-14 network-scripts]# 
[root@ml115-cent5-14 network-scripts]# ifconfig
br0       Link encap:Ethernet  HWaddr 00:23:7D:61:43:4A  
          inet addr:192.168.1.14  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: 2001:c90:ea4:3011:223:7dff:fe61:434a/64 Scope:Global
          inet6 addr: fe80::223:7dff:fe61:434a/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:7991 errors:0 dropped:0 overruns:0 frame:0
          TX packets:5920 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:6389414 (6.0 MiB)  TX bytes:720266 (703.3 KiB)

eth0      Link encap:Ethernet  HWaddr 00:23:7D:61:43:4A  
          inet6 addr: fe80::223:7dff:fe61:434a/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:7996 errors:0 dropped:0 overruns:0 frame:0
          TX packets:5949 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:6534284 (6.2 MiB)  TX bytes:764558 (746.6 KiB)
          Interrupt:58 Memory:fdff0000-fe000000 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:2393 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2393 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:3872013 (3.6 MiB)  TX bytes:3872013 (3.6 MiB)

virbr0    Link encap:Ethernet  HWaddr 00:00:00:00:00:00  
          inet addr:192.168.122.1  Bcast:192.168.122.255  Mask:255.255.255.0
          inet6 addr: fe80::200:ff:fe00:0/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:53 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 b)  TX bytes:11150 (10.8 KiB)

[root@ml115-cent5-14 network-scripts]# 

んでこんな感じで実行

[hirasawa@ml115-cent5-14 mnt2]$ cat virt-install.sh 
virt-install \
-n www \         仮想マシン名
-r 1024 \       メモリ
-f /mnt/mnt2/www.img \ 保管場所
-s 40 \        ディスク容量
--vcpus=2 \
--os-type linux \
--os-variant=rhel5.4 \
--network bridge=br0 \
--nographics \
--location='http://ftp.riken.jp/Linux/centos/5.7/os/x86_64/' \
--extra-args='console=tty0 console=ttyS0,115200n8' 
[hirasawa@ml115-cent5-14 mnt2]$ 
[hirasawa@ml115-cent5-14 mnt2]$ ls -ltr | grep virt
-rwxr-xr-x 1 root root         271 11月  6 12:41 virt-install.sh
[hirasawa@ml115-cent5-14 mnt2]$ 

rootになって、virt-instll.shを起動すると、ターミナル上,CUI
インストールが行われる。
インストール自体はいつものとおり。

インストール終了後、rebootすると、インストールされたイメージがおなじ
画面にてたちあがる。(ふーん、

こんな感じ

[root@localhost ~]#    ctrl + ] でホストに(telnetとおんなじ?)
[root@ml115-cent5-14 mnt2]# virsh console www でゲストに
Connected to domain www
エスケープ文字は  ^] です 

[root@localhost ~]# 

クリーンインストール直後の最小構成のイメージをコピーする場合は、

[root@ml115-cent5-14 mnt2]# pwd
/mnt/mnt2
[root@ml115-cent5-14 mnt2]# ls -ltr
合計 4530684
drwx------ 2 root root       16384  4月  1  2011 lost+found
-rwxr-xr-x 1 root root         271 11月  6 12:41 virt-install.sh
-rwxr-xr-x 1 root root 42949672960 11月  6 17:43 www.img
[root@ml115-cent5-14 mnt2]# virt-clone --original www -name template --file /mnt/mnt2/template.img
ERROR    Domain with devices to clone must be paused or shutoff.
[root@ml115-cent5-14 mnt2]# 

おう、be paused or shutoff ですか。
どうやってpause すんだ。

#virsh --helpでコマンドの詳細がみえるね

[root@ml115-cent5-14 mnt2]# virsh --help

virsh [オプション] [コマンド]

  オプション:
    -c | --connect <uri>    ハイパーバイザー接続 URI
    -r | --readonly         読み込みのみで接続
    -d | --debug <num>      デバッグレベル [0-5]
    -h | --help             本ヘルプ
    -q | --quiet            抑止モード
    -t | --timing           タイミング情報を出力
    -l | --log <file>       ログをファイルへ書き込み
    -v | --version          プログラムバージョン

  コマンド (非対話式モード):
    help            ヘルプの表示
    attach-device   XML ファイルからデバイスを追加
    attach-disk     ディスク装置の接続
    attach-interface ネットワークインターフェースを接続します
    autostart       ドメインの自動起動
    capabilities    能力情報
    cd              change the current directory
    connect         ハイパーバイザーに(再)接続
    console         ゲストのコンソールに接続
    cpu-baseline    compute baseline CPU
    cpu-compare     compare host CPU with a CPU described by an XML file
    create          XML ファイルからドメインの作成
    start           (以前に定義した)停止状態のドメインの起動
    destroy         ドメインの強制停止
    detach-device   XML ファイルからデバイスを削除
    detach-disk     ディスク装置の削除
    detach-interface ネットワークインターフェースの削除
    define          XML ファイルからドメインを登録(ただし起動しない)
    domid           ドメイン名または UUID をドメイン id に変換
    domuuid         ドメイン名または id をドメイン UUID に変換
    dominfo         ドメインの情報
    domjobinfo      domain job information
    domjobabort     abort active domain job
    domname         ドメイン id または UUID をドメイン名に変換
    domstate        ドメインの状態
    domblkstat      ドメインのデバイスブロックの状態を取得します。
    domifstat       ドメインのネットワークインターフェースの状態を取得します。
    dommemstat      get memory statistics for a domain
    domblkinfo      domain block device size information
    domxml-from-native ネイティブ設定をドメイン XML に変換
    domxml-to-native ドメイン XML をネイティブ設定に変換
    dumpxml         XML 形式のドメイン情報
    edit            ドメイン用の XML 設定を編集
    find-storage-pool-sources 可能なストレージプールソースを見つける
    find-storage-pool-sources-as 可能なストレージプールソースを探す
    freecell        NUMA 空きメモリー:
    hostname        ハイパーバイザーのホスト名を表示します
    list            ドメインの一覧を表示
    migrate         他のホストにドメインを移動させる
    migrate-setmaxdowntime set maximum tolerable downtime
    net-autostart   ネットワークの自動起動
    net-create      XML ファイルからネットワークの作成
    net-define      XML ファイルからネットワークを登録(起動はしない)
    net-destroy     ネットワークの停止
    net-dumpxml     ネットワークの情報を XML 形式で表示
    net-edit        ネットワーク用の XML 設定を編集
    net-list        ネットワークの一覧を表示
    net-name        ネットワーク UUID をネットワーク名に変換
    net-start       (事前に登録した)停止状態のネットワークの起動
    net-undefine    停止状態のネットワークの登録削除
    net-uuid        ネットワーク名をネットワーク UUID に変換
    iface-list      物理ホストのインターフェイスを一覧表示
    iface-name      convert an interface MAC address to interface name
    iface-mac       convert an interface name to interface MAC address
    iface-dumpxml   interface information in XML
    iface-define    define (but don't start) a physical host interface from an XML file
    iface-undefine  物理ホストインターフェイスを定義解除(設定から削除)
    iface-edit      XML 設定を物理ホストインターフェイス用に編集
    iface-start     物理ホストインターフェイスを開始( / "if-up" で有効にする)
    iface-destroy   物理ホストインターフェイスを停止(/ "if-down" で無効にする)
    managedsave     managed save of a domain state
    nodeinfo        ノード情報
    nodedev-list    enumerate devices on this host
    nodedev-dumpxml XML 形式のノードデバイス詳細
    nodedev-dettach dettach node device from its device driver
    nodedev-reattach reattach node device to its device driver
    nodedev-reset   reset node device
    nodedev-create  ノード上に XML で定義されるデバイスを作成
    nodedev-destroy ノード上のデバイスを停止
    nwfilter-define define or update a network filter from an XML file
    nwfilter-undefine undefine a network filter
    nwfilter-dumpxml network filter information in XML
    nwfilter-list   list network filters
    nwfilter-edit   edit XML configuration for a network filter
    pool-autostart  プールの自動起動
    pool-build      プールを構築
    pool-create     XML ファイルからプールの作成
    pool-create-as  引数のセットからプールの作成
    pool-define     XML ファイルからプールを定義 (ただし起動しない)
    pool-define-as  引数のセットからプールを定義
    pool-destroy    プールを破壊
    pool-delete     プールの削除
    pool-dumpxml    XML 形式のプール情報
    pool-edit       ストレージプール用の XML 設定を編集
    pool-info       ストレージプール情報
    pool-list       プールの一覧を表示
    pool-name       プール UUID をプール名に変換
    pool-refresh    プールをリフレッシュ
    pool-start      (以前に定義した)停止状態のプールの起動
    pool-undefine   停止状態プールの定義解除
    pool-uuid       プール名をプール UUID に変換
    secret-define   define or modify a secret from an XML file
    secret-dumpxml  XML 形式の秘密属性
    secret-set-value 秘密値を設定
    secret-get-value 秘密値を出力
    secret-undefine undefine a secret
    secret-list     list secrets
    pwd             print the current directory
    quit            対話式ターミナルの終了
    exit            対話式ターミナルの終了
    reboot          ドメインの再起動
    restore         ファイルに保存している状態からドメインを復元
    resume          ドメインの再開
    save            ドメインの状態をファイルに保存
    schedinfo       スケジューラーパラメーターを見る/設定する
    dump            解析のためにドメインのコアをファイルにダンプします
    shutdown        ドメインを穏やかに停止
    setmem          メモリーサイズの変更
    setmaxmem       最大メモリー上限の変更
    setvcpus        仮想 CPU 数の変更
    suspend         ドメインの一時停止
    ttyconsole      tty コンソール
    undefine        停止状態のドメインの削除
    update-device   update device from an XML file
    uri             ハイパーバイザーの標準的な URI を表示します
    vol-create      XML ファイルからボリュームの作成
    vol-create-from 別のボリュームを入力として使用して vol を作成
    vol-create-as   引数のセットからボリュームの作成
    vol-clone       ボリュームをクローン
    vol-delete      ボリュームを削除
    vol-wipe        wipe a vol
    vol-dumpxml     XML 形式のボリューム情報
    vol-info        ストレージボリューム情報
    vol-list        ボリュームの一覧を表示
    vol-pool        returns the storage pool for a given volume key or path
    vol-path        returns the volume path for a given volume name or key
    vol-name        returns the volume name for a given volume key or path
    vol-key         returns the volume key for a given volume name or path
    vcpuinfo        ドメインの vcpu 情報
    vcpupin         仮想 CPU アフィニティーの設定
    version         バージョンの表示
    vncdisplay      vnc 表示
    snapshot-create Create a snapshot
    snapshot-current Get the current snapshot
    snapshot-delete Delete a domain snapshot
    snapshot-dumpxml Dump XML for a domain snapshot
    snapshot-list   List snapshots for a domain
    snapshot-revert Revert a domain to a snapshot

  (コマンドに関する詳細は、 help <command> を指定します)

[root@ml115-cent5-14 mnt2]# 

pauseの仕方わからんw

つぎのようにshutdownしたあとにcloneするとうまくいくかな?

[root@ml115-cent5-14 mnt2]# virsh console www
Connected to domain www
エスケープ文字は  ^] です 

[root@localhost ~]# shutdown -h now

shutdownしたあとに、ホストから

[root@ml115-cent5-14 mnt2]# pwd
/mnt/mnt2
[root@ml115-cent5-14 mnt2]# virt-clone --original www -name template --file /mnt/mnt2/template.img
Cloning /mnt/mnt2/www.img                                |  40 GB     06:05     

Clone 'ame' created successfully.
[root@ml115-cent5-14 mnt2]# 
[root@ml115-cent5-14 mnt2]# ls -ltr
合計 7775960
drwx------ 2 root root       16384  4月  1  2011 lost+found
-rwxr-xr-x 1 root root         271 11月  6 12:41 virt-install.sh
-rwxr-xr-x 1 root root 42949672960 11月  6 17:53 www.img
-rwxr-xr-x 1 root root 42949672960 11月  6 18:00 template.img
[root@ml115-cent5-14 mnt2]# 

ふむ、できた。つーか、ただのcp?

diffとってみたら、おんなじだったけど、
設定ファイルを新規につくっているみたいですな
ame.xmlってのが新規(template.img)のための設定ファイルってことみたい。
ame? ameってなんだ? 

[root@ml115-cent5-14 qemu]# pwd
/etc/libvirt/qemu
[root@ml115-cent5-14 qemu]# diff www.xml ame.xml 
2,3c2,3
<   <name>www</name>
<   <uuid>74e7e0fa-e391-f136-39f0-629161bbba70</uuid>
---
>   <name>ame</name>
>   <uuid>485cf8b9-0201-2b81-c529-42b846dfb57c</uuid>
26c26
<       <source file='/mnt/mnt2/www.img'/>
---
>       <source file='/mnt/mnt2/template.img'/>
32c32
<       <mac address='54:52:00:3b:78:04'/>
---
>       <mac address='54:52:00:38:e1:ab'/>
[root@ml115-cent5-14 qemu]# 

今日はここまでにしておきましょう。
祝! せんとでもうごいたよ