1、檢查環境java
一、系統要求:
處理器需求:須要一臺能夠運行最新linux內核的Intel處理器(含VT虛擬化技術)或AMD處理器(含SVM安全虛擬機技術的AMD處理器,也叫AMD-V)。python
[root@laks ~]# cat /etc/redhat-release CentOS release 6.5 (Final)
二、檢查CPU:linux
[root@laks ~]# egrep 'vmx|svm' /proc/cpuinfo flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc up arch_perfmon pebs bts xtopology tsc_reliable nonstop_tsc aperfmperf unfair_spinlock pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch ida arat epb xsaveopt pln pts dts tpr_shadow vnmi ept vpid fsgsbase bmi1 avx2 smep bmi2 invpcid
若是輸出的結果包含VMX,它是Intel處理器虛擬機技術標誌:若是包含SVM,它是AMD處理器虛擬機技術的標誌,若是你什麼都沒有獲得,那應你的系統並無支持虛擬化的處理,不能使用KVM,另處linux發行版本必須在64bit環境中才能使用KVM。centos
有的新手親,輸入這個沒有任何反應,那你注意一下你的虛擬機是否開啓虛擬化api
OK!個人有vmx,表示它支持虛擬化安全
2、更新系統網絡
$ yum update $ yum upgrade
3、安裝KVMapp
$ yum -y install kvm python-virtinst libvirt bridge-utils virt-manager qemu-kvm-tools virt-viewer virt-v2v
禁用防火牆dom
[root@laks ~]# vi /etc/sysconfig/selinux SELINUX=disabled [root@laks ~]# reboot 重啓
重啓後確認libvirtd是否正常啓動ide
[root@laks ~]# /etc/init.d/libvirtd restart 正在關閉 libvirtd 守護進程: [肯定] 啓動 libvirtd 守護進程:2015-12-17 07:53:45.880+0000: 2791: info : libvirt version: 0.10.2, package: 54.el6_7.3 (CentOS BuildSystem <http://bugs.centos.org>, 2015-12-15-15:28:08, c6b8.bsys.dev.centos.org) 2015-12-17 07:53:45.880+0000: 2791: warning : virGetHostname:2279 : getaddrinfo failed for 'laks': 域名解析暫時失敗 [肯定]
檢查KVM是否加載成功
顯示結果以下表示kvm模塊已經加載,若是沒有輸出信息,則表示沒有加載成功:
[root@laks ~]# lsmod | grep kvm kvm_intel 55656 0 kvm 345460 1 kvm_intel
檢查KVM是否成功安裝
[root@laks ~]# virsh list --all Id 名稱 狀態 ----------------------------------------------------
各版本查詢
[root@laks ~]# virt-install --version 0.600.0 [root@laks ~]# virsh --version 0.10.2
修改qemu.conf配置
[root@laks ~]# vi /etc/libvirt/qemu.conf vnc_listen = "0.0.0.0"
4、配置網絡橋接
一、 安裝tunctl:
$ yum install -y tunctl
二、禁用網絡管理器:
$ chkconfig NetworkManager off ##和橋接有衝突,要關閉 $ service NetworkManager stop
三、修改eth0爲物理網口,br0爲橋接網口配置文件:
[root@laks ~]# cd /etc/sysconfig/network-scripts/ [root@laks network-scripts]# cp ifcfg-eth0 ifcfg-br0 [root@laks network-scripts]# cat ifcfg-br0 DEVICE=br0 TYPE=Bridge BOOTPROTO=static IPV6INIT=no ONBOOT=yes IPADDR=10.0.0.4 NETMASK=255.255.255.0 GATEWAY=10.0.0.2 DNS1=8.8.8.8 DELAY=0 [root@laks network-scripts]# cat ifcfg-eth0 DEVICE=eth0 TYPE=Ethernet BRIDGE=br0 BOOTPROTO=none IPV6INIT=no ONBOOT=yes
附加說明:這裏配置成橋接方式,實際上本機的數據包發送是經過br0發送的,br0的TYPE是Bridge,其它的信息跟配置一個物理網卡同樣,本機的 eth0經過橋接到br0(經過BRIDGE指定)進行通訊,它根本不須要配置IP信息,實際上數據發送仍是經過本機的物理網卡。
四、重啓網絡
[root@laks network-scripts]# service network restart
五、查看橋接網絡
[root@laks network-scripts]# brctl show bridge name bridge id STP enabled interfaces br0 8000.000c29b3f99b no eth0 pan0 8000.000000000000 no virbr0 8000.5254003d8618 yes virbr0-nic
接口eth0經過br0進行橋接。birbr0-nic經過virbr0進行橋接,這個是默認的設置,當使用NAT時使用。
5、安裝vnc
$ yum install vnc-server tigervnc -y $ vncpasswd Password: Verify://這個是重複一遍密碼的意思
6、使用virt-install 工具安裝guest 系統
$ virt-install --name=centos64 --ram 1024 --vcpus=2 --disk path=/var/lib/libvirt/images/centos64.img,size=10 --accelerate --cdrom /mnt/CentOS64.iso --graphics vnc,password=123456,port=5920 --network bridge=br0 --force --autostart 開始安裝...... 建立域...... | 0 B 00:00 沒法打開顯示: 運行 'virt-viewer --help' 來查看可用命令行選項的完整列表 域安裝仍在進行。您能夠從新鏈接 到控制檯以便完成安裝進程。
查看啓動的虛擬機
[root@laks ~]# virsh list Id 名稱 狀態 ---------------------------------------------------- 1 centos64 running
而後進入虛擬機顯示界面,打開終端,執行
[root@laks ~]# vncviewer 10.0.0.4:5920
輸入密碼後將出現虛擬機安裝引導,是圖形界面的,在此不作贅述
若是安裝的很差,你想要刪除某個虛擬機,執行
$ virsh destroy centos64 $ virsh undefine centos64
這就將這個虛擬機刪除了
若是想自定義安裝虛擬機的安裝地址,以下操做
$ mkdir -p /kvm/images [root@laks images]# qemu-img create -f qcow2 -o preallocation=metadata /kvm/images/centos.qcow2 10G Formatting '/kvm/images/centos.qcow2', fmt=qcow2 size=10737418240 encryption=off cluster_size=65536 preallocation='metadata'
在/kvm/images下安裝虛擬機
$ virt-install --name=centos64 --ram 1024 --vcpus=2 -f /kvm/images/centos.qcow2 --cdrom /mnt/CentOS64.iso --graphics vnc,password=123456,port=5920 --network bridge=br0 --force --autostart 開始安裝...... 建立域...... | 0 B 00:00 沒法打開顯示: 運行 'virt-viewer --help' 來查看可用命令行選項的完整列表 域安裝仍在進行。您能夠從新鏈接 到控制檯以便完成安裝進程。
重複上面動做,安裝虛擬機
7、查看guest 系統
當咱們安裝完成後,guest系統進行重啓,個人電腦不知道爲何沒有重啓起來,經過virsh list查看,發現虛擬機沒有了,查看/etc/libvirt/qemu,發現有centos64.xml,說明虛擬機還在,我想應該是沒有啓動起來,因此執行
[root@laks qemu]# virsh start centos64 域 centos64 已開始 [root@laks qemu]# virsh list Id 名稱 狀態 ---------------------------------------------------- 2 centos64 running
OK!再次在guest系統中進行鏈接
$ vncviewer 10.0.0.4:5920
OK!成功看到登陸界面了,自此,guest系統創建完成。
8、一些經常使用操做
一、能夠經過virt-viewer查看安裝狀態:
$ virt-viewer name
二、使用virt-install 工具安裝虛擬機後,在目錄/etc/libvirt/qemu/下生成xml 配置文件。
$ cd /etc/libvirt/qemu $ cat centos64.xml
<!-- WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE OVERWRITTEN AND LOST. Changes to this xml configuration should be made using: virsh edit centos64 or other application using the libvirt API. --> <domain type='kvm'> <name>centos64</name> <uuid>fa518652-d19a-040e-3544-54cfd8c33c28</uuid> <memory unit='KiB'>1048576</memory> <currentMemory unit='KiB'>1048576</currentMemory> <vcpu placement='static'>2</vcpu> <os> <type arch='x86_64' machine='rhel6.6.0'>hvm</type> <boot dev='hd'/> </os> <features> <acpi/> <apic/> <pae/> </features> <clock offset='utc'/> <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' cache='none'/> <source file='/kvm/images/centos.qcow2'/> <target dev='hda' bus='ide'/> <address type='drive' controller='0' bus='0' target='0' unit='0'/> </disk> <disk type='block' device='cdrom'> <driver name='qemu' type='raw'/> <target dev='hdc' bus='ide'/> <readonly/> <address type='drive' controller='0' bus='1' target='0' unit='0'/> </disk> <controller type='usb' index='0' model='ich9-ehci1'> <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x7'/> </controller> <controller type='usb' index='0' model='ich9-uhci1'> <master startport='0'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0' multifunction='on'/> </controller> <controller type='usb' index='0' model='ich9-uhci2'> <master startport='2'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x1'/> </controller> <controller type='usb' index='0' model='ich9-uhci3'> <master startport='4'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x2'/> </controller> <controller type='ide' index='0'> <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/> </controller> <interface type='bridge'> <mac address='52:54:00:d2:8d:4f'/> <source bridge='br0'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> </interface> <serial type='pty'> <target port='0'/> </serial> <console type='pty'> <target type='serial' port='0'/> </console> <input type='mouse' bus='ps2'/> <graphics type='vnc' port='5920' autoport='no' passwd='123456'/> <video> <model type='cirrus' vram='9216' heads='1'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/> </video> <memballoon model='virtio'> <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/> </memballoon> </devices> </domain>
啓動虛擬機
$ virsh start centos64 啓動虛擬機 reboot start shutdown $ virsh list 列出當前運行的虛擬機 $ setenforce 0 關閉防火牆 [root@laks qemu]# ll /var/lib/libvirt/qemu 總用量 12 srwxr-xr-x 1 qemu qemu 0 12月 18 11:44 centos64.monitor drwxr-xr-x 2 root root 4096 12月 17 15:52 dump drwxr-xr-x 2 qemu qemu 4096 12月 17 15:52 save drwxr-xr-x 2 qemu qemu 4096 12月 17 15:52 snapshot ##這裏的文件,是libvirtd在重啓後,虛擬機也隨着自動重啓。
[root@laks ~]# top -d 1 | grep kvm 36714 qemu 20 0 1453m 461m 5628 S 2.0 47.1 2:34.44 qemu-kvm 36714 qemu 20 0 1453m 461m 5628 S 3.0 47.1 2:34.47 qemu-kvm 36714 qemu 20 0 1453m 461m 5628 S 3.0 47.1 2:34.50 qemu-kvm ##動態查詢kvm資源佔用狀況,每一臺VM,對應一個qemu-kvm進程
[root@laks ~]# ps -aux | grep kvm ## 截取的kvm進程信息
9、其餘問題
一、圖形化配置:從菜單中啓動,或者運行virt-manager進入圖形管理界面,比較簡單,不過img的位置須要注意一下,kvm安裝後會有一個默認位置,不注意的話容易佔滿空間。或者直接硬盤分區時單獨給/var分一個區。
二、虛擬機從新配置:
虛擬機的配置文件保存在/etc/libvirt/qemu目錄下,擴展名是xml。修改相應的文件便可從新配置虛擬機。
三、虛擬機備份及恢復:
備份:拷貝/etc/libvirt/qemu目錄下的xml配置文件,以及xml中設置的img文件。
恢復:進入virsh,執行define 目錄下的xml文件路徑
virsh # define /etc/libvirt/qemu/winxp.xml
四、開機自動啓動虛擬機:
[root@vfeelit qemu]# virsh autostart Winxp
五、克隆KVM虛擬機:
[root@vfeelit ~]# virt-clone -o Winxp -n winxpclong -f /var/lib/libvirt/images/winxpclong.img
(-o 原始客體的名稱,-n新客戶端的名稱,-f做爲新客戶端磁盤映像的新文件)
六、虛擬機意外關機報下述錯誤:
[root@vfeelit qemu]# virsh start winxp
錯誤:開始域 winxp 失敗
錯誤:Unable to read from monitor: Connection reset by peer
解決方法:virsh managedsave-remove winxp
Virsh語法參考:
Autostart 自動開始一個域
Create 從一個 XML 文件建立一個域
Define 從一個 XML 文件定義(但不開始)一個域
edit 編輯某個域的 XML 配置
shutdown 關閉一個域
start 開始一個(之前定義的)非活躍的域
reboot 從新啓動一個域
suspend 掛起一個域
resume 從新恢復一個域
vncdisplay vnc 顯示
使用save來備份當前虛擬機的狀態:
[root@vfeelit images]# virsh save –bypass-cache RedHat /var/lib/libvirt/images/test.img –running
上面這個命令將RedHat的當前狀態保存到/opt/vm2_save文件中。–running參數表示下次restore回來的時候可以自動啓動RedHat。
這個命令會致使RedHat被關閉。
如今還原:必須先關閉虛擬機[root@vfeelit images]# virsh shutdown RedHat[root@vfeelit images]# virsh restore /var/lib/libvirt/images/test.img –bypass-cache –running (還原時不要指定虛擬機名稱)