歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> Linux教程

CentOS 下 KVM QEMU 虛擬機 安裝 配置 詳解

一,什麼是KVM

KVM包括很多部件:首先,它是一個Linux內核模塊(現在包括在主線中)用於轉換處理器到一種新的用戶 (guset) 模式。用戶模式有自己的ring狀態集合,但是特權ring0的指令會陷入到管理器(hypervisor)的代碼。由於這是一個新的處理器執行模型,代碼不需要任何的改動。

除了處理器狀態轉換,這個內核模塊同樣處理很小一部分低層次的模擬,比如MMU注冊(用於管理VM)和一部分PCI模擬的硬件。

在可預見的未來,Qemu團隊專注於硬件模擬和可移植性,同時KVM團隊專注於內核模塊(如果某些部分確實有性能提升的話,KVM會將一小部分模擬代碼移進來)和與剩下的用戶空間代碼的交互。

kvm-qemu可執行程序像普通Qemu一樣:分配RAM,加載代碼,不同於重新編譯或者調用calling KQemu,它創建了一個線程(這個很重要);這個線程調用KVM內核模塊去切換到用戶模式,並且去執行VM代碼。當遇到一個特權指令,它從新切換會KVM內核模塊,該內核模塊在需要的時候,像Qemu線程發信號去處理大部分的硬件仿真。

這個體系結構一個比較巧妙的一個地方就是客戶代碼被模擬在一個posix線程,這允許你使用通常Linux工具管理。如果你需要一個有2或者4核的虛擬機,kvm-qemu創建2或者4個線程,每個線程調用KVM內核模塊並開始執行。並發性(若果你有足夠多的真實核)或者調度(如果你不管)是被通用的Linux調度器,這個使得KVM代碼量十分的小

當一起工作的時候,KVM管理CPU和MEM的訪問,QEMU仿真硬件資源(硬盤,聲卡,USB,等等)當QEMU單獨運行時,QEMU同時模擬CPU和硬件。

二,安裝配置KVM

# yum -y install kvm python-virtinst libvirt bridge-utils \
virt-manager qemu-kvm-tools virt-viewer virt-v2v qemu-kvm tunctl

[root@localhost ~]#vim /etc/sysconfig/selinux //關閉selinux

SELINUX=disabled

[root@localhost ~]#reboot

[root@localhost ~]# cat /etc/RedHat-release
CentOS release 6.5 (Final)    //centos 6.5

三,啟動libvirtd

[root@localhost ~]# /etc/init.d/libvirtd start  //啟動

[root@localhost ~]# ps -e|grep libvirtd  //查看是否啟動
19458 ?        00:00:01 libvirtd

四,查看kvm模塊是否正確加載

[root@localhost ~]# lsmod |grep kvm 
kvm_intel              54285  0 
kvm                  333172  1 kvm_intel 

五,配置網絡橋接

[root@localhost network-scripts]# cat ifcfg-eth0 |awk '{if($0 !~ /^$/ && $0 !~ /^#/) {print $0}}'
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=none
BRIDGE=br0
IPV6INIT=no
HWADDR=F8:BC:12:60:99:86

[root@localhost network-scripts]# cat ifcfg-br0 |awk '{if($0 !~ /^$/ && $0 !~ /^#/) {print $0}}'
DEVICE=br0
TYPE=Bridge
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.10.103
GATEWAY=192.168.10.1
NETMASK=255.255.255.0
DNS1=192.168.10.1
IPV6INIT=no
DELAY=0

重啟網絡,發現報以下錯誤:

[root@localhost network-scripts]# /etc/init.d/network start
彈出環回接口:                                            [確定]
彈出界面 eth0: 錯誤:激活連接失敗:Master connection not found or invalid
                                                          [失敗]
彈出界面 br0: 錯誤:激活連接失敗:Failed to determine connection's virtual interface name
                                                          [失敗]
RTNETLINK answers: File exists
RTNETLINK answers: File exists
RTNETLINK answers: File exists

解決辦法:

