文章目录
虚拟化主要厂商及产品
系列 | PC/服务器版代表 |
---|---|
VMware | VMware Workstation、vSphere |
Microsoft | VirtualPC、Hyper-V |
RedHat | KVM、RHEV |
Citrix | Xen |
Oracle | Oracle VM VirtualBox |
kvm
kvm
- KVM是linux内核的模块,需要CPU的支持,采用硬件辅助虚拟化技术Intel-VT,AMD-V,内存的相关如Intel的EPT和AMD的RVI技术
QEMU
- QEMU是一个虚拟化的仿真工具,通过ioctl与内核kvm交互完成对硬件的虚拟化支持
LIBVIRTD
- Libvirt是一个对虚拟化管理的接口和工具,提供用户端程序virsh,virt-install,virt-manager,virt-view与用户交互
kvm必备软件
- qemu-kvm
– 为kvm提供底层仿真支持 - libvirt-daemon
– libvirtd守护进程,管理虚拟机 - libvirt-client
– 用户端软件,提供客户端管理命令 - libvirt-daemon-driver-qemu
– libvirtd连接qemu的驱动
可选功能
– virt-install #系统安装工具
– virt-manager #图形管理工具
– virt-v2v #虚拟机迁移工具
– virt-p2v #物理机迁移工具
KVM虚拟机的组成
-
虚拟机的组成
– 内核虚拟化模块(KVM)
– 系统设备仿真(QEMU)
– 虚拟机管理程序(LIBVIRT) -
一个XML文件(虚拟机配置声明文件)
– 位置/etc/libvirt/qemu/ -
一个磁盘镜像文件(虚拟机的硬盘)
– 位置/var/lib/libvirt/images/
管理KVM平台
- 格式:virsh 控制指令 [虚拟机名称] [参数]
虚拟机管理
virsh list #列出当前正在运行的虚拟机
virsh list --all #列出当前所有的虚拟机
virsh start|shutdown|reboot 虚拟机名 #虚拟机启动,停止,重启
virsh destroy 虚拟机名 #强制停止虚拟机
virsh define xml文件 #根据xml文件创建虚拟机
virsh undefine 虚拟机名 #删除虚拟机
#把xml文件删除了,但是镜像文件没有删除
virsh console 虚拟机名 #简介虚拟机的console
virsh edit 虚拟机名 #修改虚拟机的配置
virsh autostart 虚拟机名 #设置虚拟机自启动
virsh autostart --disable 虚拟机名 #取消虚拟机自启动
virsh domiflist node1 #查看虚拟机网卡信息
virsh domblklist node1 #查看虚拟机硬盘信息
virsh dominfo node1 #查看虚拟机详细信息
虚拟网络管理
virsh net-list [--all] #列出虚拟网络
virsh net-start 网卡名 #启动
virsh net-destroy 网卡名 #强制停止虚拟交换机
virsh net-define xml文件 #根据xml文件创建虚拟网络
virsh net-undine 网卡名 #删除一个虚拟网络设备
virsh net-edit 网卡名 #修改虚拟交换机的配置
virsh net-autostart 网卡名 #自启动
qemu-img基本操作管理
常见镜像类型
特点/类型 | RAW | QCOW2 |
---|---|---|
KVM默认 | 否 | 是 |
I/O效率 | 高 | 较高 |
占用空间 | 大 | 小 |
压缩 | 不支持 | 支持 |
后端盘复用 | 不支持 | 支持 |
快照 | 不支持 | 支持 |
qemu-img 命令
格式:qemu-img 命令 参数 快文件名称 大小
- 创建一个新的镜像盘文件
qemu-img create -f qcow2 disk.img 50G #qcow2为创建的格式
Formatting 'disk.img', fmt=qcow2 size=53687091200 encryption=off cluster_size=65536 lazy_refcounts=off
- 使用后端模板文件创建一个新的镜像盘文件
备注:-b使用后端模板文件
qemu-img create -b disk.img -f qcow2 disk1.img
Formatting 'disk1.img', fmt=qcow2 size=53687091200 backing_file='disk.img' encryption=off cluster_size=65536 lazy_refcounts=off
- 使用后端模板文件创建一个16G的镜像盘文件
qemu-img create -b disk.img -f qcow2 disk2.img 16G
Formatting 'disk1.img', fmt=qcow2 size=53687091200 backing_file='disk.img' encryption=off cluster_size=65536 lazy_refcounts=off
查看镜像文件的信息
qemu-img info disk.img
qemu-img info disk1.img
qemu-img info disk2.img
创建虚拟机
- 创建虚拟机
cd /var/lib/libvirt/images/
qemu-img create -f qcow2 -b node.qcow2 node1.img 20G - 修改xml文件
改名,指定镜像文件 - 定义xml文件
virsh define /etc/libvirt/qemu/node1.xml - 开启虚拟机
virsh start node1
脚本
#!/bin/bash
while (($#))
do
cd /var/lib/libvirt/images
qemu-img create -f qcow2 -b node.qcow2 ${1}.img 20G
cd /etc/libvirt/qemu
sed "s/node/${1}/" /etc/libvirt/qemu/node.xml > $1.xml
virsh define /etc/libvirt/qemu/$1.xml
shift
done
网卡配置文件说明
- /etc/sysconfig/network-scripts/ifcfg-eth0
– DEVICE=eth0 #驱动名称,与ifconfig看到的名称一致
– BOOTPROTO=none #协议(dhcp|static|none(不建议))
– ONBOOT=yes #开机启动
– IPADDR=192.168.4.11 #IP地址
– NM_CONTROLLED=no #不接受NetworkManager控制
– TYPE=Ethernet #类型
– GATEWAY=192.168.4.254 #默认网关
virsh扩容磁盘
- 扩容思路
– 首先扩硬盘
– 其次扩容分区
– 再扩容文件系统
扩容硬盘
virsh domblklist abc #查看虚拟机硬盘信息
virsh blockresize --path /var/lib/libvirt/images/abc.img --size 50G abc
扩容分区
LANG=C #语言必须设置为英文
growpart /dev/vda 1 #扩容第一个分区
扩容文件系统
blkid
xfs_growfs /dev/vda1