一、虚拟化概述
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
本文转自 goldwinner 51CTO博客,原文链接:http://blog.51cto.com/355665/2068775,如需转载请自行联系原作者