知识回顾:
常见的虚拟化软件 ——
VMware:vSphere、VMware Workstation
RedHat:KVM、RHEV
Oracle:Oracle VirtualBox
MicroSoft:Hype-V、Virtual PC
Citrix:Xen
虚拟化实现程度:
完全虚拟化
半虚拟化
硬件辅助虚拟化
云计算的三大模型:
IaaS:基础架构即服务
PaaS:平台即服务
SaaS:软件即服务 【DaaS,数据库即服务】
公有云:公开的,多个不同的企业、个人共用
私有云:私有的,单个企业或者个人独有
KVM平台的实现
软件组:虚拟化、虚拟化客户端、虚拟化平台、虚拟化工具
虚拟网络类型:
桥接模式 —— 虚拟机与真机网络直接相连的 【手动添加br0】
隔离模式 —— 虚拟机只能通过虚拟网络连到宿主机 【手动添加virbr1】
网络访问类型:
NAT模式 —— 虚拟机共享宿主机virbr0接口地址访问外网 【自动配置】
路由模式 —— 虚拟机把宿主机当成路由器 【需管理员手动配置】
添加br0桥接接口:
1. 建立ifcfg-br0配置文件
#cp .. ../ifcfg-eth0 .. ../ifcfg-br0
#vim .. ../ifcfg-br0
NAME="br0"
TYPE="Bridge"
2. 把物理网卡eth0加入到br0桥接
#vim .. ../ifcfg-eth0
.. ..
BRIDGE=br0
3. 重启network服务
KVM图形化管理工具:
virt-manager 虚拟化管理器
** virbr1接口(隔离模式 network1)
KVM识别的接口:
default
network1
Linux系统ifconfig识别的接口:
virbr0
virbr1
KVM服务器远程管理:
方式1:先登录KVM服务器,再运行管理工具
client# ssh -X root@KVM服务器
kvmsvr# virt-manager &
方式2:先打开管理工具,再连接KVM服务器
client# virt-manager &
.. .. 添加到KVM服务器的SSH连接
SSH密钥对验证的实现:
1. 客户机上创建密钥对文件
2. 由客户机把公钥部署给KVM服务器
3. 客户机免密码访问KVM服务器
故障1:上不了TTS、连不上FTP服务器
原因:有多个DHCP服务
排除方法:找到冗余的DHCP服务,限制监听接口
[root@stu53 ~]# cat /etc/sysconfig/dhcpd
DHCPDARGS="vmnet1 virbr1"
故障2:KVM虚拟机与真机无法互相访问
CentOS真机:
stuXX
br0:172.40.X.Y
virbr1:192.168.4.1/24
svr5虚拟机:
eth0:192.168.4.5/24
pc205虚拟机:
eth0:192.168.4.205/24
故障3:ssh到svr5无法连接
原因:当前连接的目标主机地址以前曾经连结过(另一台主机)
排除方法:在SSH客户机上删除一个文件 ~/.ssh/known_hosts
—— 为KVM虚拟机改名
1. 导出原有虚拟机的XML描述
#virsh dumpxml 原虚拟机名 > new.xml
2. 修改导出的XML描述【名称、UUID】
#vim new.xml
3. 根据修改之后的XML描述导入新名称的虚拟机
#virsh define new.xml
4. 删除原有虚拟机
#virsh undefine 原虚拟机名
—— 复制KVM虚拟机
1. 获得原有虚拟机的XML描述
#virsh dumpxml 原虚拟机名 > new.xml
2. 修改导出的XML描述【名称、UUID、磁盘文件、MAC地址】
#vim new.xml
3. 为新虚拟机拷贝磁盘文件
#cp ..../原虚拟机磁盘 ..../新虚拟机磁盘
4. 根据修改之后的XML描述导入新名称的虚拟机
#virsh define new.xml
三合一操作 :
virsh edit 虚拟机名称
快速复制虚拟机:
1. virsh edit 原有虚拟机
.. .. 修改配置(名称、UUID、磁盘、MAC)、:wq保存
2. cp 原有虚拟机的磁盘 新虚拟机的磁盘
virsh管理操作
XML描述文件 —— virsh edit 虚拟机
virsh net-edit 虚拟接口
virsh net-destroy 虚拟接口
virsh net-start 虚拟接口
其他管理操作:
virt-viewer直接访问窗口终端
virt-clone克隆
KVM虚拟化的命令行管理
LVM逻辑卷在虚拟机存储中的应用
#########################################################
练习一:virsh 命令工具的基本操作
virsh //直接进交互模式
virsh nodeinfo //查看KVM节点(服务器)信息
virsh list //列出正在运行的虚拟机
virsh list --all //列出所有虚拟机(包括未启动的)
virsh dominfo 虚拟机名称 //查看指定虚拟机的信息
virsh start 虚拟机名称 //将指定的虚拟机开机
virsh reboot 虚拟机名称 //将指定的虚拟机重启
virsh shutdown 虚拟机名称 //将指定的虚拟机正常关机
virsh destroy 虚拟机名称 //将指定的虚拟机强制关机(相当于拔电源)
virsh autostart 虚拟机名称 //将指定的虚拟机设置随KVM自动开机
virsh autostart --disable 虚拟机名称 //将指定的虚拟机设置不随KVM自动开机
练习二:使用虚拟机的XML描述文件
1. 为已有的虚拟机改名
1)导出虚拟机 rh6_n1 的XML描述信息,保存为 new.xml 文件
[root@kvmsvr ~]# virsh dumpxml rh6_n1 > new.xml
2)修改 new.xml
[root@kvmsvr ~]# vim new.xml
.. ..
3)根据 new.xml 建立新的虚拟机
[root@kvmsvr ~]# virsh define new.xml
定义域 rhel6_node1(从 new.xml)
[root@kvmsvr ~]# virsh list --all
Id 名称 状态
----------------------------------------------------
1 rh6_n1 启用
- rhel6_node1 关闭
4)删除原虚拟机的 XML 描述
[root@kvmsvr ~]# virsh destroy rh6_n1 //强制关机
域 rh6_n1 被删除
[root@kvmsvr ~]# virsh undefine rh6_n1 //删除虚拟机定义
域 rh6_n1 已经被取消定义
[root@kvmsvr ~]# virsh list --all //确认删除结果
Id 名称 状态
----------------------------------------------------
- rhel6_node1 关闭
2. 复制虚拟机
1)导出虚拟机 rhel6_node1 的XML描述信息,保存为 rh6_n2.xml 文件
[root@kvmsvr ~]# virsh dumpxml rhel6_node1 > rh6_n2.xml
2)修改 rh6_n2.xml
[root@kvmsvr ~]# vim rh6_n2.xml
.. ..
.. ..
3)复制虚拟机 rhel6_node1 的磁盘文件
[root@kvmsvr ~]# cp -p /data/p_w_picpaths/node1.img /data/p_w_picpaths/node2.img
4)根据 rh6_n2.xml 建立新的虚拟机
[root@kvmsvr ~]# virsh define rh6_n2.xml
定义域 rh6_n2(从 rh6_n2.xml)
练习三:访问虚拟机窗口、虚拟机克隆
1. virt-viewer 虚拟机名称 //与 virt-manager 管理方式基本一样
2. virt-clone -o 模板虚拟机 -n 新虚拟机名称 -f 克隆后的虚拟机磁盘路径
练习四:LVM快照的创建、使用、验证
1. 建立测试LV、格式化、挂载,写入数据
[root@kvmsvr ~]# lvcreate -L 200MB -n lvsrc vg_data
[root@kvmsvr ~]# mkfs.ext4 /dev/vg_data/lvsrc
[root@kvmsvr ~]# mount /dev/vg_data/lvsrc /mnt/lvsrc
[root@kvmsvr ~]# dd if=/dev/zero of=/mnt/lvsrc/file1 bs=1M count=100
2. 建立快照LV、挂载及访问
[root@kvmsvr ~]# lvcreate -L 50M -n lvsnap -s /dev/vg_data/lvsrc
[root@kvmsvr ~]# mount /dev/vg_data/lvsnap /mnt/lvsnap
[root@kvmsvr ~]# df -hT | grep lvs
/dev/mapper/vg_data-lvsrc ext4 194M 106M 79M 58% /mnt/lvsrc
/dev/mapper/vg_data-lvsnap ext4 194M 106M 79M 58% /mnt/lvsnap
3. 快照卷的崩溃验证(可用空间耗尽)、快速重建
[root@kvmsvr ~]# dd if=/dev/zero of=/mnt/lvsnap/file2 bs=1M count=60
dd: 正在写入"/mnt/lvsnap/file2": 只读文件系统
.. ..
45703168字节(46 MB)已复制,0.164632 秒,278 MB/秒
Message from syslogd@localhost at Jun 23 18:12:52 ...
kernel:journal commit I/O error //快照卷已崩溃
[root@kvmsvr ~]# lvremove /dev/vg_data/lvsnap //删除崩溃的快照卷
[root@kvmsvr ~]# lvcreate -L 200M -n lvsnap -s /dev/vg_data/lvsrc
//重建快照卷
练习五:从命令行创建虚拟机(建模板机)
1. 为虚拟机准备磁盘(逻辑卷)
[root@kvmsvr ~]# lvcreate -L 20G -n lv_node1 vg_data
.. ..
2. 创建新的虚拟机,并从命令行安装RHEL 6.5系统(PXE方式)
[root@kvmsvr ~]# virt-install \
--name node1 --vcpus=1 --ram=1024 \
--disk path=/dev/vg_data/lv_node1 \
--network network=network1 --pxe
!!!! 详细可参考 man virt-install 手册页
!!!! 对于非PXE安装,应改用 --location=安装源URL
3. 初始化模板虚拟机,关机备用(平时应闲置)
[root@localhost ~]# touch /.unconfigured
.. .. //下次开机后会要求重设键盘、时区、root口令、网络等信息
[root@localhost ~]# shutdown -h now
练习六:利用LVM快照技术快速建新虚拟机
1. 根据模板机的 LV 建立快照卷
[root@kvmsvr ~]# lvcreate -s -n rh6_snap1 -L 10G /dev/vg_data/lv_node1
Logical volume "rh6_snap1" created
2. 导出模板机的XML描述,并修改为新虚拟机的定义(新名称、新UUID、新磁盘设备)
[root@kvmsvr ~]# virsh dumpxml node1 > rh6muban.xml
[root@kvmsvr ~]# vim rh6muban.xml
.. ..
另存为 rh6_snap1.xml
3. 建立新的虚拟机
[root@kvmsvr ~]# virsh define rh6_snap1.xml //导入
定义域 rh6_snap1(从 rh6_snap1.xml)
[root@kvmsvr ~]# virsh list --all //确认结果
.. ..
- rh6_snap1 关闭
#########################################################