1. 程式人生 > >Day12 KVM構建與管理(Service01)

Day12 KVM構建與管理(Service01)

倉庫 mail troy cti emc 刪除 磁盤文件 copy station

一、虛擬化概述

1.1 定義

通過X個物理資源生成Y個邏輯資源
系統服務名:libvirtd

1.2 程度

完全
部分
硬件輔助(CPU):主流CPU都集成了虛擬化技術如VT、VD

1.3 虛擬機主要廠商和產品

虛擬化廠商 虛擬化產品
VMware VMware Workstation、vSphere
Microsoft VirtualPC、Hypre-V、Azure
RedHat KVM、RHEV(收費版)
Citrix Xen

Oracle Oracle VM VirtualBox

二、搭建KVM環境

2.1 安裝虛擬化軟件包組

LANG=en
yum grouplist hidden |grep Virtual #rhel7查看可用的虛擬化相關的軟件包組
Virtualization Host
Virtualization Client
Virtualization Hypervisor
Virtualization Platform
Virtualization Tools

yum grouplist hidden |grep Virtual #rhel6查看可用的虛擬化相關的軟件包組

Virtualization
Virtualization Client
Virtualization Platform
Virtualization Tools

yum -y group install Virtualization\ Client Virtualization\ Hypervisor Virtualization\ Platform Virtualization\ Tools

2.2 圖形桌面上的快捷方式創建

cd /usr/share/applications
cp virt-manager.desktop ~/桌面/

2.3 一臺KVM虛擬機的組成

2.3.1 /etc/libvirt/qemu

虛擬機的XML配置文件所在路徑。XML配置文件定義虛擬機的名稱、UUID、內存、虛擬磁盤、網卡等各種參數設置

2.3.2 /var/lib/libvirt/images

虛擬機的磁盤鏡像文件所在路徑。磁盤鏡像文件用來保存虛擬機的操作系統及文檔等數據

三、KVM管理命令

3.1 virt-manager

圖形化管理工具

3.2 virsh nodeinfo

查看實體機的CPU、內存等信息

3.3 virsh list [--all]

查看正在運行的虛擬機,--all表示顯示所有的虛擬機

3.4 virsh dominfo 虛擬機名

查看虛擬機的詳細信息

3.5 virsh autostart [--disable] 虛擬機名

設置開機自動運行虛擬機,--disable表示取消開機自動運行功能

3.6 virsh start|reboot|shutdown 虛擬機名

啟動、重啟和關閉虛擬機

3.7 virsh destory 虛擬機名

強制關閉虛擬機

3.7 virsh define 虛擬機名.xml

導入虛擬機

3.8 virsh undefine 虛擬機名

刪除虛擬機的XML文件,不在KVM管理器裏面顯示

3.9 virsh dumpxml 虛擬機名 > 新虛擬機名.xml

導出虛擬機的XML文件重定向到新虛擬機的XML文件

3.10 virsh edit 虛擬機名

導出修改再導入虛擬機的XML文件

3.11 virsh snapshot-list 虛擬機名

查看虛擬機現有的快照信息

3.12 virsh snapshot-create-as server nullmail

為server創建快照名為nullmail

3.13 virsh snapshot-delete server --snapshotname 快照名

刪除虛擬機快照

3.14 virsh snapshot-edit server --snapshotname 1512630021 --rename nullmail

修改虛擬機快照的名稱

3.15 virsh snapshot-revert server --snapshotname nullmail --running

server恢復快照,快照名稱為nullmail,恢復後運行虛擬機

3.16 virsh setmem server --size 8192000 --live

在線修改server的使用內存為8192000KB

3.17 virsh setmaxmem server --size 8192000 --config

修改server的最大可用內存為8192000KB,無法在線修改,只能關機後修改,下一次開機後應用該設置

3.18 qemu-img info 虛擬機磁盤鏡像文件名

查看鏡像的相關信息

3.19 qemu-img create -f qcow2 -b 原始盤 前端盤

四、快速創建虛擬機

4.1 以example為模板生成另外一臺虛擬機

virsh destroy example#強制關機example
cd /var/lib/libvirt/images#虛擬機的XML配置文件所在路徑
qemu-img info example.qcow2#查看虛擬機磁盤鏡像文件的信息
cp example.qcow2 test01.qcow2#拷貝鏡像文件
cd /etc/libvirt/qemu#虛擬機的磁盤鏡像文件所在路徑
cp example.xml test01.xml#拷貝XML配置文件
vim test01.xml
刪除兩個<channel></channel>標記
修改虛擬機名稱、虛擬機磁盤文件、網卡MAC地址、UUID
註意!UUID和網卡MAC地址都是16進制,修改的時候字母只有a~f可用
uuidgen#專業生成UUID的小工具
virsh define /etc/libvirt/qemu/test01.xml#導入test01虛擬機
virsh undefine /etc/libvirt/qemu/test01.xml#刪除test01虛擬機

