linux服務之kvm

來源:互聯網
上載者:User

標籤:des   style   c   tar   ext   color   

安裝軟體

[[email protected] ~]# yum grouplist

Virtualization
Virtualization Client
Virtualization Platform
Virtualization Tools

centos6.4-minimal-64bit 預設是200個包
[[email protected] ~]# yum install libvirt python-virtinst qemu-kvm
Transaction Summary
=====================================================================================================================================================
Install 87 Package(s)
Upgrade 4 Package(s)

Total download size: 36 M
Is this ok [y/N]: y

[[email protected] ~]# yum install tigervnc-server
Transaction Summary
=====================================================================================================================================================
Install 22 Package(s)

Total download size: 24 M
Installed size: 70 M
Is this ok [y/N]: y


[[email protected] kvm]# yum install virt-viewer
Transaction Summary
=====================================================================================================================================================
Install 24 Package(s)
Upgrade 2 Package(s)

Total download size: 8.2 M
Is this ok [y/N]:

[[email protected] ~]# lsmod |grep kvm
kvm_intel 53484 0
kvm 316506 1 kvm_intel
[[email protected] ~]# vi /etc/selinux/config
改為SELINUX=disabled
[[email protected] ~]# reboot
[[email protected] ~]# getenforce
Disabled
[[email protected] ~]# service iptables stop
[[email protected] ~]# service libvirtd start
Starting libvirtd daemon:
[[email protected] ~]# rpm -ql libvirt
[[email protected] ~]# rpm -ql python-virtinst
virt-install - provision(準備,預備) new virtual machines

[[email protected] networks]# cat /etc/libvirt/qemu/networks/default.xml

[[email protected] ~]# vi /etc/libvirt/qemu.conf

QEMU和KVM的關係

現在所說的虛擬化,一般都是指在CPU硬體支援基礎之上的虛擬化技術。KVM也同hyper-V、Xen一樣依賴此項技術。沒有CPU硬體虛擬化的支援,KVM是無法工作的。
準確來說,KVM是Linux的一個模組。可以用modprobe去載入KVM模組。載入了模組後,才能進一步通過其他工具建立虛擬機器。但僅有KVM模組是遠遠不夠的,因為使用者無法直接控制核心模組去做事情:
還必須有一個使用者空間的工具才行。這個使用者空間的工具,開發人員選擇了已經成型的開源虛擬化軟體 QEMU。說起來QEMU也是一個虛擬化軟體。它的特點是可虛擬不同的CPU。
比如說在x86的CPU上可虛擬一個Power的CPU,並可利用它編譯出可運行在Power上的程式。KVM使用了QEMU的一部分,並稍加改造,就成了可控制KVM的使用者空間工具了。
所以你會看到,官方提供的KVM下載有兩大部分三個檔案,分別是KVM模組、QEMU工具以及二者的合集。也就是說,你可以只升級KVM模組,也可以只升級QEMU工具。這就是KVM和QEMU的關係。

網卡橋接

其實KVM的安裝和使用都很方便簡單的,大家要理解KVM各個參數的含義。最關鍵的就是KVM的網路橋接的設定,在這裡大家要多看軟體自身的文檔,會有很大的協助。
要注意,系統重啟後要重新載入kvm核心模組:當然,你也可以修改系統相關設定在啟動時自動載入該模組。kvm是不是比VB和VM要爽得多呢?
KVM的預設網路模式為NAT,就是說藉助宿主機模式上網,現在我們想改成橋接模式,這樣外界就可以直接和宿主機裡的虛擬機器通訊了。

[[email protected] ~]#vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
TYPE=Ethernet
BRIDGE=br0
IPADDR=192.168.1.187
NETMASK=255.255.255.0

在我們安裝完成的時候,是沒有關於br0網卡的設定檔的,拷貝一下eth0並重新命名為br0
cp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-br0 br0以下四項
DEVICE=br0
BOOTPROTO=static
ONBOOT=yes
TYPE=Bridge

儲存網卡配置重啟網卡
[[email protected] ~]#service network restart
檢查br0是否成功
[[email protected] ~]#ifconfig

