KVM配置及維護

kvm使用場景


1.公司測試環境/開發環境node

測試開發環境可使用配置低點的物理機就能夠mysql

2.公司生產環境linux

通常小公司沒有私有云或容器團隊,運維人員可能就1-2個,而後公司也不捨得花錢買商業化的私有云。ios

那麼在這種狀況下搞一臺或多臺高配的物理機裏面裝多個虛擬機,能夠設置基礎的虛擬機模板或根據不一樣業務設置不一樣的虛擬機模板,完成初步的環境標準,便於之後自動化運維。          sql

KVM介紹   

KVM(Kernel-based Virtual Machine)是一個linux的內核模塊,如今已是內核自帶默認編譯,不須要單獨安裝。主要負責控制cpu和內存跟內核的交互調度等工做,工做在內核態。vim

KVM須要CPU中虛擬化功能的支持,只可在具備虛擬化支持的CPU上運行,即具備VT功能的Intel CPU和具備AMD-V功能的AMD CPU。windows

KVM 虛擬化特性: centos

  • 嵌入到Linux正式Kernel(提升兼容性)
  • 代碼級資源調用(提升性能)
  • 虛擬機就是一個進程(內存易於管理)
  • 直接支持NUMA技術(提升擴展性)
  • ---------- RedHat收購KVM -----------
  • 保持開源發展模式 更好的商業支持及服務保障

虛擬機鏡像:安全

  • 全鏡像模式-RAW
  • 稀疏模式-QCOW2

KVM 管理工具:服務器

Libvirt介紹

libvirt 提供一種虛擬機監控程序不可知的 API 來安全管理運行於主機上的客戶操做系統。libvirt 自己不是一種工具, 它是一種能夠創建工具來管理客戶操做系統的 API。libvirt 自己構建於一種抽象的概念之上。它爲受支持的虛擬機監控程序實現的經常使用功能提供通用的 API。libvirt 起初是專門爲 Xen 設計的一種管理 API,後來被擴展爲可支持多個虛擬機監控程序。

QEMU介紹

有兩種主要運做模式:
* User mode模擬模式,亦便是用戶模式。QEMU能啓動那些爲不
同中央處理器編譯的Linux程序。而Wine及Dosemu是其主要目標。
* System mode模擬模式,亦便是系統模式。QEMU能模擬整個電腦系統,
包括中央處理器及其餘周邊設備。它使得爲跨平臺編寫的程序進行測試及除錯工做變得容易。
其亦能用來在一部主機上虛擬數部不一樣虛擬電腦。

配置步驟


CentOS 7.2 系統最小化安裝
一,關閉Selinux,Firewalld,Networkmanager,配置dns服務器ip
[root@192-168-x-x img]# systemctl disable NetworkManager
[root@192-168-x-x img]# systemctl disable firewalld
[root@192-168-x-x img]# grep ^SELINUX /etc/selinux/config 
SELINUX=disabled
[root@192-168-x-x network-scripts]# more /etc/resolv.conf 
nameserver 114.114.114.114
nameserver 8.8.8.8
二,配置阿里雲yum源
rpm -ivh http://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm
三,安裝系統經常使用軟件包
yum install net-tools vim screen mtr  nc nmap tree lrzsz open-ssl-devel gcc glibc gcc-c* make zip dos2unix  systat mysql lsof tcpdump ntpdate -y
四,物理機確認bios確認是否開啓虛擬機技術

虛擬化 Inter VT-x/EPT(內存虛擬化)或 AMD-V/RVI(V) 開啓

grep -E '(vmx|svm)' /proc/cpuinfo
五,安裝kvm相關的軟件包

kvm是內核虛擬機,須要加載內核模塊,libvirtd是用於管理kvm虛擬機

yum install -y qemu-kvm  qemu-kvm-tools  libvirt
六,啓動libvirtd
systemctl  start libvirtd
systemctl  enable libvirtd
七,安裝文件存放的目錄,qemu目錄是存放虛擬機xml文件

