CentOS 5.6 x64でKVMを設定

タックス

今まで仮想環境としてVMware Serverには大変お世話になったが、glibcやブラウザー問題等で利用しづらくなったため、思い切ってKVMに乗り換えることにしました。
KVMは基本的にqemuベースで作られており、CentOS 5.4から実装されました。
(Kernel 2.6.20からサポートされたが、CentOS 5.4ではベースが2.6.18なので、バックポートされてKVMに対応した。)
仮想マシンの作成や設定については、GUI環境でvirt-managerを使用するのが一般的ではあると思いますが、やはりLinuxなので全て遠隔で出来ないと意味が無いのではないかと思い、コマンドライン(SSH)及びVNCを利用したKVMの設定方法をご紹介します。

    ちなみに、virt-managerを使用した仮想マシンの登録については、以下が参考になります。

    CentOS 5.2 x64でXenを設定(完全仮想化) - にわかSEの独り言
    (ところどころ細かいところが違いますが、KVMだからと言って、迷うことは一つも無いはずです。)

    以下、「centos」という名の仮想マシンを作成する手順です。

    ■ KVMが利用できるか確認

    ※ Intel製CPUの場合
    # cat /proc/cpuinfo|grep vmx

    ※ AMD製CPUの場合
    # cat /proc/cpuinfo|grep svm

    もしも、対応しているのに確認できない場合は、BIOSの設定を確認して下さい。

    ■ KVMのインストール

    # yum groupinstall kvm

    ■ KVMの自動起動の設定

    # chkconfig libvirtd on

    ■ KVMを有効にするため再起動

    # reboot

    ■ ネットワークのブリッジ設定

    # cp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-br0

    # vi /etc/sysconfig/network-scripts/ifcfg-br0
    DEVICE=br0
    TYPE=Bridge
    BOOTPROTO=static
    BROADCAST=192.168.0.255
    IPADDR=192.168.0.2
    NETMASK=255.255.255.0
    NETWORK=192.168.0.0
    ONBOOT=yes

    # vi /etc/sysconfig/network-scripts/ifcfg-eth0
    DEVICE=eth0
    TYPE=Ethernet
    HWADDR=XX:XX:XX:XX:XX:XX
    ONBOOT=yes
    BRIDGE=br0

    # service network restart

    # brctl show
    bridge name     bridge id               STP enabled     interfaces
    br0 8000.001d7378de3f no eth0
    virbr0 8000.000000000000 yes

    ■ ブリッジしたパケットのみiptablesを無効化

    # vi /etc/sysctl.conf
    net.bridge.bridge-nf-call-ip6tables = 0
    net.bridge.bridge-nf-call-iptables = 0
    net.bridge.bridge-nf-call-arptables = 0

    # sysctl -p

    # service libvirtd restart

    ■ 仮想ディスクの作り方

  • raw形式で仮想ディスクを作成(10GB)

  • # qemu-img create -f raw /var/lib/libvirt/images/centos-raw.img 10G

    rawをqcow2にすることで、全容量を確保しないようになります。またスナップショットや暗号化、差分ディスクイメージといった機能も利用できるようになります。
    ちなみに、パフォーマンスはrawが一番良いようです。

  • 仮想ディスクの容量を確保(ディスク容量に余裕のある方向け)

  • # cp --sparse=never /var/lib/libvirt/images/centos-raw.img /var/lib/libvirt/images/centos.img
    # rm /var/lib/libvirt/images/centos-raw.img

    この設定をすることで、最初から10GBの仮想ディスクが出来上がります。

  • パーミッションの設定

  • # chmod 600 /var/lib/libvirt/images/centos.img

    ■ 仮想マシンの作り方

  • virshコマンドでKVMのXMLファイルを作成するためのqemu-kvmコマンドオプションのテンプレート作成

  • # vi /etc/libvirt/qemu/public.kvm
    /usr/libexec/qemu-kvm -boot d -no-reboot -m 512 -smp 2 -net nic,model=virtio -net tap,ifname=br0 -vnc 0.0.0.0:0 -k ja -serial pty -drive index=0,file=/var/lib/libvirt/images/,if=virtio -cdrom /root/ISO/ -usbdevice tablet

  • qemu-kvmコマンドの解説

  • /usr/libexec/qemu-kvm エミュレータの指定(qemu-kvmのPath)
    -boot ブートデバイス(cはHDD、dはCDROM)
    -no-reboot 再起動でも停止
    -m メモリー量
    -smp CPUのコア数
    -net NICの設定
    -vnc VNCの設定
    -drive ドライブの設定
    -cdrom CDROMデバイスの設定(例は普通のディレクトリでISOをマウントすることを前提にしている)
    -usbdevice tablet VNCでマウスカーソルがずれてしまう現象の対策。本来は違う目的のものだと思いますが…

  • KVMのXMLファイルの作成

  • # virsh domxml-from-native qemu-argv /etc/libvirt/qemu/public.kvm > /etc/libvirt/qemu/centos.xml
    # chmod 600 /etc/libvirt/qemu/centos.xml

    # vi /etc/libvirt/qemu/centos.xml
    <domain type='kvm'>
    <name>centos</name>
    <uuid>XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX</uuid>
    <memory>524288</memory>
    <currentMemory>524288</currentMemory>
    <vcpu>2</vcpu>
    <os>
    <type arch='x86_64'>hvm</type>
    <boot dev='cdrom'/>
    </os>
    <features>
    <acpi/>
    <apic/>
    <pae/>
    </features>
    <clock offset='localtime'>
    <timer name='pit' tickpolicy='delay'/>
    </clock>
    <on_poweroff>destroy</on_poweroff>
    <on_reboot>destroy</on_reboot>
    <on_crash>destroy</on_crash>
    <devices>
    <emulator>/usr/libexec/qemu-kvm</emulator>
    <disk type='file' device='disk'>
    <driver name='qemu' type='raw'/>
    <source file='/var/lib/libvirt/images/centos.img'/>
    <target dev='vda' bus='virtio'/> ※Windowsの場合はvirtio→ide
    </disk>
    <disk type='file' device='cdrom'>
    <source file='/root/ISO/CentOS-5.6-i386-netinstall.iso'/>
    <target dev='hdc' bus='ide'/>
    <readonly/>
    <address type='drive' controller='0' bus='1' unit='0'/>
    </disk>
    <controller type='ide' index='0'/>
    <interface type='bridge'>
    <mac address='XX:XX:XX:XX:XX:XX'/>
    <source bridge='br0'/>
    <model type='virtio'/> ※Windowsの場合は削除
    </interface>
    <serial type='pty'>
    <target port='0'/>
    </serial>
    <console type='pty'>
    <target port='0'/>
    </console>
    <input type='tablet' bus='usb'/>
    <input type='mouse' bus='ps2'/>
    <graphics type='vnc' port='5900' autoport='no' listen='0.0.0.0' keymap='ja'/>
    <video>
    <model type='cirrus' vram='9216' heads='1'/>
    </video>
    </devices>
    </domain>

    ※ 上記をテンプレートとして使用しても良いが、uuidとmac addressに注意が必要。
    ※ 複数の仮想マシンを起動させる場合は、VNCのポート番号をユニークにする。

  • ドメイン(仮想マシン)の登録

  • # virsh define /etc/libvirt/qemu/centos.xml

  • 仮想マシンの起動

  • # virsh start centos

    ■ VNCで接続し、OSのセットアップ

  • VNCで利用する5900番ポートを空ける。

  • # vi /etc/sysconfig/iptables
    -A INPUT -p tcp --dport 5900 -j ACCEPT

    # service iptables restart

  • VNCクライアントをインストールし、VNCで仮想マシンへ接続。

  • オススメのVNCクライアント
    UltraVNC
    RealVNC

    遠隔地からのアクセスでは、わざわざVNCのポートを空けるのはセキュリティ的に脆弱になりやすいので、Puttyなどを使って、SSHのトンネリングを利用されると良いと思います。

    ■ OSのインストール後、ISOファイルのマウントを解除し、ブートドライブをHDDにする

    # vi /etc/libvirt/qemu/centos.xml
    <domain type='kvm'>
    <name>centos</name>
    <uuid>XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX</uuid>
    <memory>524288</memory>
    <currentMemory>524288</currentMemory>
    <vcpu>2</vcpu>
    <os>
    <type arch='x86_64' machine='rhel5.4.0'>hvm</type>
    <boot dev='hd'/>
    </os>
    <features>
    <acpi/>
    <apic/>
    <pae/>
    </features>
    <clock offset='localtime'>
    <timer name='pit' tickpolicy='delay'/>
    </clock>
    <on_poweroff>destroy</on_poweroff>
    <on_reboot>restart</on_reboot>
    <on_crash>restart</on_crash>
    <devices>
    <emulator>/usr/libexec/qemu-kvm</emulator>
    <disk type='file' device='disk'>
    <driver name='qemu' type='raw'/>
    <source file='/var/lib/libvirt/images/centos.img'/>
    <target dev='vda' bus='virtio'/> ※Windowsの場合はvirtio→ide
    </disk>
    <controller type='ide' index='0'/>
    <interface type='bridge'>
    <mac address='XX:XX:XX:XX:XX:XX'/>
    <source bridge='br0'/>
    <model type='virtio'/> ※Windowsの場合は削除
    </interface>
    <serial type='pty'>
    <target port='0'/>
    </serial>
    <console type='pty'>
    <target port='0'/>
    </console>
    <input type='tablet' bus='usb'/>
    <input type='mouse' bus='ps2'/>
    <graphics type='vnc' port='5900' autoport='yes' listen='0.0.0.0' keymap='ja'/>
    <video>
    <model type='cirrus' vram='9216' heads='1'/>
    </video>
    </devices>
    </domain>

    ※ Windowsで準仮想化用ディスクドライバーをインストールする場合は、一度ダミーディスクを追加で作成し、ドライバーを読み込んでからide→virtioに変更する必要があります。
    ※ また、準仮想化用ネットワークドライバーをインストールする場合は、インストール前にドライバーをダウンロードしておき、上記の「virtio」の行を再度追記する必要があります。

  • xmlファイルを修正したら、必ず再定義をする。

  • # virsh define /etc/libvirt/qemu/centos.xml

    ■ 仮想マシンの一覧表示

    # virsh list --all
     Id 名前        状態
    ---------------------------
    1 centos シャットオフ

    ■ 仮想マシンの起動

    # virsh start centos

    ■ 仮想マシンの停止

    # virsh shutdown centos

    ■ 仮想マシンの強制停止

    # virsh destroy centos

    ■ ドメイン(仮想マシン)の削除

    # virsh undefine centos
    ※ 定義ファイル(XML)も削除されますので、消したく無い場合は、あらかじめコピーして下さい。イメージファイルは残ります。

    ■ 仮想マシンの自動起動

    # virsh autostart centos

    ■ 仮想マシンの自動起動の解除

    # virsh autostart --disable centos

    ■ 最後に

    KVMは、VMwareやCitrixと比べて、まだまだ歴史が浅く、商業利用されている例はあまり無いと思いますが、OCNのBizホスティング(ベーシック)やさくらのVPSでKVMが使用されているそうです。
    Bizホスティングを触る機会もあり、いろいろ触ってみると、やはりVMware Serverよりはパフォーマンスが良いようです。
    ただし、KVMを実際に設定してみると、Bizホスティングの弱点も見えてきました。
    VMware ESXiと比べると、そこまで速くは無いかなとも思いますが、厳密に比較していないので、何とも言えません。
    VMware Serverではコントロールパネルのためにtomcatが動いていたりするので、仮想マシン以外でもリソースを食うため、今では使用するメリットはあまり感じられません。
    Xenはカーネルの対応の遅さなどの問題があり、Red Hatから見放されましたし、気軽にハイパーバイザー型の仮想環境を構築するには、今ではKVMが一番良いのではないかと思っています。
    ちなみに、WindowsXPも入れてみましたが、VNCで設定後にリモートデスクトップで利用されると快適に使えるようになりますし、準仮想化のためのドライバーをインストールすることで、ネットワークやHDDのパフォーマンスも向上しますので、試してみて下さい。

    WindowsGuestDrivers/Download Drivers

    以下、参考リンクです。

    Wikipedia(Linux)
    Wikipedia(CentOS)
    Wikipedia(Kernel-based Virtual Machine)
    Wikipedia(Virtual Network Computing)


