什麼是虛擬化html
虛擬化就是經過模擬計算機硬件(cpu,內存,硬盤,網卡)來實如今一臺物理服務器上運行同時多個不一樣的操做系統,
而且使每一個操做系統之間都是互相隔離的
爲何要學習虛擬化linux
目前國內的公有云底層採用的都是kvm虛擬化,通過這幾年的快速發展,kvm計算已經很是成熟穩定,
在任何linux發行版中,kvm都是標配,虛擬化已經成爲了一項必備的技能
虛擬化的應用場景web
場景1:只有一臺服務器,可是要運行多個版本的軟件,不一樣版本之間還相互衝突
場景2:機房的遷移,物理機在運輸過程當中容易損壞,致使數據丟失
場景3:openstack部署太難!步驟太繁瑣,如何體驗最新版的openstack
場景4:開發環境和測試環境常常損壞,運維重複裝系統
場景5:業務的擴張,須要快速部署10個如出一轍的集羣
環境準備shell
主機名 kvm01 IP 10.0.0.11 操做系統 centos7 內存 4G 硬盤 50G
在處理器設置中勾選 虛擬化 Intel VT-x...
優化:
kvm01在安裝系統的時候,不要使用自動分區,自動分區使用的LVM分區,在使用kvm的時候,特別卡!
關閉selinux
關閉firewalld
安裝kvm管理工具vim
安裝: yum install libvirt virt-install qemu-kvm -y
建議使用光盤安裝,會特別快:一、掛載光盤,二、yum源指定光盤.三、安裝 介紹: libvirt服務:管理kvm虛擬機的生命週期 virt-install工具:建立安裝虛擬機 qemu-kvm工具:使用qemu-img爲虛擬機提供硬盤
Linux上的幾種虛擬化軟件centos
qemu 軟件純模擬全虛擬化軟件,特別慢!
xen 性能特別好,須要使用專門修改以後的內核,兼容性差
KVM 須要cpu支持虛擬化,基於內核,不須要使用專門的內核,兼容行好,性能較好
準備條件緩存
在window上安裝TightVNC tightvnc官網:http://www.tightvnc.com vnc是一個跨平臺的遠程桌面軟件,待會安裝kvm虛擬機系統的時候使用 啓動libvirtd服務 systemctl start libvirtd.service systemctl status libvirtd.service
安裝kvm虛擬機安全
建議虛擬機內存不要低於1024M,不然安裝系統特別慢! 安裝以前建立好目錄,並帶入系統文件 virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name centos7 --memory 1024 --vcpus 1 --disk /opt/centos2.raw,format=raw,size=10 --cdrom /opt/CentOS-7-x86_64-DVD-1708.iso --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole
virt-install --virt-type kvm 指定類型
--os-type=linux 指定客戶機
--os-variant rhel7 發行版本
--name centos7
--memory 1024
--vcpus 1
--disk /opt/centos2.raw,format=raw,size=10
--cdrom /opt/CentOS-7-x86_64-DVD-1708.iso
--network network=default
--graphics vnc,listen=0.0.0.0
--noautoconsole
執行完命令後,趕忙使用TightVNC登錄正在安裝的虛擬機,默認端口是5900
10.0.0.11:5900
看到熟悉的安裝界面,倒計時中,趕忙上下鍵切換一下
回車,不用調整內核,網卡也是eth0
注意,最重要的一點,分區的時候,不要swap分區,選擇(i will configure partitioning)
而後不要選擇LVM,選擇標準分區(standard Partition)
添加一個根分區(/),done
KDUMP取消掉
網絡(NETWORK & HOSTNAME) 打開
時間選擇 上海
OK,進入安裝
而後設置密碼
列表list
virsh list 處於運行狀態的
virsh list --all 全部的
開機start
virsh start centos7(虛擬機名字)
關機shutdown
拔電源關機destroy
導出配置dumpxml
默認是輸出到屏幕virsh dumpxml >centos7.xml
配置文件位於/etc/libvirt/qemu/centos7.xml
/opt/下的raw文件是模板文件,只要這兩個文件在,就能夠任意遷移虛擬機
刪除undefine
推薦:先destroy,在undefine
導入配置define
virsh define centos7.xml
修改配置edit
有語法錯誤提示
重命名domrename
注意:低版本不支持
掛起suspend
恢復resume
查詢vnc端口號vncdisplay
新建的虛擬機的端口號會自增
virsh vncdisplay centos7
:1 表示5901
開機啓動autostart
爲何要使用console連接服務器
1:常規狀況下,安裝完 KVM 以後,可能都會經過 VNC 鏈接到 KVM 虛擬機裏面去修改 IP 等信息。
可是一旦虛擬機比較多的話,打開過多的端口會形成安全問題 2:不少時候,咱們是經過跳板機鏈接的宿主機,你的window和kvm宿主機沒有直達的路由,
這時候vnc都用不了,如何快速進入到 KVM 虛擬機裏面去排查問題呢?
配置console連接網絡
在centos7的kvm虛擬機中執行: grubby --update-kernel=ALL --args="console=ttyS0,115200n8" reboot重啓生效
步驟:
一、經過svn連接到虛擬機,查看IP
二、連接客戶機ssh root@192.168.122.206
三、執行上面的命令
四、reboot重啓
五、連接 virsh console centos7
六、ctrl+] 就會退回到客戶機
做業:centos6的虛擬機如何實現console連接?
kvm虛擬機的兩種經常使用格式
raw:裸格式,佔用空間比較大,不適合遠程傳輸,不支持快照功能,性能較好 qcow2:cow(copy on write)佔用空間小,適合傳輸,支持快照,性能比raw差一點點
qemu-img的經常使用命令
建立虛擬磁盤 qemu-img create test.raw 10G qemu-img create -f qcow2 test.qcow2 10G 查看虛擬磁盤信息 qemu-img info test.raw 調整虛擬磁盤容量大小 qemu-img resize test.raw +5G 磁盤格式轉換,轉換前關機 qemu-img convert -f raw -O qcow2 test.raw oldboy.qcow2
轉換完成後,修改配置文件(兩個地方,類型和路徑)
實戰
將現有的虛擬機的磁盤格式由raw轉換爲qcow2,並測試運行
快照管理
建立快照 virsh snapshot-create centos7 查看快照 virsh snapshot-list centos7 還原快照 virsh snapshot-revert centos7 --snapshotname 1516574134 刪除快照 virsh snapshot-delete centos7 --snapshotname 1516636570
快照空間只管建立,無論回收,刪除以後,空間還被佔用着
完整克隆 實現方法: virt-clone -o web01 --auto-clone 克隆後,新的虛擬機後面多了-lone
查看如下二者的配置文件的不一樣
virsh dumpxml web01 > web01.xml
virsh dumpxml web01-clone > web01-clone.xml
vimdiff web01.xml web01-clone.xml
名字
uuid
磁盤文件
mac地址
連接克隆 實現方法: shell腳本
手動實現完整克隆的步驟(100%成功)
1:克隆虛擬磁盤文件 cp centos7.qcow2 web03.qcow2 2:生成新的虛擬機配置文件 name修改 uuid刪掉 disk路徑/opt/web03.qcow2 mac地址刪除 3:測試啓動 virsh define web01.xml
連接克隆(佔用空間特別的小)
qemu-img create -f qcow2 -b cetnos7.qcow2 web04.qcow2 virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name web02 --memory 1024 --vcpus 1 --disk /opt/web04.qcow2,format=qcow2,size=10 --boot hd --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole
連接克隆和完整克隆的區別就在於第一步,完整複製和撞見回血文件的區別
爲何要使用橋接網絡
咱們運行虛擬機的目的是,在虛擬機中運行咱們的業務,如今業務所須要的服務都已經運行了,
但是除了在宿主機上能訪問,其餘人都訪問不了!!!
建立橋接網絡
建立橋接網絡 1:virsh iface-bridge eth0 br0
若是報錯,沒法成功修改,能夠本身手工建立br和修改eth0 基於橋接網絡建立虛擬機 2:virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name web04 --memory 1024 --vcpus 1 --disk /opt/web04.qcow2,format=qcow2,size=10 --boot hd --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole
virt-install --virt-type kvm
--os-type=linux
--os-variant rhel7
--name web04
--memory 1024
--vcpus 1
--disk /opt/web04.qcow2,format=qcow2,size=10
--boot hd
--network bridge=br0 這裏指定了橋接網卡
--graphics vnc,listen=0.0.0.0
--noautoconsole
經過vnc鏈接到虛擬機,查看ip,已經變成了10.0.0.131
將已有的虛擬機改成橋接網絡
首先是關機狀態
1:virsh edit centos7 <interface type='bridge'> <mac address='52:54:00:55:aa:fa'/> <source bridge='br0’/> 這裏的default是系統配置的網路,能夠經過virsh進入命令命令行輸入net-edit default看到
若是促使dhcp分配的IP,就要修改一下配置 2:修改虛擬機ip地址 /etc/sysconfig/network-scripts/ifcfg-eth0
修改:
BOOTPROTO="static"
刪除UUID
添加:
IPADDR="10.0.0.132"
NETMASK="255.255.255.0"
GATEWAY="10.0.0.254"
DNS=「223.5.5.5」
保存,重啓網絡
經過vnc鏈接到虛擬機,查看ip,已經變成了10.0.0.132
kvm NAT模式網絡原理圖
kvm橋接網絡原理圖
什麼是熱添加技術
熱添加技術就是不停機的狀況下,在線熱添加硬盤,內存,cpu,網卡等設備,
熱添加技術通常都是在虛擬機資源不夠了,又不能停機的狀況下使用的,
熱添加技術是虛擬機相對於物理機的一個很大的優點,它讓資源分配變得更靈活!
熱添加的類型
1.熱添加硬盤 建立硬盤
qemu-img create -f qcow2 centos7-add01.qcow2 5G
熱添加硬盤
virsh attach-disk web01 /opt/centos7-add01.qcow2 vdb --live --cache=none --subdriver=qcow2
vdb:指定硬盤的名字,由於已經有vba了
--live 熱添加
cache=none 不分配緩存
要使用須要給分區
擴展:硬盤擴容
虛擬機卸載硬盤
宿主機剝離硬盤virsh detach-disk
重置以前的硬盤
掛載----看到容量沒變---刪除原分區---修改分區表,讓使用全部的空間
---partprobe /dev/vdb(通知內核,調整)---查看仍是沒變
---xfs_growfs /mnt(由於用的是xfs,若是是 ft4 用resize2fs /mnt
---OK!
2.熱添加網卡 添加網卡
virsh attach-interface web04 --type bridge --model virtio --source br0
也能夠指定network --source 就是default
必定要指定virtio
永久修改,要修該配置文件
在複製同樣的,刪除MAC,修改類型
3.熱添加cpu 安裝參數:
添加參數maxvcpus=4
virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name web04 --memory 1024 --vcpus 1,maxvcpus=4 --disk /opt/web04.qcow2,format=qcow2,size=10 --boot hd --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole
執行報錯:系統的緣由
解決:maxvcpus 加了一個v ,上面的命令是正確的,不會報錯
熱添加cpu
virsh setvcpus web04 --count=2
永久修改,要修該配置文件
4.熱添加內存
添加了參數maxmemory=2048
安裝參數
virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name web04 --memory 512,maxmemory=2048 --vcpus=1,maxvcpus=2 --disk /opt/web04.qcow2,format=qcow2,size=10 --boot hd --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole
熱添加內存
virsh setmem web04 1G
永久生效要改配置文件
什麼是熱遷移
相比KVM虛擬機冷遷移中須要拷貝虛擬機虛擬磁盤文件,kvm虛擬機熱遷移無需拷貝虛擬磁盤文件,
可是須要遷移到的宿主機之間須要有相同的目錄結構虛擬機磁盤文件,也就是共享存儲,
此次經過你們熟悉的nfs來實現,固然也能夠採用Glusterfs等分佈式文件系統來實現.
爲何要用熱遷移
上一節咱們學習了在線熱添加技術,就很容易理解了。假設我初級只有一臺16G內存的物理機,
爲了充分利用資源,我可能運行了8臺2G內存的虛擬機,而後訪問量增長,虛擬機的2G內存不夠用了,
須要擴容,擴容以前咱們就須要先遷移一部分虛擬機到其餘宿主機上了,有的業務特別核心,
暫停的時間不能太長,這時候就要用到咱們的熱遷移了。
熱遷移的過程
假設咱們有2臺宿主機kvm01和kvm02,在kvm01上掛起虛擬機vm01,
發送vm的虛擬機配置文件和運行時內存中的數據到kvm02, 接受完畢,kvm02恢復vm01,熱遷移完成。
遷移環境要求
步驟
一:在kvm01和kvm02上安裝kvm和nfs,配置橋接網卡 二:在nfs01上安裝配置nfs 三:kvm01和kvm02掛載共享目錄/opt 四:安裝一臺基於橋接模式的虛擬機
/data目錄下上傳準備好的磁盤和配置文件
安裝系統,指定咱們本身的磁盤文件和配置
五:在kvm01上安裝圖形界面、vnc服務端和virt-manager 六:啓動vnc服務端 七:使用vnc鏈接宿主機,使用virt-manager進行遷移 說明:詳情能夠訪問的博客https://www.qstack.com.cn/archives/368.html
服務器宕機、硬盤壞了、網卡換了,就須要進機房了
通常建議安裝遠程控制卡,除非斷網了,斷電了,其餘的均可以搞定
進入以前要預定,
服務器少的話,能夠一臺一臺的插線檢查,多的話可使用KVM(keyboard video manager)
一、實現centos6的kvm虛擬機console登錄控制
1、安裝kvm虛擬化軟件 2、新建一個內存1G網卡橋接本機eth0 kvm虛擬機 3、裝一臺基於centos6系統的kvm虛擬機 4、實現使用console登錄控制
二、實現將ESXI5.5中的centos7虛擬機遷移到kvm上
1:安裝ESXI5.5 2:在ESXI5.5上安裝一臺centos7的虛擬機 3:將centos7的虛擬機導出爲ova文件,並在kvm上進行轉換和導入,啓動測試