一、架構及介紹
kvm(kernel-based virtual machine)它由 quramnet 開發,該公司于 2008年被 red hat 收購;
自linux 2.6.20后整合到內核,該內核模塊使得 linux 變成了一個 hypervisor層;
它依托于cpu虛擬化指令集,性能、安全性、兼容性、穩定性表現很好,每個虛擬化操作系統表現為單個系統進程,與linux安全模塊selinux安全模塊很好結合;
官方網站為http://www.linux-kvm.org/page/main_page
二、kvm的安裝
(1)安裝之前要查看cpu是否支持虛擬化,以下命令有輸出就代表支持虛擬化;如果確定cpu可以支持虛擬化,但以上命令沒有輸出結果,就進入bash加載虛擬化
intel cpu:
1
|
[root@localhost ~ ] #cat /proc/cpuinfo | grep vmx |
amd cpu:
1
2
|
[root@localhost ~ ] #cat /proc/cpuinfo | grep smv [root@localhost ~ ] # modprobe kvm #加載kvm模塊 |
(2)安裝方法
方法一:在安裝系統的時候,選擇桌面安裝,然后選擇虛擬化選項
方法二:在已有系統基礎上,安裝kvm所需軟件。
必安包:
1
2
|
qemu-kvm.x86_64 //kvm 模塊 qemu-img.x86_64 //qemu 組件,創建磁盤、啟動虛擬機等 |
可選工具包:
1
2
3
4
5
6
7
|
yum -y groupinstall "desktop" // 安裝gnome桌面環境 virt-manager // 圖形界面管理虛擬機工具 libvirt // 圖形化虛擬機管理工具 python-virtinst.noarch //python 組件,記錄創建vm時的xml文件 bridge-util.x86.64 // 網絡支持工具,橋接功能模塊 libguestfs-tools // 文件管理工具 acpid //virsh 命令依賴的服務,需要開機啟動的,他是一個服務,不是工具包 |
(3)驗證安裝結果
1
2
3
|
[root@localhost ~ ] # lsmod | grep kvm kvm_intel 54285 0 kvm 333172 1 kvm_intel |
三、kvm網絡
1、kvm虛擬機網絡介紹
在libvirt中運行kvm網絡有兩種方法:nat和bridge,默認是nat
(1)nat模式:即用戶模式,可以訪問外網,但是無法從外部訪問虛擬機網絡。
(2)bridge模式:即橋接模式,這種模式允許虛擬機像一臺獨立的主機一樣擁有網絡,外部的機器可以直接訪問到虛擬機內部,但需要網卡支持,一般有線網卡都支持。另外需要編輯網卡參數文件以支持橋接。
如圖所示,兩臺虛擬機的網卡對應著宿主機的兩個虛擬網卡,他們會以一個叫br0的網橋連接,虛擬機網卡和網橋連接后,就可以獲得設置和宿主機一個網段的ip地址的權限,因此就可以通過宿主機的網絡訪問外網。
2、設置kvm橋接網絡
1
2
3
4
5
6
7
8
9
|
[root@localhost network-scripts] # cat ifcfg-eth0 device=eth0 hwaddr=00:0c:29:a6:73:18 type =ethernet uuid=ea80305d-532a-4c31-883f-d9797e279e29 onboot= yes nm_controlled=no #關閉network manager對網卡的控制 bootproto=none #不需要給物理機設置ip地址 bridge= "br0" #設置eth0網卡支持網橋 |
1
2
3
4
5
6
7
8
9
10
11
|
[root@localhost network-scripts] # vi ifcfg-br0 添加: device=br0 type =bridge onboot= yes nm_controlled=no bootproto=none ipaddr=192.168.1.10 netmask=255.255.255.0 [root@localhost ~] # /etc/init.d/networkmanager stop #關掉網卡守護進程 [root@localhost ~] # service network restart |
四、管理虛擬機
創建虛擬機有兩種方法,一種基于命令行,一種基于圖形化界面。
1、圖形化界面管理
virt-manager是基于libvirt的圖像化虛擬機管理軟件,不同版本的virt-manager的界面和操作方法可能不同,他是創建kvm虛擬機的最簡單的方法。用這種方法必須基于之前我們安裝的軟件包virt-manager和libvirt.這里不做過多闡述。
創建虛擬機的步驟大致如下:
(1)創建存儲池并創建存儲卷,所謂存儲池其實就是一個文件夾,存儲卷就是kvm虛擬機的實體鏡像
(2)創建鏡像存儲池,用于存放操作系統鏡像,鏡像存儲池就是放操作系統鏡像的文件夾
(3)創建虛擬機,并設置相應參數
(4)可把時鐘偏移改為“localtime”
(5)可設置主機引導時啟動虛擬機
(6)可設置通過vnc遠程管理,keymap選項設為copy local keymap
2、命令行式創建虛擬機
使用命令創建虛擬機
--name 指定kvm虛擬機的名字
--ram 內存大小
--file 磁盤文件的路徑
--vcpus 指定虛擬機的 cpu 數量
--file-size=30(默認單位是g) 設置硬盤大小
--cdrom 光驅提供boot.iso 鏡像
--location 本地提供boot.iso 鏡像
--network network:default 設置網卡(使用默認)
--vnc --vncport=5911 連接桌面環境的vnc端口
1
|
[root@localhost ~] # virt-install --name=benet --ram=2048 --vcpus=1 --file=/var/lib/libvirt/images/benet.img --file-size=30 --location=/tmp/rhel6.5.iso --force & |
3、kvm命令集
想使用virsh命令必須開啟acpid服務
1
2
3
|
yum -y install acpid /etc/init .d /acpid start chkconfig acpid on |
虛擬機重要的兩個文件目錄
1
2
|
/etc/libvirt/qemu/ // 虛擬機配置文件目錄 /var/lib/libvirt/images/ // 虛擬機磁盤文件目錄 |
修改虛擬機的配置
1
2
|
vim /etc/libvirt/qemu/benet .xml // 修改虛擬機配置信息(用來修改系統內存大小、磁盤文件等信息) virsh edit benet // 通過virsh命令修改虛擬機配置信息 |
基本命令
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
virsh -h // 查看命令幫助 virsh list // 查看正在運行的虛擬機 virsh list --all // 查看所有虛擬機 virsh create /etc/libvirt/qemu/benet .xml // 通過配置文件啟動虛擬機系統實例 virsh start benet // 啟動,需要確認acpid服務安裝并運行 virsh shutdown benet // 關機,需要確認acpid服務安裝并運行 virsh destroy benet // 強制關機 virsh autostart benet // 隨宿主機自動啟動,此命令將創建 /etc/libvirt/qemu/autostart/ 目錄,目錄內容為開機自動啟動的系統。 virsh suspend benet // 掛起 virsh resume benet // 恢復 virsh dumpxml benet > /etc/libvirt/qemu/benet2 .xml // 導出虛擬機配置 virsh undefine benet // 刪除虛擬機,會發現配置文件被清除,但是磁盤文件不會被刪除 mv /etc/libvirt/qemu/benet2 .xml/ /etc/libvirt/qemu/benet .xml // 把備份的配置文件改回去,以便重新定義虛擬機 virsh define benet.xml // 重新定義虛擬機(因為磁盤文件沒有被刪除) |
4、kvm文件管理
通過文件管理可以直接查看、修改、復制虛擬機的內部文件、例如,當系統因為配置問題無法啟動時,可以直接修改虛擬機的文件。虛擬機磁盤文件有raw與qcow2格式,qcow2格式是kvm支持的標準格式,raw格式為虛擬磁盤文件通用格式。kvm虛擬機默認使用raw格式,raw格式性能最好,速度最快,其缺點是不支持一些新的功能,如鏡像,zlib磁盤壓縮、aes加密等,另外raw格式文件比qcow2格式文件大很多,將近15倍吧。
文件管理需要專門的工具才能完成,不同格式的磁盤有不同的文件管理工具。本地yum安裝libguestfs-tools后產生的命令行工具(這個工具可以直接讀取qcow2格式的磁盤文件,因此需要將raw格式的磁盤文件轉換成qcow2格式)
轉換磁盤格式方法:
1
2
3
4
5
6
7
8
|
qemu-img info /var/lib/libvirt/images/benet .img # 查看當前磁盤格式 virsh shutdown benet qemu-img convert -f raw -o qcow2 /var/lib/libvirt/images/benet .img /var/lib/libvirt/images/benet .qcow2 #轉換磁盤文件格式,轉化后多了一個新的qcow2文件,注意是新增了 virsh edit benet #修改benet的xml配置文件 …… // 省略部分內容 <disk type = 'file' device= 'disk' > <driver name= 'qemu' type = 'qcow2' chche= 'none' /> < source file = '/var/lib/libvirt/images/benet.qcow2' /> |
其他用法如下:
1
2
3
4
5
6
7
8
9
|
~] # virt-cat -a /var/lib/libvirt/images/benet.qcow2 /etc/sysconfig/network #查看命令,用法與cat命令類似,格式為:virt-cat 磁盤鏡像路徑 文件絕對路徑(最后要看的就是這個network文件) networking= yes hostname =benet ~] # virt-edit -a /var/lib/libvirt/images/benet.qcow2 /etc/resolv.conf #與vim用法基本一致 nameserver 8.8.8.8 ~] # virt-df -h benet #用于查看虛擬機磁盤信息 filesystem size used available use% benet: /dev/sda1 484m 32m 427m 7% benet: /dev/volgroup/lv_root 7.4g 1.6g 5.4g 5.4g 22% |
5、克隆與快照
1
2
3
4
5
6
7
8
|
[root@localhost ~] # virt-clone -o benet -n benet2 -f /var/lib/libvirt/images/benet2.img //虛擬機克隆 [root@localhost ~] # virsh snapshot-create benet //創建新快照 domain snapshot 1382572463 created [root@localhost ~] # virsh snapshot-delete benet 1382572463 //刪除快照 domain snapshot 1382572463 deleted [root@localhost ~] # virsh snapshot-revert benet 1382572463 //恢復虛擬機狀態 [root@localhost ~] # virsh snapshot-current benet //查看快照版本號 [root@localhost ~] # virsh snapshot-list benet //查看快照信息 |
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。