関連記事


FC2Blog Rankingblogram投票ボタンとれまが人気ブログランキングブログランキング・にほんブログ村へ
くる天 人気ブログランキングにほんブログ村 IT技術ブログ CentOSへ

テーマ : Linux
ジャンル : コンピュータ

トラックバック


この記事にトラックバックする(FC2ブログユーザー)

まとめtyaiました【CentOS 5.6 x64でKVMを設定】

今まで仮想環境としてVMware Serverには大変お世話になったが、glibcやブラウザー問題等で利用しづらくなったため、思い切ってKVMに乗り換えることにしました。KVMは基本的にqemuベースで作

コメントの投稿

非公開コメント

ソーシャルアプリ×スマホイベント開催!

解説すばらしいです。

以下宣伝となってしまい恐縮です。
◆参加お申し込みはこちら http://www.socialtoprunners.jp/

日時|8月18日(木)東京 19:30-22:00
     9月 2日(金)大阪 19:30-22:00

場所|東京 セルリアンタワー
     大阪 TKP梅田ビジネスセンター
人数|150名
参加費|無料
参加企業|株式会社GMS、その他トップSAP企業
主催|株式会社HatchUp
協賛|GMOインターネット株式会社
内容|会社紹介、パネルトーク、アプリ企画LT

大ヒットアプリ『渋谷クエスト』や、『大乱闘!ギルドバトル』など今話題のGMS社参戦!!
ソーシャル、スマートフォンアプリ業界で活躍中の企業をお呼びし、
「スマホアプリ展開の今(これからの企業展開)など」について講演を行って頂きます。
イベント後は、懇親会を予定しておりますので、そちらも是非ご参加ください。

