KVM虚拟机的简单使用[纯文本]

系统:

CentOS7

内容:

一、KVM构建和管理
二、virsh控制工具
三、镜像管理
四、虚拟机快建技术
五、离线访问虚拟机


一、KVM构建及管理

1.搭建KVM服务器

1.1 虚拟化概述

  • 虚拟化作用:
    • 将一套或多套物理资源整合为平台,以软件的方式虚拟出更多可用的计算机资源。
  • 虚拟化优势:
    • 以一变多,节省成本;资源调度更加灵活,提高效率。
  • virtualization资源管理器
- x个物理资源 --> y个逻辑资源  
- 实现程度: 完全、部分、硬件辅助(CPU)  
- 虚拟化平台─┬─ 虚拟机1 ── RHEL7.5  
            ├─ 虚拟机2 ── CentOS7.2  
            ├─ 虚拟机3 ── Win2012  
            ├─ ...  
  • 虚拟化主要厂商及产品:
系列        PC/服务器版代表  
VMware      Workstation、vSphere  
Microsoft   VirtualPC、Hyper-V  
RedHat      KVM、RHEV  
Citrix      Xen  
Oracle      Oracle VM VirtualBox  

1.2 安装KVM

1.2.1 检查系统是否支持虚拟化  
- 物理机需要进入BIOS开启  
- 虚拟机需要开启虚拟化支持选项"虚拟化Intel VT-x/EPT或AMD-V/RVI"  
]# egrep "vmx|smv" /proc/cpuinfo            #有输出代表支持虚拟化  
    # vmx,Intel CPU  
    # smv,AMD CPU  

1.2.2 安装KVM  
]# yum -y install qemu-kvm qemu-img virt-manager virt-viewer libvirt libvirt-client \  
> libvirt-python  
    # qemu-kvm : KVM模块  
    # qemu-img : qemu组件,创建磁盘、启动虚拟机等功能  
    # qemu-kvm-tools : KVM调试工具  
    # virt-manager : 虚拟机图形管理工具  
    # virt-viewer :  虚拟机图形界面查看器  
    # virt-install : 命令行安装虚拟机  
    # libvirt :        虚拟机管理工具virsh  
    # libvirt-client : 虚拟机管理工具客户端  
    # libvirt-python : 虚拟机管理工具python组件  
    # python-virtinst : python组件,记录创建VM时的xml文件  
    # bridge-utils : 网络支持工具  
]# lsmod | grep kvm                              #确认KVM是否安装  
    kvm_intel             183621  12             #KVM已安装  
    kvm                   586948  1  kvm_intel  
    irqbypass             13503   19 kvm  

1.2.3 启动libvirtd服务  
- libvirtd为管理虚拟机提供服务接口  
- 调用 dnsmasq ,提供DNS、DHCP等功能  
- 建立 virbr0 ,虚拟网络(192.168.122.0/24)  
    ]# systemctl start libvirtd && systemctl enable libvirtd  
    ]# ifconfig virbr0  

1.3 配置桥接网卡

1.3.1 查看外网网卡  
    ]# ip a  

1.3.2 配置桥接网卡br0  
]# cp /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-br0  
]# vi /etc/sysconfig/network-scripts/ifcfg-br0  
    DEVICE=br0  
    TYPE=Bridge                     #修改  
    ONBOOT=yes  
    NM_CONTROLLED=no                #不实时生效  
    BOOTPROTO=dhcp                  #使用dhcp  
    UUID=  

1.3.3 重启网卡服务  
]# systemctl restart network


2.图形管理KVM平台

2.1 连接本地/远程KVM

  • 使用命令 ]# virt-manager
  • 【应用程序】-【系统工具】-【虚拟系统管理器】
  • 添加连接
  • 默认连接本机的libvirtd服务

2.2 管理虚拟网络

  • 添加新的虚拟网络
    - 【编辑】-【连接详情】-【虚拟网络】-【添加网络】