其實我們在虛擬機器搭建的時候,我們最終關心的網卡是: eth0, br0, vnet0,vnet1… 其中,我們的eth0是原來的物理網卡,br0是我們虛擬出來的橋裝置,而vnetXXX就是橋接映射到虛擬機器裡面用到的網
卡。當配置完了之後,我們使用ifconfig,查看起來的話,eth0是沒有ip地址的,而br0彷彿是虛擬出來的一個原來eth0的提供者,它具有ip地址,可以代替原來的eth0被訪問,而vnetXX的地址可以在
建立虛擬機器之後在虛擬機器裡面配置,橋接後可以被外部存取。

[[email protected] ~]# brctl ?
[[email protected] ~]# brctl showmacs br0
[[email protected] ~]# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.4487fc5bf0b0 no eth0
virbr0 8000.525400a64f66 yes virbr0-nic
系統預設產生介面主要用於NAT,如果要刪除可以先ifconfig virbr0 down介面,然後利用brctl delbr virbr0刪除掉

當然,有的時候我們在虛擬機器裡可能不僅僅使用一塊網卡,但是在新增網卡的時候會有無法識別的情況,我們如何應對呢,下面記錄一種方法,也許可以協助我們解決問題哦。
[[email protected] ~]#vi /etc/udev/rules.d/70-persistent-net.rules

# PCI device 0x10ec:0x8168 (r8169) 這個是新增網卡
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="c8:61:00:4F:CD:76", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"
# PCI device 0x10ec:0x8169 (r8169) 這個是舊的網卡
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:23:56:9A:E8:5C", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

將舊的eth0的配置資訊刪掉,然後將新增的eth1改成eth0,然後進入/etc/sysconfig/network-script/ 修改ifcfg-eth0的設定檔,更改mac地址(改成新增網卡的),然後重啟網路或者重啟系統配置既可以生效。

虛擬機器連線與查看  不知道虛擬機器安裝時如何去串連,win7安裝vnc用戶端去串連host建立的guest,但卻一閃而過,是不是host上一定要裝案頭環境才能去串連查看

 

串連kvm虛擬機器的幾種方法,以下是guest系統已安裝好,然後串連的方法
我現在知道的有3中方法:
1,ssh:如果虛擬機器網路沒有配置好就只能用下面兩種方法。
2,vnc:可以使用virt-viewer,或者vncviewer命令,但是virt-viewer我遇到了報錯,最終沒有解決。
Unable to connect to the graphic server localhost:5900
3,通過serial console串連。以下是在guest裡所做的
http://nixcraft.com/kernel-based-virtual-machine/15075-kvm-virsh-redirect-centos-redhat-console-serial-port.html
1)echo “ttyS0″ >> /etc/securetty
2)編輯/boot/grub/grub.conf檔案在kernel的末尾添加如下:
console=ttyS0
3)編輯 /etc/inittab檔案在末尾添加:
S0:12345:respawn:/sbin/agetty ttyS0 115200
4)重啟kvm虛擬機器,然後在host主機上面依次執行下面命令:
desktop # virsh --connect qemu:///system
virsh # console centos
5)斷行符號輸入使用者名稱密碼登陸即可。

 

預設情況下,QEMU會啟動一個VNC server連接埠(如上面的::1:5900),可以用vncviwer工具來串連到QEMU的VNC連接埠查看客戶機。
這裡可以使用“vncviewer :5900”命令串連到QEMU啟動的視窗

步驟

kvm支援的鏡像很多,常用的是原始鏡像(*.img),還有支援動態大小擴張的qocw2格式(首選)。
更優的選擇是系統硬碟如C盤用img格式,資料盤用qcow2格式以減少伺服器磁碟閑置空間。
qemu-img create -f raw test.img 10G
建立qcow2鏡像,但是其實際佔有磁碟大小僅為193K左右,而虛擬機器內部顯示磁碟大小為10G,也就是磁碟空間使用時才分配,即所謂動態擴張。
qemu-img create -f qcow2 ubuntu.qcow2 10G

要在一台host上跑起一個虛擬機器一般需要三個步驟:
第一步:建立虛擬機器鏡像
qemu-img create -f raw /images/vm1.raw 8G
qmeu-img建立的鏡像是一個疏鬆檔案,也就是說剛建立出來的檔案並沒有8G,它會隨著資料的增多慢慢增加,直到8G
第二步:建立guest系統(以下三種方式)
第三步:管理guest系統(啟動,關閉等操作)