◆参加お申し込みはこちら http://www.socialtoprunners.jp/

No title

同じハイパーバイザー用マシンに VMware ESXiと RHEL KVM を入れ、ゲストを作成して性能比較してみました。
VMwareに対して、KVMは101.77708[%]の時間がかかりました。
ちょっと使ってみるとKVMの方が速く感じますが、ベンチマーク的にCPUを使いまくると、VMwareの方が速いようです。

Re: No title

情報ありがとうございます。
なるほど。
すごく貴重なベンチマーク結果ですね。
VMwareさすが!!!と言ったところでしょうか。
プロフィール

WING☆

Author:WING☆


カレンダー
04 | 2017/05 | 06
- 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31 - - -
最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
カウンター
お問い合わせ

名前:
メール:
件名:
本文:

WING☆からのお知らせ
  • CentOS 7設定集
  •    └wingリポジトリ(el7)

  • CentOS 6 x64設定集
  •    └wingリポジトリ(el6)

  • CentOS 5 x64設定集
  •    └wingリポジトリ(el5)



    My Yahoo!に追加

    FC2ブログランキング



    リンク
    ブロとも一覧
    Virtualization & Sever Maniax
    RSSリンクの表示
    QRコード
    QRコード
    ブロとも申請フォーム

    この人とブロともになる