2.3 新建虚拟机

  • 【文件】-【新建虚拟机】
  • 根据向导提示创建新虚拟机
    - 选择镜像
    - 设置CPU/内存
    - 设置虚拟机名称/网络
    - 查看5900端口是否被监听,KVM虚拟机监听端口会从5900开始逐渐递增

2.4 虚拟机的基本控制

  • 虚拟机的运行/关机/克隆/删除/打开
  • 配置虚拟机硬件(灯泡)


二、virsh控制工具

1.操作虚拟机

1.1 virsh命令工具介绍

  • 提供管理各虚拟机的命令接口
    - 支持交互模式,查看、创建、停止、关闭
    - 格式:
    ]# virsh 控制指令 [虚拟机名称] [参数]
    ]# virsh #进入虚拟化交互式终端,quit退出

1.2 查看虚拟化信息

]# virsh nodeinfo                                #查看KVM节点(服务器)信息  
]# virsh list \[--all|--inactive\] \[--name\]    #列出活跃虚拟机,\[全部|不活跃\],\[只输出域名\]  
]# virsh dominfo 虚拟机名                         #查看指定虚拟机(域)的信息,dominfo=domain info  
]# virsh net-list \[--all\]                      #列出活跃网络,\[全部网络\]  

1.3 开关虚拟机操作

]# virsh start|reboot|shutdown 虚拟机名         #启动、重启、关闭 指定虚拟机  
]# virsh destroy 虚拟机名                               #强制关闭虚拟机,destroy=破坏  
]# virsh autostart \[--disable\] 虚拟机名            #指定虚拟机开机自启\[关闭\] 

1.4 连接虚拟机

1)图形连接

]# virt-viwer 虚拟机名

2)命令行连接

]# virsh console 虚拟机名           #需要回车一次  
    - 退出命令行连接: 【ctrl】+【\]】  
    - 连接卡住的解决办法(在虚拟主机执行):  
]# grubby --update-kernel=ALL --args="console=ttyS0"  
]# reboot  

1.5 虚拟机快照

]# virsh snapshot-create-as 域(虚拟机)名 快照名                     #使用一组参数为域创建快照  
]# virsh snapshot-list 虚拟机名                                    #查看虚拟机快照  
]# virsh snapshot-revert 域名 快照名                               #恢复到虚拟机的快照状态  
]# virsh snapshot-delete 域名 快照名                               #删除虚拟机的快照  

1.6 virsh其它操作

]# virsh domstate 虚拟机名                                                  #查看虚拟机运行状态  
]# virsh domblklist 域名                                                   #查看虚拟机块设备  
]# virsh domiflist 域名                                                    #查看虚拟机网卡信息  
]# virsh -c qemu:///system attach-interface 虚拟机名称 bridge 网桥名称 --model virtio  
                                                                          #添加网卡  
- 添加硬盘  
]# virsh -c qemu:///system attach-disk 虚拟机名称 虚拟机磁盘文件 sdb \  
> --subdriver qcow2 --sourcetype file                                     #

2.xml配置文件

  • xml配置文件定义了一个虚拟机的名称、UUID、CPU、内存、虚拟磁盘、网卡等各种参数设置
  • 默认位于 /etc/libvirt/qemu/虚拟机名.xml

2.1 xml配置文件

  • 查看xml配置文件
    ]# virsh dumpxml 虚拟机名
  • 备份xml配置文件
    ]# virsh dumpxml 虚拟机名 > 备份名.xml

2.2 编辑xml虚拟机设置

  • 对虚拟机的xml配置文件进行调整
    ]# virsh edit 虚拟机名
    #若修改name、uuid、disk、mac,会自动保存为新虚拟机配置

2.3 定义新虚拟机

  • 根据修改后的独立xml文件定义新虚拟机
    ]# virsh define xml文件 #define,定义

2.4 删除虚拟机

  • 必要时可去除多余的xml配置文件
    - 比如虚拟机改名的情况
    - 避免出现多个虚拟机的磁盘或MAC地址冲突
    - 删除虚拟机之前,必须先删除虚拟机的快照
    ]# virsh undefine 虚拟机名
    #这个操作只会删除xml文件,
    #还要到 /var/lib/libvirt/images/ 删除对应的镜像文件