xml是libvirt 自動生成,xml裏面的virtio是半虛擬化渠道,hvm是硬件虛擬機,還有一些其餘的虛擬機配置信息

[root@192-168-x-x libvirt]# ls
libvirt-admin.conf  libvirt.conf  libvirtd.conf  lxc.conf  nwfilter  qemu  qemu.conf  qemu-lockd.conf  storage  virtlockd.conf  virtlogd.conf
[root@192-168-x-x libvirt]# pwd
/etc/libvirt
八,啓動libvirtd後,會自動建立virbr0 橋接網卡 IP地址永遠都是192.168.122.1

能夠用ifconfig命令查看

#ifconfig
......
virbr0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255
        ether 52:54:00:5c:f1:a5  txqueuelen 0  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
九,查看dnsmasq進程,dns和dhcp功能 幫助分配虛擬機,dnsmasq無需配置啓動就行
[xiewenming@192-168-x-x ~]$ ps aux |grep dnsmasq
nobody     2992  0.0  0.0  15544   152 ?        S    Mar14   0:36 /sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/libexec/libvirt_leaseshelper
root       2993  0.0  0.0  15516     4 ?        S    Mar14   0:00 /sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/libexec/libvirt_leaseshelper
xiewenm+  35304  0.0  0.0 112652   960 pts/3    S+   15:38   0:00 grep --color=auto dnsmasq

安裝virt-install,virt-edit,virt-manager,tigervnc-server和tigervnc相關的包,分別用於 安裝,編輯,管理,vnc服務來管理維護虛擬機

十,libvirt 管理kvm虛擬機

能夠提供接口 virsh等 底層都是libvirt libvirtd服務中止 kvm正常,只是管理不了,virsh是用C寫的

yum install -y virt-install libguestfs-tools-c  virt-manager tigervnc-server tigervnc
十一,配置網卡橋接方法一

使用命令重啓服務器或重啓網絡後配置丟失 (通常用於調試用)

brctl addbr br0
brctl addif br0 eth0 #(執行這一步會斷網,能夠把全部步驟寫在一個腳本里)
ip addr del dev eth0 192.168.x.x/24 
ifconfig br1 192.168.x.x/24 up
route add default gw 192.168.x.1
十二,配置網卡橋接方法二

橋接信息寫到配置文件裏面,下面以橋架網卡1爲例

[root@192-168-x-x network-scripts]# more ifcfg-br1 
TYPE=Bridge
BOOTPROTO=none
DEVICE=br1
ONBOOT=yes
IPADDR0=192.168.x.x
PREFIX0=24
GATEWAY0=192.168.x.1
[root@192-168-x-x network-scripts]# more ifcfg-eth1 
DEVICE=eth1
TYPE=Ethernet
ONBOOT=yes
BRIDGE=br1
[root@192-168-x-x network-scripts]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.x.10    0.0.0.0         UG    0      0        0 br1
169.254.0.0     0.0.0.0         255.255.0.0     U     1004   0        0 br0
169.254.0.0     0.0.0.0         255.255.0.0     U     1005   0        0 br1
192.168.x.0     0.0.0.0         255.255.255.0   U     0      0        0 br1
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0
十三,安裝圖形桌面方便vnc管理
yum groupinstall "X Window System"
yum install gnome-classic-session gnome-terminal nautilus-open-terminal control-center liberation-mono-fonts
unlink /etc/systemd/system/default.target ln -sf /lib/systemd/system/graphical.target /etc/systemd/system/default.target
十四,配置vncserver及密碼默認端口是從5901開始
[root@192-168-x-x network-scripts]# vncpasswd 
Password:     #設置密碼
[root@192-168-x-x network-scripts]# vncserver 
New '192-168-x-x.xxx.com:1 (root)' desktop is 192-168-x-x.xxx.com:1
Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/192-168-x-x.xxx.com:1.log
[root@192-168-x-x network-scripts]# netstat -an|grep 0.0.0.0:59
tcp        0      0 0.0.0.0:5901            0.0.0.0:*               LISTEN  
十五,vnc客戶端鏈接管理

 

