目录
虚拟化概述
全虚拟化:Hypervisor(虚拟化管理程序)直接安装在物理机上,多个虚拟机在Hypervisor上运行,Hypervisor实现方式一般是一个特殊定制的Linux系统,Xen和Esxi都属于这个类型,性能上比半虚拟化高。
半虚拟化:Hypervisor安装在操作系统上,比较灵活,理论上可支持虚拟机嵌套。
KVM介绍
KVM全称Kernel-Based Virtual Machine。其是基于Linux内核实现,模块名称为kvm.ko,只用于管理虚拟CPU和内存。
Libvirt,KVM的管理工具,除了能管理KVM这种Hypervisor,还能管理Xen,VirtualBox等。其包含三类组件,后台daemon程序libvirtd、API库、命令行工具virsh。
libvirtd是服务程序,接收和处理API请求;
API库是的其他人可以开发基于libvirt的高级工具,比如virt-manager,这个是图形化的管理工具;
virsh是KVM命令行管理工具;
KVM安装
# 关闭selinux和防火墙
sentenforce 0
vim /etc/selinux/config //set disabled
systemctl disable firewalld
systemctl stop firewalld
# 安装kvm组件
yum install qemu-kvm qemu-kvm-tools qemu-img virt-manager libvirt libvirt-python libvirt-client virt-install virt-viewer bridge-utils libguestfs-tools
# 启动服务
systemctl enable libvirtd
systemctl start libvirtd
KVM管理
创建虚拟机
虚拟机安装命令,参数如下:
# 通用选项
--name=NAME 虚拟机名称,全局唯一
--ram=MEMORY 虚拟机内存大小,单位为MB
--vcpus=VCPUS 虚拟机cpu核心数
# 安装方法
--cdrom=CDROM 光盘介质安装
--location=LOCATION 安装源url,支持ftp、http、NFS等
--pxe 基于PXE安装
--os-type=DISTRO_TYPE 操作系统类型,如linux、unix、windows等
--os-variant=DISTRO_VARIANT 某类操作系统的变体,如rhel5、fedora8等
--disk=DISKOPTS 指定存储设备及属性
size 指定文件大小,单位为GB
--network bridge=INTERFACE_NAME 指定虚拟机网络,选择虚拟机网卡名称
虚拟机创建:
virt-install --name=ceph01 --ram=1024 --disk path=/data/kvm/ceph01/ceph01.img,size=10 --location=/opt/centos.ios --os-variant=rhel7 --graphics=none --console=pty,target_type=serial --extra-args="console=tty0 console=ttyS0"
通过已经存在的虚拟机镜像文件部署虚拟机
virt-install --name test --memory 1024 --disk /kvm/test/test.img --import --network bridge=virbr0 --graphics none --console=pty,target_type=serial
virsh管理工具
# 进入管理界面
virsh
# 查看可用的命令
help
# 虚拟机操作命令
start vm_name // 开启虚拟机
shutdown vm_name // 关闭虚拟机
undefine vm_name // 删除虚拟机
console vm_name // 进入虚拟机终端界面
list // 查看正在运行的虚拟机,--all 查看所有的虚拟机
edit vm_name // 修改虚拟机配置
# 网络配置
net-list // 查看正在运行的网络,--all 查看所有的网络
net-edit --network net_name // 修改网络配置
net-define --file net_file // 通过配置文件创建网络
# 给虚拟机添加网卡
attach-disk --domain ceph01 --persistent --type bridge --source virbr0
磁盘管理
# 创建磁盘文件
qemu-img create -f qcow2 ceph03-3.img 10G
# 给虚拟机添加磁盘
attach-disk --domain ceph03 --source /kvm/ceph03/ceph03-3.img --subdriver qcow2 --target sdc --persistent
# 转换磁盘格式
qemu-img convert -O qcow2 test.raw test.qcow2
qemu-img convert -O qcow2 test.img test.qcow2
qemu-img convert -O vmdk test.qcow2 test.vmdk
qemu-img convert -O qcow2 test.vmdk test.qcow2
快照管理
# 创建快照
virsh snapshot-create --domain vm_name
virsh snapshot-create-as --domain vm_name --name snapshot_name --description vm_desc
# 恢复快照
virsh snapshot-revert vm_name snapshot_name
# 删除快照
virsh snapshot-delete --domain vm_name --snapshotname snapshot_name
Web管理工具
WebVirtMgr采用几乎纯Python开发,其前端是基于Libvirt的Python接口,将日常的管理操作变得更加的可视化。
宿主机管理功能
- CPU利用率
- 内存利用率
- 网络资源池管理
- 存储资源池管理
- 虚拟机镜像
- 虚拟机克隆
- 快照管理
- 日志管理
- 虚拟机迁移
虚拟机管理功能
- CPU利用率
- 内存利用率
- 光盘管理
- 关/开/暂停虚拟机
- VNC Console 连接
- 创建快照
配置Libvirtd
# 安装依赖
yum install cyrus-sasl*
# 修改 /etc/sysconfig/libvirtd,支持通过tcp连接
LIBVIRTD_ARGS="--listen" // 取消该行注释
# 修改 /etc/sasl2/libvirt.conf,配置用户密码文件位置及mech_list
sasldb_path: /etc/libvirt/passwd.db // 取消该行注释
mech_list: digest-md5 // 修改mech_list为digest-md5
# 配置 /etc/libvirt/libvirtd.conf
listen_tcp = 1 // 允许tcp监听
listen_tls = 0
tcp_port = "16509" // 监听端口
listen_addr = "0.0.0.0" // 监听地址
auth_tcp = sasl // tcp 认证方式
# 配置/etc/libvirt/qemu.conf
vnc_listen = "0.0.0.0" // 取消注释
# 重启服务
systemctl restart libvirtd
# 创建连接账号密码
saslpasswd2 -a libvirt admin
...... enter password
# 重启服务
systemctl restart libvirtd
WebVirtMgr安装
# 安装依赖包
yum install git python-pip python-libvirt python-libxml2 novnc supervisor nginx
# 下载源码
git clone git://github.com/retspen/webvirtmgr.git
# 配置及启动
cd webvirtmgr
pip install -r requirement.txt // 安装项目依赖
./manage.py syncdb // 配置管理员账号密码
./manage.py collectstatic // 整理静态文件
./manage.py runserver 0:8000 // 启动
Web连接
连接方式:http://ip_address:8000,通过账号密码登陆,再添加libvirt宿主机。