虛擬機器建立

http://www.open-open.com/lib/view/open1346511443506.html 講的比較詳細
對於使用者或者管理員來說,虛擬機器的建立有著很多的方法,例如:kvm內建命令列工具、使用virsh命令來建立、使用具有圖形介面的virt-manager等等。
但是它們底層實現的原理都是一樣的,而且它們基本上都是通過開源的虛擬化庫Libvirt來開發的。下面就講一講三種使用者可以建立虛擬機器的方式。

宿主機叫host,虛擬機器叫guest

1.1 利用kvm內建命令列工具進行建立
dd if=/dev/zero of=rhel6u3.img bs=1M\ count=8192也可以用此命令建立一個硬碟檔案與qemu-img create命令效果一樣
[[email protected] ~]# /usr/libexec/qemu-kvm --help
[[email protected] ~]# qemu-img --help
[[email protected] ~]# qemu-img create -f raw test.img 10G
[[email protected] ~]# qemu-img create -f qcow2 centos65-64.qcow2 10G
[[email protected] ~]# /usr/libexec/qemu-kvm -boot order=dc -hda centos65-64.qcow2 -cdrom CentOS-6.5-x86_64-minimal.iso -m 512 -smp 2 -vnc :0 安裝系統
[[email protected] ~]# /usr/libexec/qemu-kvm -boot c -hda test.img -m 512  啟動系統

1.2 利用virsh命令列工具進行建立
virt-install是一個使用“libvirt” hypervisor 管理庫構建新虛擬機器的命令列工具,此工具使用串列控制台,SDL(Simple DirectMedia Layer)圖形或者VNC用戶端/伺服器,
支援基於命令列和圖形安裝。
編寫xml設定檔,下面介紹
virsh create test.xml
利用virsh工具建立虛擬機器必須編寫xml設定檔,該檔案指定虛擬機器的各項參數,比如虛擬機器名稱、磁碟鏡像的位置、記憶體大小、顯示配置等等。下面給出一個簡單的設定檔的例子。
#test.xml
<domain type=‘qemu‘>
<name>windowsXP</name>
<uuid></uuid>
<memory>500000</memory>
<currentMemory>500000</currentMemory>
<vcpu>1</vcpu>
<os>
<type arch=‘i686‘machine=‘pc‘>hvm</type>
<boot dev=‘hd‘/>
<boot dev=‘cdrom‘/>
</os>
<devices>
<emulator>/usr/bin/qemu-system-x86_64</emulator>
<disk type=‘file‘ device=‘cdrom‘>
<sourcefile=‘/home/turnupthesun/kvm/windowsXP.iso‘/>
<target dev=‘hdc‘/>
<readonly/>
</disk>
<disk type=‘file‘ device=‘disk‘>
<sourcefile=‘/home/turnupthesun/kvm/windowsXP.img‘/>
<target dev=‘hda‘/>
</disk>
<graphicstype=‘vnc‘ port=‘14‘ listen=‘127.0.0.1‘/>
</devices>
</domain>
下面介紹其中幾個比較重要的元素及屬性。
(1)<domain>元素的type屬性指定運行域的虛擬機器管理器,針對kvm應當選擇“qemu”。
(2)<name>元素的內容指定域的名字。
(3)<memory>元素和<currentMemory>元素的內容非別指定啟動時為域分配的最大記憶體和實際分配的記憶體。
(4)<os></os>元素之間的內容用來指定作業系統啟動的一些資訊。其中重複的<boot>元素形成了一個啟動順序表,比如例子中先從磁碟啟動,磁碟無法啟動再從光碟片啟動。
(5)<disk>元素的device屬性指明不同的裝置,<source>標籤的file屬性指明這些裝置的位置。

[[email protected] ~]# virsh
Welcome to virsh, the virtualization interactive terminal.

Type: ‘help‘ for help with commands
‘quit‘ to quit

virsh #
[[email protected] ~]# virsh -c qemu:///system list

