虛擬化KVMhtml
1.虛擬化介紹linux
VMware Workstation就是虛擬化windows
虛擬化簡單講,就是把一臺物理計算機虛擬成多臺邏輯計算機,每一個邏輯計算機裏面能夠運行不一樣的操做系統,相互不受影響,每一個邏輯系統都是獨立的存在,這樣就能夠充分利用物理硬件的資源,並且還能夠自由分配資源。centos
關鍵詞Hypervisor(VMM) 虛擬機管理器(用來管理邏輯計算機的)安全
虛擬化技術分爲全虛擬化和半虛擬化bash
早期的CPU硬件不支持虛擬化,虛擬機上的操做系統(guestos)要想使用cpu資源,須要經過VMM來翻譯指令,這個過程比較耗費資源,這種虛擬化技術叫作全虛擬化 (VMware Workstation)服務器
半虛擬化技術經過修改guestos內核,讓guestos能夠直接使用CPU資源,而不須要翻譯指令了,從而節省了資源,但修改內核比較雞肋(XEN)網絡
後續cpu廠商直接支持虛擬化,不須要經過VMM翻譯指令了,無所謂半虛擬化和全虛擬化架構
虛擬化技術的優勢:運維
資源池——一個物理機的資源分配到了不一樣的虛擬機裏
很容易擴展——增長物理機或者虛擬機便可,由於虛擬機是能夠複製的
很容易雲化——亞馬孫AWS,阿里雲,谷歌雲等
虛擬化技術的侷限性:
每個虛擬機都是一個完整的操做系統,因此須要給其分配物理資源,當虛擬機數量增多時,操做系統自己消耗的資源勢必增多
虛擬化技術無法解決運維環境和開發環境的矛盾,因此後來纔出現了容器技術
參考
全虛擬化和半虛擬化的區別 cpu的ring0 ring1又是什麼概念
2.常見虛擬化軟件
VMware系列
VMware workstation、VMware vsphere(VMware esxi)、VMware Fusion(Mac)
Xen 開源 半虛擬化(須要改機器的內核)
XenServer 商業,廠商Ctirx,基於Xen的(Ctirt把xen收購了)
KVM 開源 基於linux內核模塊(被紅帽子最後收購)
Hyper-V 商業,微軟旗下的產品(適合在微軟的操做系統上安裝)
Openvz 開源 基於linux 特色:虛擬機和宿主機共用一個內核(若是你宿主機的內核崩潰那麼你虛擬機的內核也會崩潰)
VirtualBox 開源 Sun公司開發 Oracle收購Sun
http://developer.huawei.com/ict/forum/thread-23385-1-1.html
軟件特色:
VMware系列,商業
VMware Workstation,適合單機使用
VMware Vsphere(VMware esxi),適合規模更大的場景
VMware Fusion(Mac)
Xen 開源,支持半虛擬化
XenServer 商業,Ctirx收購Xen以後研發的,基於Xen的
KVM 開源 ,基於Linux內核模塊,目前KVM已經被紅帽收購了,大多數系統都傾向於使用KVM
Hyper-V 商業,微軟的產品,適合在windows服務器上用
Openvz 開源 ,輕量,基於Linux,虛擬機和宿主機共用一個內核,優勢是一臺物理機能夠虛擬化不少臺虛擬機,缺點是不穩定,物理機的內核奔潰,全部的虛擬機都會崩潰,早期vps供應商用得比較多
VirtualBox 開源 ,Sun公司開發 ,Oracle收購Sun以後,如今屬於Oracle
3.虛擬化架構
I型:虛擬機直接運行在系統硬件上,建立硬件全仿真實例,被稱爲「裸機」,也稱爲裸金屬架構。
II型:虛擬機運行在傳統操做系統上,一樣建立的是硬件全仿真實例,被稱爲「託管」hypervisor。也稱爲宿主架構。
Xen屬於I型,KVM屬於II型。
4.KVM介紹
簡介1
KVM是以色列初創公司Qumranet開發,2008年9月RedHat公司收購了Qumranet
KVM是Linux內核的一個模塊,它把Linux內核變成了一個Hypervisor
KVM是徹底開源的,RedHat基於KVM的虛擬化解決方案叫作RHEV
KVM在Linux操做系統裏面以進程的形式出現,由標準的Linux調度程序進行調度,這使得KVM可以使用Linux內核的已有功能
只有一個KVM內核模塊還不能實現虛擬化的所有功能,就比如操做系統只有內核還不能成爲一個完整的操做系統同樣
QEMU是一個開源的虛擬化軟件,純軟件,能夠虛擬化因此的硬件,性能不強
KVM基於QEMU開發了一個可以運行在用戶空間的工具QEMU-KVM
磁盤、網絡設備等都是經過QEMU-KVM這個工具模擬出來的
KVM和QEMU-KVM通訊是經過/dev/kvm實現的
libvirt是用來管理KVM虛擬機的API,其命令爲virsh
簡介2
這裏只介紹KVM而不介紹其餘虛擬化軟件的緣由有兩點,一是咱們大多數的服務器系統都是Linux內核的操做系統,而KVM是基於Linux內核的。二是KVM是開源、免費的,其餘的例如VMware Vsphere、XenServer等都是商業收費的,而Hyper-V 又是Windows的,Openvz 又有侷限性(與宿主共用內核,就沒法安裝其餘內核的虛擬機),穩定性也有待考究,VirtualBox又不適合大規模的虛擬化場景,因此最後就只剩下KVM了。
KVM是Kernel-based Virtual Machine的縮寫,意爲基於內核的虛擬機。KVM是一個徹底開源的系統虛擬化模塊,它所基於的是Linux內核,它把Linux內核變成了一個Hypervisor,自Linux 2.6.20以後集成在Linux的各個主要發行版本中。它使用Linux自身的調度器進行管理,因此相對於Xen,其核心源碼不多。KVM目前已成爲學術界的主流VMM之一。
最開始KVM是由以色列初創公司Qumranet開發,後來2008年9月RedHat公司收購了Qumranet,RedHat基於KVM的虛擬化解決方案叫作RHEV,不過RHEV是收費的。
KVM的虛擬化須要硬件支持(如Intel VT技術或者AMD V技術)。是基於硬件的徹底虛擬化。而Xen早期則是基於軟件模擬的Para-Virtualization,新版本則是基於硬件支持的徹底虛擬化。但Xen自己有本身的進程調度器,存儲管理模塊等,因此代碼較爲龐大。廣爲流傳的商業系統虛擬化軟件VMware ESX系列是基於軟件模擬的Full-Virtualization。
KVM在Linux操做系統裏面以進程的形式出現,由標準的Linux調度程序進行調度,這使得KVM可以使用Linux內核的已有功能。可是隻有一個KVM內核模塊還不能實現虛擬化的所有功能,就比如操做系統只有內核還不能成爲一個完整的操做系統同樣。因此這就須要提到QEMU了,QEMU是一個開源的虛擬化軟件,純軟件,能夠虛擬化全部的硬件,性能不強。而KVM基於QEMU開發了一個可以運行在用戶空間的工具QEMU-KVM,KVM裏的磁盤、網絡設備等都是經過QEMU-KVM這個工具模擬出來的,因此KVM結合QEMU-KVM工具以後纔算完整,KVM和QEMU-KVM通訊是經過/dev/kvm實現的。其中libvirt是用來管理KVM虛擬機的API,其命令爲virsh。
KVM架構圖
5.Centos7上安裝KVM
前提是CPU支持虛擬化
1.虛擬機設置內存4G(根據實際的實驗需求來)
2.處理器2核,虛擬化引擎兩個虛擬化相關的選項打上對勾(若是在啓動機器時報「CPU性能計數器問題」能夠把下邊的虛擬化CPU性能計數器的√去掉,只要前邊的)
3.增長一個50G的虛擬磁盤
4.開啓虛擬機
檢查cpu參數是否支持虛擬化
grep -Ei 'vmx|svm' /proc/cpuinfo
vmx(標識):英特爾CPU
svm(標識):AMD
準備工做-關閉防火牆
關閉iptables或者firewalld
關閉selinux
格式化新磁盤,掛載到/kvm_data
查看新磁盤
這裏不用分區直接格式化
查看你格式化磁盤的格式
建立/kvm_data目錄並把新磁盤掛在到該目錄下
[root@localhost ~]# mkdir [root@localhost ~]# mount /dev/sdb /kvm_data/
編輯配置文件讓磁盤開機自動掛載到目錄下:vi /etc/fstab
/dev/sdb /kvm_data ext4 defaults 0 0
下載一個centos7的鏡像文件
安裝kvm
yum install -y virt-* libvirt bridge-utils qemu-img
6.配置網卡並安裝centos7
配置網卡,增長橋接網卡
拷貝現有網卡並更名爲br0
cp ifcfg-eno16777736 ifcfg-br0
編輯網卡br0更改一些東西
TYPE=Bridge BOOTPROTO=none NAME=br0 DEVICE=br0 ONBOOT=yes PREFIX=24 IPADDR=192.168.18.128 NETMASK=225.225.225.0 GATEWAY=192.168.18.2 DNS1=114.114.114.114 DNS2=8.8.8.8
把以前的網卡也更改一下(其餘IP都去掉BRIDGE=br0意思是橋接到br0往卡上)
TYPE=Ethernet BOOTPROTO=none NAME=eno16777736 DEVICE=eno16777736 ONBOOT=yes BRIDGE=br0
配置完重啓網卡服務
systemctl restart network
配置成功橋接網卡以後你會發現br0是以前網卡的IP
檢查KVM模塊是否加載
lsmod|grep kvm
啓動libvirtd服務
systemctl start libvirtd
檢查進程在不在
ps aux|grep libvirt
命令:brctl show
能夠看到兩個網卡br0和virbr0
virbr0:是libvirtd服務啓動起來的一個橋接網卡跟咱們橋接的br0網卡不同
爲何有兩個,由於分別表明兩種網絡模式,由於vmware能夠用鼠標點換網絡模式,而kvm只能在系統裏換,就須要有兩個模式,以後配置你指向哪一個就是哪一個模式
virbr0:NAT模式
br0:橋接模式
7.命令行安裝centos7
virt-install --name=awei-01 --memory=512,maxmemory=1024 --vcpus=1,maxvcpus=2 --os-type=linux --os-variant=rhel7 --location=/tmp/CentOS-7-x86_64-DVD-1804.iso --disk path=/kvm_data/awei-01.img,size=10 --bridge=br0 --graphics=none --console=pty,target_type=serial --extra-args="console=tty0 console=ttyS0"
命令說明:
--name 指定虛擬機的名稱
--memory 指定分配給虛擬機的內存資源大小
--maxmemory 指定可調節的最大內存資源大小,由於KVM支持熱調整虛擬機的資源
--vcpus 指定分配給虛擬機的CPU核心數量
--maxvcpus 指定可調節的最大CPU核心數量
--os-type 指定虛擬機安裝的操做系統類型
--os-variant 指定系統的發行版本
--location 指定ISO鏡像文件所在的路徑,支持使用網絡資源路徑,也就是說可使用URL
--disk path 指定虛擬硬盤所存放的路徑及名稱,size 則是指定該硬盤的可用大小,單位是G
--bridge 指定使用哪個橋接網卡,也就是說使用橋接的網絡模式
--graphics 指定是否開啓圖形
--console 定義終端的屬性,target_type 則是定義終端的類型
--extra-args 定義終端額外的參數
報錯:
解決辦法:yum install -y openssl-1.0.2k*
開始安裝前的檢測硬件:這時候其實已經進入了一個虛擬終端了,按Ctrl+]退出終端,可是咱們不能退出來
開始安裝(翻譯)
1) [x] Language settings 語言設置 2) [!] Time settings 時間設置
(English (United States)) 英語(美國) (Timezone is not set.) 未設置時區
3) [!] Installation source 安裝源 4) [!] Software selection 軟件選擇
(Processing...) 正在處理 (Processing...) 正在處理
5) [!] Installation Destination 安裝目標 6) [x] Kdump
(No disks selected) 未選擇磁盤 (Kdump is enabled) Kdump已啓用
7) [ ] Network configuration 網絡配置 8) [!] Root password 跟密碼
(Not connected) 未鏈接 (Password is not set.) 未設置密碼
9) [!] User creation 建立用戶
(No user will be created) 不會建立用戶
Please make your choice from above ['q' to quit | 'b' to begin installation |
'r' to refresh]: 請從上面選擇['q'退出|'b'開始安裝|"r"刷新:
語言配置
配置語言-敲「1」回車
2.再回車-選擇「68」項中文
3.在選擇中文類別「1」中文簡體
時區設置
敲「2」回車-選擇「1」時區設置-回車
2.選擇「2」亞洲-回車
3.回車-選擇「64」上海
配置安裝目標
敲「5」回車-選擇「c」-回車
Installation 1) [x] Language settings 2) [x] Time settings (Simplified Chinese (China)) (Asia/Shanghai timezone) 3) [x] Installation source 4) [x] Software selection (Local media) (Minimal Install) 5) [!] Installation Destination 6) [x] Kdump (No disks selected) (Kdump is enabled) 7) [ ] Network configuration 8) [!] Root password (Not connected) (Password is not set.) 9) [!] User creation (No user will be created) Please make your choice from above ['q' to quit | 'b' to begin installation | 'r' to refresh]: 5 ================================================================================ ================================================================================ Probing storage... Installation Destination [x] 1) : 10 GiB (vda) 1 disk selected; 10 GiB capacity; 10 GiB free ... Please make your choice from above ['q' to quit | 'c' to continue | 'r' to refresh]: c ================================================================================ ================================================================================ Autopartitioning Options [ ] 1) Replace Existing Linux system(s) [x] 2) Use All Space [ ] 3) Use Free Space Installation requires partitioning of your hard drive. Select what space to use for the install target. Please make your choice from above ['q' to quit | 'c' to continue | 'r' to refresh]: 2 ================================================================================ ================================================================================ Autopartitioning Options [ ] 1) Replace Existing Linux system(s) 替換現有的Linux系統 [x] 2) Use All Space 利用全部空間 [ ] 3) Use Free Space 使用可用空間 Installation requires partitioning of your hard drive. Select what space to use for the install target. Please make your choice from above ['q' to quit | 'c' to continue | 'r' to refresh]: c 默認就能夠 ================================================================================ ================================================================================ Partition Scheme Options [ ] 1) Standard Partition 標準分區 [ ] 2) Btrfs Btrfs系統 [x] 3) LVM [ ] 4) LVM Thin Provisioning LVM精簡資源調配 Select a partition scheme configuration. Please make your choice from above ['q' to quit | 'c' to continue | 'r' to refresh]: 1 ================================================================================ ================================================================================ Partition Scheme Options [x] 1) Standard Partition [ ] 2) Btrfs [ ] 3) LVM [ ] 4) LVM Thin Provisioning Select a partition scheme configuration. Please make your choice from above ['q' to quit | 'c' to continue | 'r' to refresh]: c 完成
翻譯:
[ ] 1) Replace Existing Linux system(s) 替換現有的Linux系統
[x] 2) Use All Space 利用全部空間
[ ] 3) Use Free Space 使用可用空間
設置root密碼
Installation 1) [x] Language settings 2) [x] Time settings (Simplified Chinese (China)) (Asia/Shanghai timezone) 3) [x] Installation source 4) [x] Software selection (Local media) (Minimal Install) 5) [x] Installation Destination 6) [x] Kdump (Automatic partitioning (Kdump is enabled) selected) 8) [!] Root password 7) [ ] Network configuration (Password is not set.) (Not connected) 9) [!] User creation (No user will be created) Please make your choice from above ['q' to quit | 'b' to begin installation | 'r' to refresh]: 8 ================================================================================ ================================================================================ Please select new root password. You will have to type it twice. Password: Password (confirm): ================================================================================ ================================================================================ Question The password you have provided is weak: The password fails the dictionary check 您提供的密碼很弱:密碼沒法經過字典檢查 - it is too simplistic/systematic. 它過於簡單化/系統化 Would you like to use it anyway? 你想用它嗎? Please respond 'yes' or 'no': yes 請回答「是」或「否」:
配置完這幾項以後選「b」開始安裝
按回車繼續進行重啓
8.虛擬機管理
命令整合
[root@localhost ~]# virsh list //查看虛擬機列表,只能看到運行的虛擬機
[root@localhost ~]# virsh list --all //查看虛擬機列表,包括未運行的虛擬機
[root@localhost ~]# virsh console awei-01 # 進入指定的虛擬機,進入的時候還須要按一下回車
[root@localhost ~]# virsh start awei-01 # 啓動虛擬機
[root@localhost ~]# virsh shutdown awei-01 # 關閉虛擬機
[root@localhost ~]# virsh destroy awei-01 # 強制中止虛擬機
[root@localhost ~]# virsh undefine awei-01 # 完全銷燬虛擬機,會刪除虛擬機配置文件,但不會刪除虛擬磁盤
[root@localhost ~]# virsh autostart awei-01 # 設置宿主機開機時該虛擬機也開機
[root@localhost ~]# virsh autostart --disable awei-01 # 解除開機啓動
[root@localhost ~]# virsh suspend awei-01 # 掛起虛擬機
[root@localhost ~]# virsh resume awei-01 # 恢復掛起的虛擬機
ctrl+] //退出虛擬機使用快捷鍵
ps aux |grep kvm //查看kvm進程
virsh list //查看虛擬機列表,只能看到運行的虛擬機
[root@awei-01 ~]# virsh list Id 名稱 狀態 ---------------------------------------------------- 2 awei-02 running
virsh list --all //查看虛擬機列表,包括未運行的虛擬機
[root@awei-01 ~]# virsh list --all Id 名稱 狀態 ---------------------------------------------------- 2 awei-02 running - awei-01 關閉
virsh console awei-01//進入指定虛擬機 鏈接完以後要回車進去
virsh undefine awei-01//完全銷燬虛擬機,會刪除虛擬機配置文件,virsh list --all就看不到了 (配置文件在/etc/libvirt/qemu裏邊)
要想完全刪除這個虛擬機須要刪除「虛擬磁盤文件」在kvm的根目錄裏/kvm_data
ls /etc/libvirt/qemu/ //能夠查看虛擬機配置文件
9.克隆虛擬機
克隆虛擬機是虛擬機軟件必須得有的功能,這樣能省去咱們安裝系統及環境的時間,若是使用過VMware、VirtualBox等虛擬機軟件的話,都知道有這個功能,KVM也不例外,只不過咱們沒有用圖形化界面,是命令行形式的而已。
要克隆某個虛擬機,首先這個虛擬機須要爲關閉狀態:
virsh shutdown awei-01
[root@awei-01 ~]# virsh shutdown awei-01 域 awei-01 被關閉
而後執行如下命令進行克隆:
virt-clone --original awei-01 --name awei-02 --file /kvm_data/awei-02.img
[root@awei-01 ~]# virt-clone --original awei-01 --name awei-02 --file /kvm_data/awei-02.img 正在分配 'awei-02.img' | 10 GB 00:00:37 成功克隆 'awei-02'。
virsh list --all 查看一下會多出一臺awei-02的機器
[root@awei-01 ~]# virsh list --all Id 名稱 狀態 ---------------------------------------------------- - awei-01 關閉 - awei-02 關閉
參數說明
--original指定克隆源虛擬機
--name指定克隆後的虛擬機名字
--file指定目標虛擬機的虛擬磁盤文件
若是aminglinux01虛擬機開機狀態,則提示先關閉或者暫停虛擬機
爲了方便管理,咱們能夠退出虛擬終端,在外邊遠程鏈接它進行操做
[root@awei-01 ~]# ssh 192.168.18.130 The authenticity of host '192.168.18.130 (192.168.18.130)' can't be established. ECDSA key fingerprint is b8:43:75:b8:96:d0:42:d8:0b:5e:89:64:60:e0:73:c7. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.18.130' (ECDSA) to the list of known hosts. root@192.168.18.130's password: 密碼 Last login: Wed May 13 09:40:39 2020 [root@localhost ~]# w 17:12:03 up 1 min, 2 users, load average: 0.17, 0.10, 0.04 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root ttyS0 09:40 7:31m 0.11s 0.11s -bash root pts/0 192.168.18.128 17:11 3.00s 0.01s 0.01s w
10.快照管理
一樣的建立快照也是虛擬機軟件的一個很重要的功能,快照可以很方便的幫咱們把虛擬機恢復到一個正常的狀態下。咱們來看看命令行下如何使用KVM建立虛擬機的快照:
建立快照 virsh snapshot-create awei-01
[root@awei-01 ~]# virsh snapshot-create awei-01 已生成域快照 1589336112
raw格式的虛擬磁盤不支持作快照,qcow2支持
qemu-img info /kvm_data/awei-01.img //查看aminglinux01.img信息,同時會查看到快照列表(由於快照是作的磁盤快照)
[root@awei-01 ~]# qemu-img info /kvm_data/awei-01.img image: /kvm_data/awei-01.img file format: qcow2 ##虛擬磁盤格式 virtual size: 10G (10737418240 bytes) # 虛擬磁盤的總大小 disk size: 1.3G # 虛擬磁盤目前所佔用的物理磁盤大小 cluster_size: 65536 Snapshot list: # 快照列表 ID TAG VM SIZE DATE VM CLOCK 1 1589336112 0 2020-05-13 10:15:12 00:00:00.000 Format specific information: compat: 1.1 lazy refcounts: true
virsh snapshot-list aminglinux01 //列出全部快照
[root@awei-01 ~]# virsh snapshot-list awei-01 名稱 生成時間 狀態 ------------------------------------------------------------ 1589336112 2020-05-13 10:15:12 +0800 shutoff [root@awei-01 ~]# virsh snapshot-list awei-02 名稱 生成時間 狀態 ------------------------------------------------------------
virsh snapshot-current awei-01//查看當前快照版本
ls /var/lib/libvirt/qemu/snapshot/awei-01//查看全部快照配置文件
virsh snapshot-revert awei-01 1513440854//恢復指定快照
virsh snapshot-delete awei-01 1513440854//刪除快照
11.磁盤格式
虛擬磁盤經常使用格式有raw和qcow2,以上咱們也提到了raw格式的虛擬磁盤不支持建立快照,qcow2格式的虛擬磁盤才支持建立快照。
qemu-img info /kvm_data/awei-01.img//查看虛擬磁盤格式
[root@awei-01 ~]# qemu-img info /kvm_data/awei-01.img image: /kvm_data/awei-01.img file format: qcow2 virtual size: 10G (10737418240 bytes) disk size: 1.3G cluster_size: 65536 Snapshot list: ID TAG VM SIZE DATE VM CLOCK 1 1589336112 0 2020-05-13 10:15:12 00:00:00.000 Format specific information: compat: 1.1 lazy refcounts: true
建立一個2G大小的raw格式的虛擬磁盤,-f選項用於指定虛擬磁盤的格式
qemu-img create -f raw /kvm_data/awei-01_2.img 2G//建立2G的raw格式磁盤
[root@awei-01 ~]# qemu-img create -f raw /kvm_data/awei-01_2.img 2G Formatting '/kvm_data/awei-01_2.img', fmt=raw size=2147483648
把raw格式的磁盤轉換爲qcow2格式
qemu-img convert -O qcow2 /kvm_data/awei-01_2.img /kvm_data/awei-01_2.qcow2
[root@awei-01 ~]# qemu-img info /kvm_data/awei-01_2.img ##先查看原來的磁盤格式 image: /kvm_data/awei-01_2.img file format: raw ##raw格式的 virtual size: 2.0G (2147483648 bytes) disk size: 0 [root@awei-01 ~]# qemu-img convert -O qcow2 /kvm_data/awei-01_2.img /kvm_data/awei-01_2.qcow2 ##raw格式轉換爲qcow2格式 [root@awei-01 ~]# qemu-img info /kvm_data/awei-01_2.qcow2 ##查看轉換以後的 image: /kvm_data/awei-01_2.qcow2 file format: qcow2 ##成功轉換爲acow2格式 virtual size: 2.0G (2147483648 bytes) disk size: 196K cluster_size: 65536 Format specific information: compat: 1.1 lazy refcounts: false
如上,與其說是轉換,不如說是從raw格式的磁盤複製了一份格式爲qcow2磁盤出來,由於本來的磁盤並不會發生任何的變化,而是從這個raw格式磁盤的基礎上覆製出來了一個新的qcow2格式的磁盤。
轉換後用ls -lh查看磁盤文件的大小,能夠看到qcow2格式的磁盤文件比較小,raw格式的磁盤文件大小和咱們指定空間大小同樣是2G:
[root@awei-01 kvm_data]# ls -lh 總用量 2.7G -rw-r--r-- 1 root root 2.0G 5月 13 20:39 awei-01_2.img -rw-r--r-- 1 root root 193K 5月 13 20:41 awei-01_2.qcow2 -rw------- 1 root root 11G 5月 13 10:15 awei-01.img -rw------- 1 qemu qemu 1.4G 5月 13 20:49 awei-02.img drwx------ 2 root root 16K 5月 9 01:28 lost+found
PS:raw格式的磁盤性能比qcow2要好,可是raw格式的磁盤沒法作快照
使用du -sh命令查看則不同了,raw格式的磁盤文件大小是0,而qcow2格式的磁盤文件大小則是和咱們使用ls -lh查看的同樣:
[root@awei-01 kvm_data]# du -sh * 0 awei-01_2.img 196K awei-01_2.qcow2 1.4G awei-01.img 1.4G awei-02.img 16K lost+found
這就是raw格式的虛擬磁盤文件和qcow2格式的虛擬磁盤文件在物理磁盤存儲上的區別
給aminglinux02轉換爲raw格式的磁盤
先把awei-02虛擬機關閉
virsh shutdown awei-02
qemu-img convert -O raw /kvm_data/awei-02.img /kvm_data/awei-02_3.raw
[root@awei-01 kvm_data]# qemu-img convert -O raw /kvm_data/awei-02.img /kvm_data/awei-02_3.raw [root@awei-01 kvm_data]# ls -l 總用量 4113052 -rw-r--r-- 1 root root 2147483648 5月 13 20:39 awei-01_2.img -rw-r--r-- 1 root root 197120 5月 13 20:41 awei-01_2.qcow2 -rw------- 1 root root 10739384832 5月 13 10:15 awei-01.img -rw-r--r-- 1 root root 10737418240 5月 14 02:26 awei-02_3.raw # 此時的屬組屬主爲root -rw------- 1 root root 1407254528 5月 14 02:09 awei-02.img drwx------ 2 root root 16384 5月 9 01:28 lost+found
virsh edit awei-02//更改格式和文件路徑
<driver name='qemu' type='raw'/> <source file='/kvm_data/awei-02_3.raw'/>
啓動:virsh start aminglinux02
能夠發現啓動狀態的虛擬機的磁盤文件的屬組屬主會發生改變
[root@awei-01 kvm_data]# ls -l 總用量 4113052 -rw-r--r-- 1 root root 2147483648 5月 13 20:39 awei-01_2.img -rw-r--r-- 1 root root 197120 5月 13 20:41 awei-01_2.qcow2 -rw------- 1 root root 10739384832 5月 13 10:15 awei-01.img -rw-r--r-- 1 qemu qemu 10737418240 5月 14 02:26 awei-02_3.raw # 此時的屬組屬主爲qemu -rw------- 1 root root 1407254528 5月 14 02:09 awei-02.img drwx------ 2 root root 16384 5月 9 01:28 lost+found
此時若是要給study02製做快照就會報以下錯誤:
[root@awei-01 kvm_data]# virsh snapshot-create awei-02 錯誤:不支持的配置:存儲類型 vda 不支持磁盤 raw 的內部快照
12.磁盤擴容 – raw格式
以上介紹了虛擬磁盤格式的,以及如何轉換虛擬磁盤格式,下面咱們來看看如何進行磁盤擴容:
[root@awei-01 kvm_data]# ls -lh /kvm_data/awei-02_3.raw -rw-r--r-- 1 qemu qemu 10G 5月 14 03:03 /kvm_data/awei-02_3.raw [root@awei-01 kvm_data]# qemu-img resize /kvm_data/awei-02_3.raw +2G Image resized. [root@awei-01 kvm_data]# ls -lh /kvm_data/awei-02_3.raw -rw-r--r-- 1 qemu qemu 12G 5月 14 03:08 /kvm_data/awei-02_3.raw
如上能夠看到,本來的10G變成12G了,可是此時進入虛擬機中會發現磁盤依舊是10G:
[root@localhost ~]# fdisk -l 磁盤 /dev/vda:10.7 GB, 10737418240 字節,20971520 個扇區 Units = 扇區 of 1 * 512 = 512 bytes 扇區大小(邏輯/物理):512 字節 / 512 字節 I/O 大小(最小/最佳):512 字節 / 512 字節 磁盤標籤類型:dos 磁盤標識符:0x000ab192 設備 Boot Start End Blocks Id System /dev/vda1 * 2048 2099199 1048576 83 Linux /dev/vda2 2099200 4196351 1048576 82 Linux swap / Solaris /dev/vda3 4196352 20971519 8387584 83 Linux
這是由於尚未生效,須要重啓虛擬機才能生效,可是注意這個重啓要在宿主機上使用virsh命令進行重啓,以下:
[root@awei-01 kvm_data]# virsh destroy awei-02 域 awei-02 被刪除 [root@awei-01 kvm_data]# virsh start awei-02 域 awei-02 已開始 [root@awei-01 kvm_data]# virsh console awei-02 鏈接到域 awei-02 換碼符爲 ^] [root@localhost ~]# fdisk -l 磁盤 /dev/vda:12.9 GB, 12884901888 字節,25165824 個扇區 Units = 扇區 of 1 * 512 = 512 bytes 扇區大小(邏輯/物理):512 字節 / 512 字節 I/O 大小(最小/最佳):512 字節 / 512 字節 磁盤標籤類型:dos 磁盤標識符:0x000ab192 設備 Boot Start End Blocks Id System /dev/vda1 * 2048 2099199 1048576 83 Linux /dev/vda2 2099200 4196351 1048576 82 Linux swap / Solaris /dev/vda3 4196352 20971519 8387584 83 Linux
而後還須要把這2G的空間分區纔可使用,由於咱們安裝這個系統的時候選擇的是標準分區,因此沒法像LVM分區那樣直接擴容邏輯卷:
[root@localhost ~]# fdisk /dev/vda
歡迎使用 fdisk (util-linux 2.23.2)。
更改將停留在內存中,直到您決定將更改寫入磁盤。
使用寫入命令前請三思。
命令(輸入 m 獲取幫助):n # 新建分區
Partition type:
p primary (3 primary, 0 extended, 1 free)
e extended
Select (default e): p # 選擇新建主分區
已選擇分區 4
起始 扇區 (20971520-25165823,默認爲 20971520): # 默認便可,直接按回車
將使用默認值 20971520
Last 扇區, +扇區 or +size{K,M,G} (20971520-25165823,默認爲 25165823): # 默認便可,直接按回車
將使用默認值 25165823
分區 4 已設置爲 Linux 類型,大小設爲 2 GiB
命令(輸入 m 獲取幫助):p # 再次查看磁盤信息
磁盤 /dev/vda:12.9 GB, 12884901888 字節,25165824 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 字節 / 512 字節
I/O 大小(最小/最佳):512 字節 / 512 字節
磁盤標籤類型:dos
磁盤標識符:0x00003436
設備 Boot Start End Blocks Id System
/dev/vda1 * 2048 1026047 512000 83 Linux
/dev/vda2 1026048 3123199 1048576 82 Linux swap / Solaris
/dev/vda3 3123200 20971519 8924160 83 Linux
/dev/vda4 20971520 25165823 2097152 83 Linux # 能夠看到多了一個/dev/vda4分區
命令(輸入 m 獲取幫助):w # 保存退出
除了對已有磁盤擴容外,還能夠額外增長磁盤,宿主機下執行如下命令:
[root@localhost ~]# qemu-img create -f raw /kvm_data/awei-02_2.raw 5G #先增長一塊磁盤 Formatting '/kvm_data/study02_2.raw', fmt=raw size=5368709120 [root@localhost ~]# qemu-img info /kvm_data/awei-02_2.raw ##查看剛增長的磁盤大小 image: /kvm_data/awei-02_2.raw file format: raw virtual size: 5.0G (5368709120 bytes) disk size: 0 [root@localhost ~]# virsh edit awei-02 # 編輯配置文件,在本來的<disk>標籤下增長如下內容 <disk type='file' device='disk'> <driver name='qemu' type='raw'/> <source file='/kvm_data/awei-02_2.raw'/> <target dev='vdb' bus='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/> </disk> [root@localhost ~]# virsh destroy awei-02 Domain study02 destroyed [root@localhost ~]# virsh start awei-02 Domain awei-02 started [root@localhost ~]#
qemu-img resize /kvm_data/aminglinux02_3.raw +2G
qemu-img info /kvm_data/aminglinux02_3.raw
virsh destroy aminglinux02
virsh start aminglinux02
virsh console aminglinux02
fdisk -l 查看磁盤狀況,並分新的分區
除了對已有磁盤擴容外,還能夠額外增長磁盤
qemu-img create -f raw /kvm_data/aminglinux02_2.raw 5G
virsh edit aminglinux02 //增長<disk>…</disk>,注意更改source、target、slot
virsh destroy aminglinux02
virsh start aminglinux02
13.磁盤擴容 – qcow2格式
qcow2格式的虛擬磁盤的擴容方式和raw格式的是同樣的,只不過須要注意的是,若是虛擬磁盤保存了快照,則沒法擴容會報錯,以下:
[root@awei-01 kvm_data]# qemu-img info /kvm_data/awei-01.img image: /kvm_data/awei-01.img file format: qcow2 virtual size: 10G (10737418240 bytes) disk size: 1.3G cluster_size: 65536 Snapshot list: ID TAG VM SIZE DATE VM CLOCK 1 1589336112 0 2020-05-13 10:15:12 00:00:00.000 Format specific information: compat: 1.1 lazy refcounts: true [root@awei-01 kvm_data]# qemu-img resize /kvm_data/awei-01 awei-01_2.img awei-01_2.qcow2 awei-01.img [root@awei-01 kvm_data]# qemu-img resize /kvm_data/awei-01.img +2G qemu-img: Can't resize an image which has snapshots qemu-img: This image does not support resize qemu-img resize /kvm_data/aminglinux01.img +2G
須要把快照刪除後才能進行擴容:
[root@awei-01 kvm_data]# virsh snapshot-delete awei-01 1589336112 已刪除域快照 1589336112 [root@awei-01 kvm_data]# qemu-img resize /kvm_data/awei-01.img +2G Image resized. [root@awei-01 kvm_data]#
剩下的操做和上面演示的raw是同樣的,這裏就再也不演示了。
若是不但願刪除快照的話,就只能是建立一塊新的虛擬磁盤,操做方式也是和raw同樣的。
建議不論是raw格式的仍是qcow2格式的虛擬磁盤須要擴容,最好是使用新增硬盤的方式進行擴容,而不是在原有的磁盤上進行擴容,由於新增磁盤相對獨立與已有的磁盤,誤操做時也不容易對已有的磁盤形成影響。
14.調整cpu、內存、網卡
virsh dominfo awei-01 //查看配置
[root@awei-01 ~]# virsh dominfo awei-01 Id: - 名稱: awei-01 UUID: e7db2f69-4a35-4ce4-ae14-a2f99820a700 OS 類型: hvm 狀態: 關閉 CPU: 1 最大內存: 1048576 KiB 使用的內存: 524288 KiB 持久: 是 自動啓動: 禁用 管理的保存: 否 安全性模式: none 安全性 DOI: 0
調整cpu內存
virsh edit awei-01//更改以下部份內容
<memory unit='KiB'>2048576</memory> # 內存的最大大小 <currentMemory unit='KiB'>624288</currentMemory> # 目前使用的內存大小 <vcpu placement='static' current='2'>4</vcpu> # CPU的核心數量,current的值爲當前使用的核心數量,標籤的值則爲最大可以使用的核心數量
更改完配置文件以後,若是虛擬機是開機狀態的話須要重啓,關機狀態的話則直接啓動便可生效
[root@awei-01 ~]# virsh shutdown awei-01 域 awei-01 被關閉 [root@awei-01 ~]# virsh start awei-01 域 awei-01 已開始
這樣就完成了內存和CPU的調整,以上咱們是經過編輯配置文件來對內存和CPU的資源進行調整,須要重啓虛擬機以後才能生效。不過好在KVM是支持動態調整的,但前提是有設置最大的資源大小,例如以上的例子中,咱們將內存的最大大小設置了兩個G左右,那麼咱們就能夠在這兩個G之內動態的調整內存的大小,CPU也是同理。以下示例:
[root@awei-01 ~]# virsh setmem awei-01 800m # 動態調整內存大小爲800M [root@awei-01 ~]# virsh setvcpus awei-01 3 # 動態調整CPU核心數量爲3核 [root@awei-01 ~]# virsh dominfo awei-01 # 能夠看到無需重啓也生效了 Id: 6 名稱: awei-01 UUID: e7db2f69-4a35-4ce4-ae14-a2f99820a700 OS 類型: hvm 狀態: running CPU: 3 CPU 時間: 34.7s 最大內存: 2049024 KiB 使用的內存: 819200 KiB 持久: 是 自動啓動: 禁用 管理的保存: 否 安全性模式: none 安全性 DOI: 0
# 想要動態調整的配置永久生效,則須要把當前配置寫入到配置文件裏去
virsh dumpxml awei-01 > /etc/libvirt/qemu/awei-01.xml
注:內存資源能夠動態的調大調小,而CPU資源只能動態地調大不能調小。
調整網卡
virsh domiflist awei-01//查看網卡
[root@awei-01 ~]# virsh domiflist awei-01 接口 類型 源 型號 MAC ------------------------------------------------------- vnet1 bridge br0 virtio 52:54:00:b2:43:c4
如上,能夠看到目前該虛擬機只有一個網卡。
增長一塊新的網卡,並設置爲nat網絡模式(virbr0相似vmware的vmnet8),這裏若是寫--source br0,則網絡模式爲橋接
virsh attach-interface awei-01 --type bridge --source virbr0
[root@awei-01 ~]# virsh attach-interface awei-01 --type bridge --source virbr0 成功附加接口 [root@awei-01 ~]# virsh domiflist awei-01 接口 類型 源 型號 MAC ------------------------------------------------------- vnet1 bridge br0 virtio 52:54:00:b2:43:c4 vnet2 bridge virbr0 rtl8139 52:54:00:fc:9a:ae
virsh dumpxml awei-01 > /etc/libvirt/qemu/awei-01.xml//須要把配置寫入到配置文件裏
這條命令末尾若是寫的是 --source br0 ,則是設置網絡模式爲橋接,和VMware裏的橋接模式同樣。--source是用於指定橋接到哪一塊網卡上。
例如咱們也能夠橋接到br0上:
virsh attach-interface awei-01 --type bridge --source br0
[root@awei-01 ~]# virsh attach-interface awei-01 --type bridge --source br0 成功附加接口 [root@awei-01 ~]# virsh domiflist awei-01 接口 類型 源 型號 MAC ------------------------------------------------------- vnet1 bridge br0 virtio 52:54:00:b2:43:c4 vnet2 bridge virbr0 rtl8139 52:54:00:fc:9a:ae vnet3 bridge br0 rtl8139 52:54:00:8f:7f:cb [root@awei-01 ~]#
15.遷移虛擬機
該方式要確保虛擬機是關機狀態
virsh shutdown awei-01
而後經過rsync命令將配置文件拷貝到另外一臺機器上:
[root@awei-01 ~]# rsync -av /etc/libvirt/qemu/awei-01.xml 192.168.77.128:/etc/libvirt/qemu/awei-01.xml
接着將虛擬機的磁盤文件也拷貝到另外一臺機器上:
[root@awei-01 ~]# virsh domblklist awei-01 ##查看虛擬機磁盤所在目錄 目標 源 ------------------------------------------------ vda /kvm_data/awei-01.img hda - [root@awei-01 ~]# rsync -av /kvm_data/awei-01.img 192.168.77.128:/kvm_data/awei-01.img
最後就是在另外一臺機器上根據實際狀況修改虛擬機的配置文件,例如虛擬機的名稱要對得上,虛擬磁盤文件路徑要對得上等等,由於我這裏兩臺機器的環境都是同樣的,因此就不須要修改配置文件了,直接定義新虛擬機便可。如下這條命令在另外一臺機器上執行:
[root@awei-01 ~]# virsh define /etc/libvirt/qemu/awei-01.xml
修改磁盤路徑
virsh define /etc/libvirt/qemu/aminglinux03.xml //定義新虛擬機
virsh list --all //會發現新遷移的aminglinux03子機