KVM构建及管理(Linux虚拟化平台) 、 virsh控制工具 、 镜像管理 、 虚拟机快建技术、离线访问虚拟机

KVM构建及管理(Linux虚拟化平台)

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

评论