KVM构建及管理(Linux虚拟化平台) 、 virsh控制工具 、 镜像管理 、 虚拟机快建技术、离线访问虚拟机
Linux 虚拟化平台
类似windows的vmware 但Vmware 不是一个软件 而是一堆软件 - virtualization 资源管理 虚拟化资源管理 - x个物理资源 -- 》 y个逻辑资源 - 实现程序:完全虚拟化,部分虚拟化(不虚拟CPU)、硬件辅助虚拟化(CPU) 虚拟化发展经历的3个时期 完全虚拟化:虚拟机需要备注请求来源 所以慢 部分虚拟化:需要更改虚拟的操作系统,你没有CPU,使用真机的CPU,这个技术太难 硬件辅助虚拟化:cpu支持虚拟化,无需备注,请求被处理后也能返回虚拟机
查看Linux 是否支持虚拟化
lscpu | grep vmx - 如不支持 需要关机 调整cpu参数 内存参数 设置-》双击处理器 虚拟化引擎 勾上 内存设置为6G
虚拟化主要厂商及产品
系列|PC/服务器版代表 VMware|VMware Workstation、vSphere(专为企业服务 收费) Microsoft|VirtualPC、Hyper-V RedHat|KVM、RHEV(专为企业服务 收费) Citrix|Xen Oracle|Oracle VM VirtualBox
安装虚拟化服务器平台
- 主要软件包 qemu-kvm:为kvm提供仿真支持 libvirt-daemon:libvirtd 守护进程,管理虚拟机 libvirt-client:用户端软件,提供客户端管理命令 libvirt-daemon-driver-qemu:libvirtd 连接qemu的驱动 virt-manager:图形化管理工具
- 全部安装: yum -y install qemu-kvm yum -y install libvirt-daemon yum -y install libvirt-client yum -y install libvirt-daemon-driver-qemu yum -y install virt-manager 包装完了,默认会开启虚拟化服务, systemctl status libvirtd - 将光盘ISO镜像文件拷进linux系统中 根目录下 创建一个iso 把镜像文件放进去 /iso/CentOS7-1804.iso - 利用linux平台的kvm图形化管理工具新建虚拟机 virt-manager 点击新建虚拟机,点击本地浏览,点击文件系统,选择上一步的镜像,内存不能给1G,装不上;内存给2G;存储3G 最小化安装,及其名字nsd01 点击完成
如果linux虚拟出来的虚拟机nsb01不能识别键盘鼠标, 方法一:[点击 灯泡标识(显示虚拟硬件详情) 显示协议修改类型为vnc服务器、引导选项勾选IDE CDROM;修改IDE CDROM 选择正确的路径] 方法二:ctrl + alt 释放鼠标
管理虚拟化平台
- virsh 提供管理各虚拟机的命令接口 支持交互模式,查看、创建、停止、关闭。。。 格式:virsh 控制指令 【虚拟机名称】 【参数】 quit 退出 list 列出正在运行的虚拟机 list --all 列出所有的虚拟机 也支持非交互 virsh list --all - 查看KVM节点(服务器)信息 virsh nodeinfo 查看的是安装虚拟机的父机器的信息
- 列出虚拟机 virsh list [--all] - 查看指定虚拟机的信息 virsh dominfo 虚拟机名称 - 运行、重启、关闭指定的虚拟机 virsh start|reboot|shutdown 虚拟机名称 - 强制关闭指定的虚拟机 virsh destroy 虚拟机名称 - 将指定的虚拟机设为开机自动运行 virsh autostart [--disable] 虚拟机名称
【重点】一台KVM虚拟机的组成
xml默认目录路径
/etc/libvirt/qemu xml配置文件(虚拟机描述文件):定义虚拟机的名称、UUID、CPU、内存、虚拟磁盘、网卡等各种参数设置 - 虚拟机的名称 <name>nsb02</name> - 虚拟机的唯一标识 <uuid>d0430df7-a67c-41b7-9116-490ce215d6f2</uuid> - 虚拟机的磁盘 <disk type='file' device='disk'> <driver name='qemu' type='qcow2'/> <source file='/var/lib/libvirt/images/nsb02.qcow2'/> <target dev='vda' bus='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/> </disk> - 虚拟机的网卡 type='network' <mac address='52:54:00:df:df:92'/>
磁盘镜像文件默认目录路径
/var/lib/libvirt/images 磁盘镜像文件:保存虚拟机的操作系统及文档数据,镜像路径取决于xml配置文件的定义
-
常用的磁盘镜像文件格式
特点\类型 | RAW | QCOW2 |
---|---|---|
KVM默认 | 否 | 是 |
I/O | 高 | 较高 |
占用空间 | 大 | 小 |
压缩 | 不支持 | 支持 |
后端盘复用 | 不支持 | 支持 |
快照 | 不支持 | 支持 |
虚拟机的快速建立
[root@A ~]# ls /etc/libvirt/qemu networks nsb02.xml nsd01.xml [root@A ~]# ls /var/lib/libvirt/images/ nsb02.qcow2 nsd01.qcow2 - 拷贝磁盘文件 cp /var/lib/libvirt/images/nsb02.qcow2 /var/lib/libvirt/images/stu01.qcow2 - 拷贝xml文件 cp /etc/libvirt/qemu/nsb02.xml /etc/libvirt/qemu/stu01.xml - 修改xml文件 修改名称、UUID、硬盘、网卡 修改uuid的方法: 1、uuidgen 产生uuid的命令 2、uuid整行删除 uuid 修改网卡: 整行删除 mac address 3、导入虚拟机 virsh define /etc/libvirt/qemu/stu01.xml
- 查看 virsh list --all - 启动 virsh start
常见错误
磁盘路径写错(导入不会错。启动会错,修改xml配置文件后,重新导入一下,再启动)
查看虚拟机xml配置文件信息
virsh dumpxml nsb02 (会将配置文件的信息 输出到屏幕上)
virsh edit (多合一命令) 修改配置并导入
cp /var/lib/libvirt/images/nsb02.qcow2 /var/lib/libvirt/images/stu02.qcow2
virsh edit nsb02
镜像管理 & 虚拟机快建技术
虚拟机创建的痛点
磁盘拷贝太慢
常用的磁盘镜像文件格式
特点\类型 | RAW | QCOW2 |
---|---|---|
KVM默认 | 否 | 是 |
I/O | 高 | 较高 |
占用空间 | 大 | 小 |
压缩 | 不支持 | 支持 |
后端盘复用 | 不支持 | 支持 |
快照 | 不支持 | 支持 |
COW技术原理
- Copy On Write,写时复制 直接映射原始盘(后端盘)的数据内容; 对前端盘的修改不回写到原始盘(后端盘)。 前端盘的大小要大于等于原始盘 原始盘数据不能修改 一旦通过原始盘生成了前端盘,原始盘就不能修改了,一旦修改,前端盘就废了
例子
原始盘有10G数据 通过命令【一瞬间】生成了前端盘(前端盘看到的数据其实都是快捷方式) 只有当前端盘发生写操作时才复制(写时复制)
命令
qemu-img create -f qcow2 -b 后端盘 前端盘 大小 qcow2 是格式 - 操作 cd /var/lib/libvirt/images/ qemu-img create -f qcow2 -b stu02.qcow2 q03.qcow2 qemu-img info q03.qcow2 image: q03.qcow2 file format: qcow2 virtual size: 9.0G (9663676416 bytes) # 虚拟大小 disk size: 196K # 实际占用空间大小 cluster_size: 65536 backing file: stu02.qcow2 (原始盘) Format specific information: compat: 1.1 lazy refcounts: false virsh edit stu02
删除虚拟机 (前提关机)
virsh undefine 虚拟机的名字 磁盘镜像文件并没有删除 使用 rm -rf
离线访问虚拟机
yum -y install libguestfs-tools-c guestmount 离线挂载虚拟机 (注意selinux的影响) guestmount -a nsb02.qcow2 -i /mnt/nsb02
点赞(1)
评论