4.2 COW快速創建虛擬機

4.2.1 COW機制的概念

COW(Copy on Write)寫(變化)時復制
直接映射原始盤的數據內容,當原始盤的舊數據有修改時,在修改之前將舊數據存入前端盤,對前端盤的修改將不再回寫到原始盤
原始盤(後端盤):需要備份的原始數據
增量盤(前端盤):永遠儲存,在制作前端盤的那一瞬間,原始盤的數據內容
可以這麽理解:
假設原始盤的容量很大,創建增量盤需要10分鐘。那麽在創建增量盤的這10分鐘內,一旦原始盤的數據有寫操作(修改、刪除等),通過COW機制,原始盤會把要操作的數據實體,拷貝到增量盤中,以保證增量盤永遠儲存,在創建增量盤的那一瞬間原始盤的數據內容

舉例來說:
原始盤有1.txt、2.txt、3.txt等文件
創建增量盤的時候,前端盤實際存儲的是1.txt、2.txt、3.txt的快捷方式
用戶訪問增量盤的1.txt的時候,實際查看的是原始盤裏面的1.txt的內容
而如果原始盤的1.txt被刪除時,會把將刪除的1.txt的數據實體而不是快捷方式,拷貝到增量盤。拷貝完畢後。用戶再訪問增量盤的1.txt的時候,就是查看存儲在增量盤裏面的數據,不再是原始盤裏面的數據,因為原始盤裏面以及沒有數據了。

4.2.2 磁盤鏡像格式分類

RAW:原始數據格式,被rhel7拋棄
QCOW2:rhel7新使用的格式

4.2.3 創建過程

cd /var/lib/libvirt/images/
qemu-img create -f qcow2 -b example.qcow2 test02.qcow2
cd /etc/libvirt/qemu/
cp example.xml test02.xml
vim test02.xml
修改虛擬機名、磁盤鏡像名、UUID、MAC地址
virsh define test02.xml#導入test02虛擬機
virsh list --all|grep test02
virsh start test02

五、離線訪問虛擬機

5.1 guestmount -a 虛擬機磁盤鏡像路徑 -i 掛載點

記得關閉SELinux,可以在虛擬機關機的情況下離線修改,但是花費的時間比較長

六、搭建新的教學環境

6.1 要求

資源端:由實體機提供
服務端:虛擬機A
客戶端:虛擬機B
用clone-vm7腳本創建兩臺虛擬機8、9

虛擬機A:
主機名:svr7.tedu.cn
網卡:eth0
IP:192.168.4.7/24
帳號:root
密碼:123456
虛擬機B:
主機名:pc207.tedu.cn
網卡:eth0
IP:192.168.4.207/24
帳號:root
密碼:123456

yum倉庫搭建
yum服務端:實體機
yum客戶端:虛擬機

6.2 操作

6.2.1 生成兩臺虛擬機

實體機:
clone-vm7 8
clone-vm7 9

6.2.2 虛擬機配置主機名和IP地址

虛擬機A:
echo svr7.tedu.cn >/etc/hostname
hostname
nmcli c m eth0 ipv4.method manual ipv4.addresses ‘192.168.4.7/24‘ connection.autoconnect yes
nmcli c up eth0
ping 192.168.4.254
虛擬機B:
echo pc207.tedu.cn >/etc/hostname
hostname
nmcli c m eth0 ipv4.method manual ipv4.addresses ‘192.168.4.207/24‘ connection.autoconnect yes
nmcli c up eth0
ping 192.168.4.254

6.2.3 Yum倉庫搭建

實體機:
systemctl restart httpd
systemctl enable httpd
mkdir -p /var/www/html/rhel7
echo ‘/ISO/rhel-server-7.2-x86_64-dvd.iso /var/www/html/rhel7 iso9660 defaults 0 0‘ >>/etc/fstab
tail -1 /etc/fstab
mount -a
firefox http://127.0.0.1/rhel7#驗證web服務是否正常
虛擬機A,B:
vim /etc/yum.repos.d/dvd.repo
[dvd]
name=rhel7
baseurl=http://192.168.4.254/rhel7
enabled=1
gpgcheck=0
yum clean all
yum repolist

Day12 KVM構建與管理(Service01)