KVM简介
虚拟化概念(KVM --- 全称是基于内核的虚拟机(Kernel-based Virtual Machine))
- virtualization资源管理
-- x个物理资源 -- > y个逻辑资源
-- 实现程度:完全,部分,硬件辅助(CPU)
虚拟化主要厂商及产品
系列 | PC/服务器代表 |
---|---|
VMware | VMware Workstaion , vSphere |
Microsoft | VIrtualPC,Hyper-V |
RedHat | KVM,RHEV |
Citrix | Xen |
Oracle | Oracle VM VIrtualBox |
安装虚拟化服务器平台
- 必备软件
1.qemu-kvm -为kvm提供底层仿真支持
2.libvirt-daemon -libvirtd守护进程,管理虚拟机
3.libvirt-client -用户端软件,提供客户端管理命令
4.libvirt-daemon-driver-qemu -libvirtd连接qemu的驱动 - 可选功能
1.virt-install #系统安装工具
2.virt-manager #图形管理工具
3.virt-v2v #虚拟机迁移工具
4.virt-p2v #物理机迁移工具 - 虚拟化平台的安装
yum -y install qemu-kvm libvirt-daemon libvirt-client libvirt-daemon-driver-qemu
systemctl start libvirtd
KVM虚拟机的组成
- 内核虚拟化模块(KVM)
- 系统仿真设备(QEMU)
- 虚拟化管理程序(LIBVIRT)
- 一个XML文件(虚拟机配声明文件)
- 位置/etc/libvirt/qemu/
- 一个磁盘镜像文件(虚拟机的硬盘)
- 位置/var/lib/libvirt/images
管理KVM平台
virsh命令工具介绍
- virsh虚拟机管理
- virsh list [–all] 列出虚拟机
- virsh start | shutdown | reboot 启动,停止,重启
- virsh destroy 强制停止虚拟机
- virsh define | undefine 根据xml文件创建/删除虚拟机
- virsh console 连接虚拟机的console
- virsh edit 修改虚拟机的配置
- virsh autostart 设置虚拟机自启动
- domiflist 查看虚拟机网卡信息
- domblklist 查看虚拟机硬盘信息
virsh 虚拟网络管理 - virsh net-list [–all] 列出虚拟网络
- virsh net-start 启动虚拟交换机
- virsh net-destroy 强制停止虚拟交换机
- virsh net-define 根据xml文件创建虚拟网络
- virsh net-undefine 删除一个虚拟网路设备
- virsh net-edit 修改虚拟交换机的位置
- virsh net-autostart 设置虚拟交换机自启动
常用镜像盘类型
特点/类型 | RAW | QCOW2 |
---|---|---|
KVM默认 | 否 | 是 |
I/O效率 | 高 | 较高 |
占用空间 | 大 | 小 |
压缩 | 不支持 | 支持 |
后端盘复用 | 不支持 | 支持 |
快照 | 不支持 | 支持 |
qemu-img命令
- qemu-img是虚拟机的磁盘管理命令,支持非常多的磁盘格式,例如raw,qcow2,vdi,vmdk等等
- qemu-img命令格式:qemu-img 命令 参数 快文件名称 大小
- 常用命令
- create 创建一个磁盘
- convert 转换磁盘格式
- info 查看磁盘信息
- resize 扩容磁盘空间
- qemu-img create -f 格式 磁盘路径 大小 //创建新的镜像盘文件(qemu-img create -f qcow2 disk.img 50G)
- qemu-img info 磁盘路径 //查询镜像盘文件的信息(qemu-img info disk.img)
- qemu-img create -b disk.img -f qcow2 disk1.img //使用后端模板文件
COW技术原理
Copy On Write 写时复制
- 直接映射原始盘的数据内容
- 当数据有修改要求时,在修改之前自动将旧数据拷贝存入前端盘后,对前端盘进行修改
- 原始盘始终是只读的.
虚拟机管理–xml管理
创建xml文件
- virsh edit 虚拟机名 //对虚拟机配置进行调整
批量创建 虚拟机
克隆脚本命令
- 创建虚拟机
cd /var/lib/libvirt/images/
qemu-img create -f qcow2 -b node.qcow2 node1.img 20G - 修改xml文件
sed ‘s,node,node1,’ node.xml > /etc/libvirt/qemu/node1.xml - 定义xml文件
virsh define /etc/libvirt/qemu/node1.xml - 开启虚拟机
virsh start node1
网卡及配置文件
/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0 //驱动名称,与ifconfig看到的名称一致
ONBOOT=yes //开机启动
NM_CONTROLLED=no //不接受NetworkManager控制
TYPE=Ethernet //类型
BOOTPROTO=static //协议(dhcp|static|none)
IPADDR=192.168.1.1 //IP地址
NETMASK=255.255.255.0 //子网掩码
GATEWAY=192.168.1.254 //默认网关
virsh扩容磁盘
- domblklist 查看虚拟机硬盘信息
- blockresize --path [绝对路径] --size 50G openstack
扩容思路:硬盘–分区–文件系统
根分区扩容:
- 语言必须设置为英文 LANG=C
- 查看硬盘是否有多余空间 lsblk
- 扩容第一个分区 /usr/bin/growpart /dev/vda1
- 扩容文件系统 /usr/sbin/xfs_growfs /
- 检查扩容结果 df -h