三、镜像管理

1.虚拟机磁盘镜像

1.1 常用的虚拟机磁盘镜像文件格式

            ┌──────────┬──────┬──────┐  
            │特点\\类型 │ RAW  │QCOW2 │  
            ├──────────┼──────┼──────┤  
            │ KVM默认   │  否  │  是  │  
            ├──────────┼──────┼──────┤  
            │ I/O效率   │  高  │ 较高 │  
            ├──────────┼──────┼──────┤  
            │ 占用空间  │  大  │  小  │  
            ├──────────┼──────┼──────┤  
            │   压缩    │不支持│ 支持 │  
            ├──────────┼──────┼──────┤  
            │后端盘复用 │ 不支持│ 支持 │  
            ├──────────┼──────┼──────┤  
            │   快照   │ 不支持 │ 支持 │  
            └──────────┴──────┴──────┘  

1.2 创建虚拟机磁盘镜像

  • 创建新的虚拟机镜像盘文件
]# qemu-img create -f 镜像盘格式 镜像盘路径/镜像盘名 镜像盘大小        #-f=format  
    #镜像盘格式:qcow2,随使用而逐渐增加的使用空间,不会超过设置的最大空间  
]# qemu-img create -f qcow2 /var/lib/libvirt/images/disk1.qcow2 20G  
  • 查询镜像盘文件的信息
]# qemu-img info 镜像路径/镜像名  
]# qemu-img info /var/lib/libvirt/images/disk1.qcow2  
  • 镜像盘格式转换
]# qemu-img convert -f 源镜像盘格式 源磁盘名 -O 输出镜像盘格式 输出镜像盘名  
]# qemu-img convert -f qcow2 disk1.qcow2 -O raw disk1.raw  

1.3 创建、还原、删除快照

  • 快照的作用
    - 在虚拟机磁盘镜像内记录不同时间点的状态数据备份
    - 必要时可将虚拟机恢复到指定的快照
  • 快照的基本用法:
]# qemu-ima snapshot -c 快照名 qcow2镜像名      #创建磁盘镜像快照,-c=creates=创建  
]# qemu-img snapshot -l qcow2镜像名            #列出磁盘镜像的快照,-l=lists=列表  
]# qemu-img snapshot -a 快照名 qcow2镜像名      #恢复镜像的快照,-a=applies=应用  
]# qemu-img snapshot -d 快照名 qcow2镜像名      #删除镜像的快照,-d=deletes=删除


四、虚拟机快建技术

1.快建虚拟机的思路

1.1 一台KVM虚拟机的组成:

  • xml配置文件:定义虚拟机的名称、UUID、CPU、内存、虚拟磁盘、网卡等各种参数设置
  • 磁盘镜像文件:保存虚拟机的操作系统及文档数据,镜像路径取决于xml配置文件中的定义

1.2 快建要点

1)准备一台模板虚拟机(xml配置文件+镜像磁盘)
2)基于磁盘复用技术(COW)快建新虚拟机的磁盘
3)通过调整模板机的配置文件,达成快建新虚拟机的xml配置文件
4)定义新虚拟机

1.3 COW技术原理

  • Copy On Write , 写时复制
    - 直接映射原始盘的数据内容
    - 当原始盘的旧数据有修改时,在修改之前自动将旧数据存入前端盘
    - 对前端盘的修改不会写到原始盘
    - 前端盘只拥有制成的一瞬间时,原始盘的所有数据内容

2.快建新虚拟机

2.1 准备模板虚拟机

  • 模板机的选择: 可以用现有虚拟机,也可以再安装一台新虚拟机
  • 模板机的初始化:
    - 预装软件、系统优化、关闭SELinux等
    - 生产环境可以标记/.unconfigured,方便新虚拟机的配置(相当于出场配置,提示用户初始化)
    - 备份好模板磁盘、xml配置文件
    - 删除模板机(undefine)