[root@localhost rules.d]# service NetworkManager stop  //這個關閉掉就行
停止 NetworkManager 守護進程:                            [確定]

[root@localhost rules.d]# service network restart
正在關閉接口 br0:                                        [確定]
正在關閉接口 eth0:                                        [確定]
關閉環回接口:                                            [確定]
彈出環回接口:                                            [確定]
彈出界面 eth0:                                            [確定]
彈出界面 br0: Determining if ip address 192.168.10.103 is already in use for device br0...
                                                          [確定]

如果以下內容就說明配置成功了:

[root@localhost network-scripts]# ifconfig
br0      Link encap:Ethernet  HWaddr F8:BC:12:60:99:86  //有這個就OK
          inet addr:192.168.10.103  Bcast:192.168.10.255  Mask:255.255.255.0
          inet6 addr: fe80::fabc:12ff:fe60:9986/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:36416 errors:0 dropped:0 overruns:0 frame:0
          TX packets:28648 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:13151508 (12.5 MiB)  TX bytes:5962449 (5.6 MiB)

eth0      Link encap:Ethernet  HWaddr F8:BC:12:60:99:86
          inet6 addr: fe80::fabc:12ff:fe60:9986/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1360857 errors:0 dropped:0 overruns:0 frame:0
          TX packets:902173 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:1913592871 (1.7 GiB)  TX bytes:72387220 (69.0 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:176842 errors:0 dropped:0 overruns:0 frame:0
          TX packets:176842 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:880282316 (839.5 MiB)  TX bytes:880282316 (839.5 MiB)

virbr0    Link encap:Ethernet  HWaddr 52:54:00:1A:B6:F1
          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:37 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 b)  TX bytes:4651 (4.5 KiB)

[root@localhost network-scripts]#  brctl show
bridge name    bridge id        STP enabled    interfaces
br0          8000.f8bc12609986    no        eth0    //有這個就OK
virbr0        8000.5254001ab6f1    yes        virbr0-nic

六,用virt-install生成.img文件

# virt-install --name=Ubuntu1 \ 
--ram 1024 --vcpus=1 \ 
--disk path=/root/ubuntu1.img,size=10 \ 
 --accelerate --cdrom /root/ubuntu-14.04-desktop-amd64.iso \ 
--graphics vnc,port=5920 --network bridge=br0 

如果報以下錯誤:

could not open disk image  : Permission denied

解決方法:

[root@localhost ~]# cat /etc/libvirt/qemu.conf |awk '{if($0 !~ /^$/ && $0 !~ /^#/) {print $0}}'
vnc_listen = "0.0.0.0"
user = "root"              //去掉注釋
group = "root"              //去掉注釋
dynamic_ownership = 0      //去掉注釋,把1改為0

dynamic_ownership = 0      //去掉注釋,把1改為0 

這一步做完,系統文件就好了。

七,啟動虛擬機

如果報以下錯誤

[root@localhost ~]# virsh start ubuntu1 
錯誤:域已經活躍 

解決辦法:

[root@localhost ~]# pkill qemu-kvm 
 
[root@localhost ~]# virsh start ubuntu1 
域 ubuntu1 已開始 
 
[root@localhost ~]# virt-viewer ubuntu1  //進入圖形界面 

Linux入門學習教程:虛擬機體驗之QEMU篇  http://www.linuxidc.com/Linux/2015-03/114461.htm

Ubuntu 12.04之找不到Qemu命令 http://www.linuxidc.com/Linux/2012-11/73419.htm

Arch Linux上安裝QEMU+EFI BIOS http://www.linuxidc.com/Linux/2013-02/79560.htm

QEMU的翻譯框架及調試工具 http://www.linuxidc.com/Linux/2012-09/71211.htm

QEMU 代碼分析:BIOS 的加載過程 http://www.linuxidc.com/Linux/2014-12/110472.htm

QEMU 的詳細介紹:請點這裡
QEMU 的下載地址:請點這裡

Copyright © Linux教程網 All Rights Reserved