virt-install -n centos.... 安裝虛擬機器
virt-viewer -c qemu:///system centosvnc遠程到虛擬機器安裝系統
如果這裡報錯無法串連虛擬機器,則安裝vncviewer
vncviewer 192.168.2.8
yum -y install dacpid安裝完虛擬機器系統則安裝acpid,不然無法通過virsh安裝關閉虛擬機器

virsh -c qemu:///system
virsh # list --all
virsh # start centos
virsh # shutdown centos正常關閉虛擬機器命令(如果虛擬機器沒有安裝dacpi命令則不能用shutdown關閉虛擬機器)
virsh # destroy centos強制關閉
# virt-clone --connect=qemu:///system -o centos -n kvm1 -f centos1.qcow2virt-clone命令複製虛擬機器

1,通過virsh互動無法shutdown關閉kvm虛擬機器,原因是kvm虛擬機器沒有安裝acpid。
2,vnc問題,virt-viewer報錯,只能使用vncviewer 127.0.0.1來串連虛擬機器。

virsh list //查看虛擬機器資訊
virsh destroy kvmtest1 //virsh destroy ID/NAME刪除虛擬機器
virsh start kvmtest1 //virsh start NAME啟動虛擬機器
virsh console kvmtest1 //virsh console ID/NAME控制台串連虛擬機器
//利用ctrl+]切換到host主機,host主機利用virsh console ID/NAME切換到guest系統。
虛擬機器的設定檔儲存在/etc/libvert/qemu目錄下,副檔名是xml,這檔案只能用virsh edit來編輯用vi無效,修改相應的檔案即可重新設定虛擬機器。

[[email protected] kvm]# virt-install -n centos65 -r 512 --disk path=/root/kvm/centos65-64.img -c CentOS-6.5-x86_64-minimal.iso --network bridge=br0 --graphics vnc,password=123456,port=5910
virt-install -v -n kvmtest1 -r 512 –vcpus=1 -l http://mirrors.163.com/centos/6.3/os/x86_64/ -nographics -virt-type=kvm -f /home/vmimages/kvmtest1.img -s 10 -w bridge:br0 -w bridge:br1 -extra-args=‘console=tty0 console=ttyS0,115200,n,8 ks=http://192.168.xx.xx/test1.cfg‘ -connect qemu:///system
-w 連網方式(birdge bridge:br0/nat bridge:virbr0)
-os-type=‘windows‘ -os-variant=win2k3 安裝windows最好加上這個否則會報錯,大家注意一個問題,如果你虛擬是WIN2003,那麼切勿在-net參數中使用model=e1000,否則HOST和GUEST之間不能PING通
virt-install工具安裝虛擬機器後,在目錄/etc/libvirt/qemu/下產生xml設定檔

1.3 如何通過圖形化介面virt-manager來建立虛擬機器
virt-manager是RedHat共用的一個開源虛擬化管理軟體,它是用Python編寫的GUI程式,底層使用了Libvirt對各類Hypervisor進行管理。
Virt-manger既虛擬機器管理器,是建立和管理虛擬用戶端的圖形工具。具體的操作步驟為:
a.從控制台視窗啟動這個工具,從root身份輸入virt-manager命令,點擊file菜單的”建立”選項。
b.virt-manager顯示兩種虛擬化方法:Qemu/KVM或者Xen,這裡選擇Qemu/KVM作為hypervisor。
c.選擇虛擬機器名稱和指定一種安裝方法,通過網路安裝伺服器或者本地CD/DVD驅動包括本地ISO檔案,在此我用本地ISO的安裝方法。
d.輸入本地ISO檔案路徑和檔案名稱(假設本地ISO的路徑就在根目錄下,名稱為Mini-BT3.6.1.iso)
e.設定虛擬機器使用的記憶體容量和處理器數量。
f.配置虛擬機器的儲存方法。對於儲存後端有兩種選擇:實體儲存體裝置或者使用之前建立的磁碟檔案。如果處於簡單測試,建立檔案作為儲存後端。當建立虛擬磁碟時,預設為10GB。
g.網路設定,在這裡選擇NAT方式。
這樣一個虛擬機器就開始啟動起來了,將會出現啟動介面,最後出現虛擬機器中作業系統的介面。

虛擬機器備份及恢複
備份:拷貝/etc/libvirt/qemu目錄下的xml設定檔,以及xml中設定的img檔案。
恢複:進入virsh,執行define

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.