2.2 快速创建qcow2前端盘

  • 默认虚拟机磁盘路径: /var/lib/libvirt/images/
    ]# cd /var/lib/libvirt/images
  • 后端盘复用
    ]# qemu-img create -f qcow2 -b 后端盘(复用盘) 前端盘(新建盘)
    ]# qemu-img create -f qcow2 -b old.qcow2 new.qcow2 #new复用后端盘old
  • 对比两盘大小
    ]# ls -h *.qcow2
    -rw-r--r-- 1 root root 198K 12月 9 13:55 new.qcow2
    -rw-r--r-- 1 qemu qemu 3.2G 12月 7 11:08 old.qcow2

2.3 配置新虚拟机

  • 默认虚拟机xml配置路径: /etc/libvirt/qemu
    ]# cd /etc/libvirt/qemu
  • 拷贝模板机的xml配置文件
    - 按需要修改,并据此定义新虚拟机
    ]# cp old.xml new.xml
    ]# vim new.xml
    #必须修改name、uuid、disk、mac,避免冲突
  • 定义新虚拟机
    ]# virsh define new.xml

2.4 新虚拟机的交付使用

  • 正常运行快建的新虚拟机
    - 检查已经装好的操作系统,登入后与模板机一样
    - 用户自行修改主机名/ip地址等参数

2.5 快建虚拟机脚本

]# vim clone.sh  
#!/bin/bash  
xml_DIR=/etc/libvirt/qemu  
img_DIR=/var/lib/libvirt/images  
virsh list --all  
read -p "请输入 模板机 名:" muban  
Mxml=${xml_DIR}/$muban.xml  
Mdisk=${img_DIR}/${muban}.qcow2  
read -p "请输入 新主机 名:" new  
Nxml=${xml_DIR}/${new}.xml  
Ndisk=${img_DIR}/${new}.qcow2  
virsh dumpxml $Mxml > $Nxml                                         #定义新xml文件  
qemu-img create -f qcow2 -b $Mdisk $Ndisk                           #定义新镜像盘,后端盘复用  
sed -ri "s#(<name>)(.*)(</name>)#\\1${new}\\3#" $Nxml               #设置主机名  
sed -ri "s#(<uuid>)(.*)(</uuid>)#\\1$(uuidgen)\\3#" $Nxml           #设置uuid  
sed -ri "s#(<source file=').*('/>)#\\1$Ndisk\\2#" $Nxml             #设置磁盘  
fix_mac=\`awk -F"'" '/mac address/{print $2}' $Nxml | head -1 | cut -b 1-9\`  
blk_mac=\`openssl rand -hex 3 | sed 's/\\(..\\)/\\1:/g; s/.$//'\`  
mac=${fix\_mac}${blk\_mac}                                          #获取mac地址  
sed -ri "s#(<mac address=').*('/>)#\\1${mac}\\2#" $Nxml             #设置mac  
virsh define $Nxml                                                  #定义新虚拟机


五、离线访问虚拟机

1.guestmount工具

  • 支持离线挂载raw、qcow2格式虚拟机磁盘
  • 可以再虚拟机关机的情况下,直接修改磁盘中的文件
  • 方便对虚拟机定制、修复、脚本维护
  • 挂载虚拟机磁盘访问
]# yum -y install libguestfs-tools-c                                #安装guestmount工具  
]# guestmount -a 被挂载磁盘路径 -i /挂载点  
]# guestmount -d 被挂载域名     -i /挂载点  
]# rpm -qa --dbpath /挂载点/var/lib/rpm                             #查看该虚拟机下的rpm包  
]# umount /挂载点                                                   #取消挂载  

2.查看虚拟机磁盘信息

]# virt-filesystems --long --parts --blkdevs -h -a 磁盘名

3.磁盘扩容

]# virt-resize --expand /dev/分区名 输入磁盘名 输出磁盘名

转载于:https://my.oschina.net/xinsui1314x/blog/3068564

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值