1 views
実現する機能
KVM(Kernel-based Virtual Machine) (ケーブイエム) は仮想化ソフトです。Windowsを搭載していたパソコンが壊れたので、サーバー機でCentOSとWindowsを同時に動かして使っています。動画ファイルの変換にはWindowsが不可欠ですからね。さらには、CentOSのテスト環境を構築し、危ないソフトを試したりしています。欠点は、DVDドライブ以外の周辺機器はUSBも含めて使えない点です。マザーボードが古いせいかもしれませんが、残念です。
※KVMを導入するためには、パソコンのプロセッサが「Intel VT」か「AMD-V」のどちらかでないと動作しません。
KVMの導入手順
(1)自宅サーバーが仮想化できるか確認
[root@ufuso ~]# egrep '(vmx|svm)' /proc/cpuinfo ← 自宅サーバーがKVMで仮想化できるPCか調べる flags : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt rdtscp lm 3dnowext 3dnow rep_good extd_apicid pni cx16 lahf_lm cmp_legacy svm extapic cr8_legacy 3dnowprefetch lbrv ← svm(Intelならvmx) とあるのでOK。 flags : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt rdtscp lm 3dnowext 3dnow rep_good extd_apicid pni cx16 lahf_lm cmp_legacy svm extapic cr8_legacy 3dnowprefetch lbrv ← svm(Intelならvmx) とあるのでOK。 [root@ufuso ~]# lsmod | grep kvm ← kvmモジュールがロードされているか確認 ← 何も表示されないので、ロードされていない [root@ufuso ~]# modprobe kvm ← 必要なモジュールを組み込む [root@ufuso ~]# modprobe kvm_amd ← AMD用モジュールの組込。INTEL用だとkvm_intel [root@ufuso ~]# lsmod | grep kvm ← モジュールが組み込まれたか確認 kvm_amd 40665 0 kvm 333172 1 kvm_amd ← ロードされている |
(2)KVMのインストール
[root@ufuso ~]# yum -y install qemu-kvm libvirt python-virtinst bridge-utils virt-manager ← kvmとlibvirt をインストール Installed: libvirt.x86_64 0:0.10.2-29.el6.1 python-virtinst.noarch 0:0.600.0-18.el6 qemu-kvm.x86_64 2:0.12.1.2-2.415.el6_5.3 virt-manager.x86_64 0:0.9.0-19.el6 Dependency Installed: augeas-libs.x86_64 0:1.0.0-5.el6 celt051.x86_64 0:0.5.1.3-0.el6 cyrus-sasl-md5.x86_64 0:2.1.23-13.el6_3.1 ebtables.x86_64 0:2.0.9-6.el6 glusterfs-api.x86_64 0:3.4.0.36rhs-1.el6 glusterfs-libs.x86_64 0:3.4.0.36rhs-1.el6 gnutls-utils.x86_64 0:2.8.5-10.el6_4.2 gpxe-roms-qemu.noarch 0:0.9.7-6.10.el6 gtk-vnc.x86_64 0:0.3.10-3.el6 gtk-vnc-python.x86_64 0:0.3.10-3.el6 iscsi-initiator-utils.x86_64 0:6.2.0.873-10.el6 libcacard.x86_64 0:0.15.0-2.el6 libcgroup.x86_64 0:0.40.rc1-5.el6_5.1 libvirt-client.x86_64 0:0.10.2-29.el6.1 libvirt-python.x86_64 0:0.10.2-29.el6.1 nc.x86_64 0:1.84-22.el6 netcf-libs.x86_64 0:0.1.9-4.el6 numad.x86_64 0:0.5-9.20130814git.el6 qemu-img.x86_64 2:0.12.1.2-2.415.el6_5.3 radvd.x86_64 0:1.6-1.el6 seabios.x86_64 0:0.6.1.2-28.el6 sgabios-bin.noarch 0:0-0.3.20110621svn.el6 spice-glib.x86_64 0:0.20-11.el6 spice-gtk.x86_64 0:0.20-11.el6 spice-gtk-python.x86_64 0:0.20-11.el6 spice-server.x86_64 0:0.12.4-6.el6_5.1 usbredir.x86_64 0:0.5.1-1.el6 vgabios.noarch 0:0.6b-3.7.el6 yajl.x86_64 0:1.0.7-3.el6 Complete! [root@ufuso ~]# /etc/rc.d/init.d/libvirtd start ← ibvirtdの起動 libvirtd デーモンを起動中: [ OK ] [root@ufuso ~]# chkconfig libvirtd on ← 自動起動設定 |
(3)ゲストOSがブリッジ接続できるようにブリッジネットワークを構成
※ブリッジ接続は、一歩間違えるとインターネットに繋がらなくなります。仮想PCを自宅のネットワークに参加させてファイルの共有とかをやる必要がなければ、ブリッジ接続はお勧めしません。
[root@ufuso ~]# cd /etc/sysconfig/network-scripts ← network-scriptsフォルダへ移動 [root@ufuso network-scripts]# cp ifcfg-eth0 ifcfg-br0 ← eth0をbr0にコピー [root@ufuso network-scripts]# vi ifcfg-br0 ← br0ファイルの編集 DEVICE=br0 ← 「br0」に変更 HWADDR=90:E6:BA:C9:DE:B3 TYPE=Bridge ← 「Bridge」に変更 UUID=eaea0094-7481-484c-86a7-381c1fc6e86c ONBOOT=yes #NM_CONTROLLED="yes" ← 行頭に#を付加してNetworkManagerを無効化 BOOTPROTO=none IPADDR=192.168.24.240 PREFIX=24 GATEWAY=192.168.24.1 DNS1=192.168.24.240 DOMAIN=ufuso.dip.jp DEFROUTE=yes IPV4_FAILURE_FATAL=yes IPV6INIT=no #NAME="System eth0" ← 行頭に#を付加してNetworkManagerを無効化 DNS2=192.168.24.1 [root@ufuso network-scripts]# vi ifcfg-eth0 ← eth0ファイルの編集 DEVICE=eth0 HWADDR=90:E6:BA:C9:DE:B3 TYPE=Ethernet UUID=eaea0094-7481-484c-86a7-381c1fc6e86c ONBOOT=yes #NM_CONTROLLED="yes" ← 行頭に#を付加してNetworkManagerを無効化 BOOTPROTO=none IPADDR=192.168.24.240 PREFIX=24 GATEWAY=192.168.24.1 DNS1=192.168.24.240 DOMAIN=ufuso.dip.jp DEFROUTE=yes IPV4_FAILURE_FATAL=yes IPV6INIT=no NAME="System eth0" DNS2=192.168.24.1 BRIDGE=br0 ← ブリッジ名「br0」を明記 [root@ufuso network-scripts]# cd ← network-scriptsフォルダから移動 [root@ufuso network-scripts]# service NetworkManager stop ← NetworkManagerの 停止 NetworkManager デーモンを停止中: [ OK ] [root@ufuso ~]# chkconfig NetworkManager off ← NetworkManagerは使わないので 自動起動を停止 [root@ufuso ~]# chkconfig --list NetworkManager ← 停止できているか確認 NetworkManager 0:off 1:off 2:off 3:off 4:off 5:off 6:off ← すべてOFFならOK [root@ufuso ~]# /etc/rc.d/init.d/network restart ← networkの再起動 ループバックインターフェースを終了中 [ OK ] ループバックインターフェイスを呼び込み中 [ OK ] インターフェース eth0 を活性化中: [ OK ] インターフェース br0 を活性化中: [ OK ] [root@ufuso ~]# ifconfig ← br0がIPを取得できているか確認 br0 Link encap:Ethernet HWaddr 90:E6:BA:C9:DE:B3 inet addr:192.168.24.240 Bcast:192.168.24.255 Mask:255.255.255.0 inet6 addr: 240f:ce:e2a:1:92e6:baff:fec9:deb3/64 Scope:Global inet6 addr: fe80::92e6:baff:fec9:deb3/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:16 errors:0 dropped:0 overruns:0 frame:0 TX packets:15 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:4161 (4.0 KiB) TX bytes:982 (982.0 b) eth0 Link encap:Ethernet HWaddr 90:E6:BA:C9:DE:B3 inet6 addr: fe80::92e6:baff:fec9:deb3/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:423772 errors:0 dropped:0 overruns:0 frame:0 TX packets:239788 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:525223710 (500.8 MiB) TX bytes:25420100 (24.2 MiB) 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:38494 errors:0 dropped:0 overruns:0 frame:0 TX packets:38494 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:7880864 (7.5 MiB) TX bytes:7880864 (7.5 MiB) virbr0 Link encap:Ethernet HWaddr 52:54:00:61:4F:58 inet addr:192.168.122.1 Bcast:192.168.122.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:22 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 b) TX bytes:2698 (2.6 KiB) |
(4)SELinuxの設定(SELinuxを使用している場合のみ)
※外付けUSBハードディスクに保存してあるCentOS6.4で使用したゲストOS(WindowsXP)をCentOS6.5のゲストOSとして流用するため、下記(6)作成済みのゲストOS(WindowsXP)を再インストールする場合には以下の設定が必要になる場合が多い
[root@ufuso ~]# ls -dZ /mnt/usbhd3tb/backup/ce64-old/var/lib/libvirt/images/WinXP.img ← ゲストOS(WinXP.img)にアクセスできなかったので、SELinuxの設定状況(コンテキスト)を確認 -rwxrwxrwx. root root system_u:object_r:fusefs_t:s0 /mnt/usbhd3tb/backup/ce64-old/var/lib/libvirt/images/WinXP.img ← fusefs_tタイプであることを確認 [root@ufuso ~]# getsebool -a | grep virt ← virtのSELinuxのpolicy状況(ブール 値)を一覧で確認 virt_use_comm --> off virt_use_execmem --> off virt_use_fusefs --> off ← fusefsがoffになっているのでをonにする virt_use_nfs --> off virt_use_samba --> off virt_use_sanlock --> off virt_use_sysfs --> on virt_use_usb --> on virt_use_xserver --> off [root@ufuso ~]# setsebool -P virt_use_fusefs=on ← fusefs_tをon(許可)にする。 「setsebool -P virt_use_fusefs 1」も可 [root@ufuso ~]# getsebool -a | grep virt ← 設定の確認 virt_use_comm --> off virt_use_execmem --> off virt_use_fusefs --> on ← onになっている virt_use_nfs --> off virt_use_samba --> off virt_use_sanlock --> off virt_use_sysfs --> on virt_use_usb --> on virt_use_xserver --> off |
(5)WindowsXPをゲストOSとして新規にインストールする場合
1.赤枠1をクリックして表示される一覧から赤枠2をクリックし、表示される一覧から赤枠3をクリックします。
3.赤枠1に仮想マシン名を入力し、CD又はイメージファイルからインストールする場合で説明を進めるので赤枠2をクリックし、最後に赤枠3をクリックします。
4.赤枠1にチェックが入っていること確認し、赤枠2と3でOSの情報を選択し、終わりましたら赤枠4をクリックします。
5.赤枠1と赤枠2の設定数値を入力して、赤枠3をクリックします。
6.赤枠1は8GBでは足りなくなると思いますので、最低でも例示程度の設定は必要かと思います。赤枠2は逆にチェックを外してハードディスク全体の容量が固定化で無駄になるのを避けます。終わりましたら赤枠3をクリックします。
7.赤枠1の「詳細なオプション」をクリックすると赤枠1内に設定内容が表示されます。赤枠3をクリックするとインストールが始まります。赤枠2にチェックが入っていると7ー2の画面が表示されます。(CentOSの例ですが、手順は変わりません)
7ー1.ブリッジ接続の設定をしていない場合には、赤枠の設定になります。
7ー2.赤枠1のメモリは1024Mがきびしければ、赤枠2内の初期値を512Mまで下げてください。赤枠3をクリックするとインストールが始まります。
8.WindowsXPのインストール画面が表示されましたら、赤枠の指示どおりエンター・キーを押します。
12.赤枠1の表示が出ましたら、赤枠2の指示どおりエンター・キーを押します。
13.赤枠1の表示が出ましたら、赤枠2の指示どおりエンター・キーを押します。
15.赤枠1にユーザー名を入力して、赤枠2をクリックします。
16.赤枠1にコンピューター名を入力して、赤枠2をクリックします。
17.この画面が出ましたら、日を確認して赤枠をクリックします。
18.赤枠1にチェックが入っていることを確認して、赤枠2をクリックします。
19.この画面がこれまで説明した画面の全体像です。真ん中の黒い画面に表示されているOKボタンをクリックします。背景はScientific Linux 6.2の画面です。
20.CentOSの画面の上にWindowsXPの画面が表示されています。説明は以上です。最新のWindowsアップデートをしてからお使いください。この状態でインターネットを使うとセキュリティホールだらけですから。
(6)作成済みのゲストOS(WindowsXP)を再インストールする場合
1.赤枠1をクリックして表示される一覧から赤枠2をクリックし、表示される一覧から赤枠3をクリックします。
2.赤枠1にrootのパスワードを入力し、赤枠2の「認証する」をクリックします。
4.赤枠1に再インストールする仮想マシン名を入力し、赤枠2で「既存のディスクイメージをインポート」にチェックを入れ、赤枠3の「進む」をクリックします。
7.既存のディスクイメージのあるフォルダまでたどり、赤枠の既存ディスクイメージをクリックします。
8.赤枠1でOSとバージョンを選び、赤枠2の「進む」をクリックします。
9.赤枠1で仮想OSに割り当てるメモリとCPU数を入力し、赤枠2の「進む」をクリックします。
10.赤枠1の「インストールの前に設定をカスタマイズする」をクリックし、赤枠2のホストデバイスが「br0」であることを確認し、赤枠3の「完了」をクリックします。
11.カスタマイズ画面になるので、例示としてメモリの設定を変えてみます。赤枠1の「Memory」をクリックして、赤枠2の設定を変更し、赤枠3の「適用」をクリックします。カスタマイズが終わりましたら、赤枠4の「インストールの開始」をクリックします。