十六,登錄之後,打開控制檯使用virt-manager打開虛擬機管理界面

 

十七,進行虛擬機維護

能夠關機,重啓,刪除,增長刪除配置,安裝系統等等 ,也能夠支持安裝Windows系統虛擬機

十八,經常使用的維護命令

可使用命令安裝虛擬機

virt-install建立虛擬機,不熟悉能夠用virt-install --help查看幫助命令

virt-intall --virt-type kvm --name CentOS-7-x86_64 --ram 2048 --cdrom=/Data/CentOS-7-x86_64-DVD-1503-01.iso \
--disk path=/Data/CentOS-7-x86-_64.raw --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole

用VNC客戶端連接(60s內) 默認從5900開始,客戶端安裝截圖略....我通常都經過vnc而後再用virt-manager進行管理虛擬機

brctl show #查看橋接網卡信息
virsh edit vname.xml #修改xml文件
virsh shutdown vname #關閉虛擬機
virsh start vname #啓動虛擬機
virsh list --all #列出所有虛擬機
virsh dumpxml vname > vname.bak.xml #備份
qemu-img convert -f raw -O qcow2 vname test.qcow2 #鏡像文件格式轉換
qemu-img create -f raw node-192.168.3.30-centos-7.2.disk 50G #建立磁盤鏡像命令
virsh undefine node1.xml (刪除虛擬機域,生產環境不用此命令,很是危險)
virt-clone -o centos7_mini -n centos7_mini15 --auto-clone #克隆mini,新克隆的爲mini15
-o #原始機名字,必須爲關閉或暫停狀態
-n #新客戶機的名稱
--auto-clone #從原始客戶機配置中自動生成克隆名稱和存儲路徑
--replace #不檢查命名衝突,覆蓋任何使用相同名稱的客戶機
-f #能夠指定克隆後的主機鏡像放在指定目錄下

virsh autostart xxx #讓子機隨宿主機開機自動啓動
virsh autostart --disable xxx #解除自動啓動

virt-install #創建kvm虛擬機
virsh list #查看正在運行的KVM虛擬機
virsh start name #啓動KVM虛擬機
virsh shutdown name #正常關閉KVM虛擬機
virsh destroy name #強制關閉KVM虛擬機(相似於直接斷電)
virsh suspend name #掛起KVM虛擬機
virsh resume name #恢復掛起的KVM虛擬機
virsh dumpxml name #查看KVM虛擬機配置文件,能夠把輸出的內容定義到xml裏,用來克隆遷移用。
virsh edit name #編輯KVM虛擬機的xml配置文件
virsh define /etc/libvirt/qemu/name.xml #定義註冊虛擬機,須要先查看xml文件對應的鏡像,img等路徑是否存在或修改指定路徑
virsh undefine name #完全刪除KVM虛擬機,不可逆,若是想找回來,須要備份/etc/libvirt/qemu的xml文件
virsh attach-disk centos7_mini15 /home/disk_data/centos7_mini15.img vdb #分離虛擬機硬盤
virsh detach-disk centos7_mini15 /home/disk_data/centos7_mini15.img vdb#爲虛擬機添加硬盤

遇到的一些問題  


1.以前用CentOS7.3的時候windows虛擬機安裝的時候黑屏,一直沒有找到解決辦法,最後沒有辦法就降到CentOS7.2,全部建議生產環境不用使用CentOS7.3部分服務有兼容的不太好

2.磁盤滿了部分虛擬機進程被系統kill掉

3.沒有可用內存時,也會出現部分虛擬機被系統kill掉,嚴重的狀況下物理服務器可能會自動重啓(全部在使用的過程當中資源儘可能不要超配)

4.有時可能會出現橋接的網卡和時間配置的網卡不是同一個 能夠用ifconfig -a查看

相關文章
相關標籤/搜索