KVM简介

虚拟化概念

virtualization资源管理

  • x个物理资源–>y个逻辑资源
  • 实现程度:完全,部分,硬件辅助(CPU)

虚拟化主要厂商及产品

系列PC/服务器版代表
VMwareVMware Workstation,vSphere
MicrosoftVirtualPC,Hyper-V
RedHatKVM,RHEV
CitrixXen
OracleOracle VM VirtualBox

安装虚拟化服务器平台

  • KVM/QEMU/LIBVIRTD
  1. KVM是Linux内核的模块,它需要CPU的支持,采用硬件辅助虚拟化技术Intel-VT,AMD-V,内存的相关如Intel的EPT和AMD的RVI技术
  2. QEMU是一个虚拟化的仿真工具,通过ioctl与内核kvm交互完成对硬件的虚拟化支持
  3. Libvirt是一个对虚拟化管理接口和工具,提供用户端程序virsh,virt-install,virt-manager,virt-view与用户交互

必备软件

  • qemu-kvm
    为kvm提供底层仿真支持
  • libvirt-daemon
    libvirtd守护进程,管理虚拟机
  • libvirt-client
    用户端软件,提供客户端管理命令
  • libvirt-daemon-driver-qemu
    libvirtd连接qemu的驱动
  • 可选功能
    virt-install //系统安装工具
    virt-manager //图形管理工具
    virt-v2v //虚拟机迁移工具
    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 控制命令 [虚拟机名称] [参数]
[root@room9pc01 ~]# virsh nodeinfo			//查看服务器节点信息
[root@room9pc01 ~]# virsh list			//列出当前已启用的虚拟机
[root@room9pc01 ~]# virsh list --all		//列出所有创建的虚拟机
[root@room9pc01 ~]# virsh net-list			//列出活跃的虚拟网络
[root@room9pc01 ~]# virsh net-list --all		//列出所有的虚拟的网络
[root@room9pc01 ~]# virsh dominfo ip2-5		//查看虚拟机ip2-5的信息
  • start|shutdown|reboot 虚拟机启动,停止,重启
  • destroy 强制停止虚拟机
  • define|undefine 根据 xml 文件 创建/删除 虚拟机
  • console 连接虚拟机的 console

virsh 虚拟机管理

  • edit 修改虚拟机的配置
  • autostart 设置虚拟机自启动
  • virsh autostart --disable 取消开机自启
  • domiflist 查看虚拟机网卡信息
  • domblklist 查看虚拟机硬盘信息
  • blockresize --path [绝对路径] --size 50G 虚拟机名称 虚拟机扩容
为某个虚拟机分区扩容(vda1)

(1)创建一台虚拟机并启动

[root@room9pc01 ~]# base-vm vm6
[root@room9pc01 ~]# virsh start vm6

(2)进入该虚拟机,查看虚拟机磁盘大小

[root@room9pc01 ~]# virsh console vm6
[root@localhost ~]# lsblk
[root@localhost ~]# df -h

(3)为该虚拟机磁盘分区vda扩容

1)查看虚拟机磁盘路径

[root@room9pc01 ~]# virsh domblklist vm6
目标     源
------------------------------------------------
vda        /var/lib/libvirt/images/vm6.img

2)查看该虚拟机磁盘信息(大小)

[root@room9pc01 ~]# qemu-img info /var/lib/libvirt/images/vm6.img 

3)为该虚拟机扩容,虚拟机必须处于开机状态

[root@room9pc01 ~]# virsh blockresize --path /var/lib/libvirt/images/vm4.img --size 50G vm6

(4)扩容分区vda1

[root@localhost ~]# LANG=C   //设置虚拟机语言
[root@localhost ~]# growpart /dev/vda 1

(5)刷新分区格式

[root@localhost ~]# xfs_growfs /dev/vda1 

virsh 虚拟网络管理

  • net-list [–all] 列出虚拟网络
  • net-start 启动虚拟交换机
  • net-destroy 强制停止虚拟交换机
  • net-define 根据 xml 文件 创建虚拟网络
  • net-undefine 删除一个虚拟网络设备
  • net-edit 修改虚拟交换机的配置
  • net-autostart 设置虚拟交换机机自启动

常用镜像盘类型

  • 虚拟机的磁盘镜像文件格式
特点\类型RAWQCOW2
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

-b 使用后端模板文件

  • qemu-img create -b disk.img -f qcow2 disk1.img
COW技术原理

Copy On Write,写时复制

  • 直接映射原始盘的数据内容
  • 当数据有修改要求时,在修改之前自动将旧数据拷贝存入前端盘后,对前端盘进行修改
  • 原始盘始终是只读的
Virsh管理

创建xml文件

对虚拟机的配置进行调整

  • 编辑:virsh edit 虚拟机名
  • 若修改 cpu、memory
[root@kvmsvr ~]# virsh edit node0
<domain type='kvm'>
<name>node0</name>
<uuid>7ec0ab09-d9cb-4b19-ad26-813381420260</uuid>
<memory unit='KiB'>1488282</memory>
<currentMemory unit='KiB'>1488282</currentMemory>
<vcpu placement='static'>2</vcpu>
.. ..

对虚拟机的配置进行调整

  • 编辑:virsh edit 虚拟机名
  • 若修改 磁盘
[root@kvmsvr ~]# virsh edit node0
.. ..
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/>
<source file='/var/lib/libvirt/images/node0.img'/>
<target dev='vda' bus='virtio'/>
</disk>
.. ..

对虚拟机的配置进行调整

  • 编辑:virsh edit 虚拟机名
  • 若修改 网络
[root@kvmsvr ~]# virsh edit node0
.. ..
<interface type='bridge'>
<source bridge='vbr'/>
<model type='virtio'/>
</interface>
.. ..
虚拟机创建

(1)拷贝配置文件

[root@room9pc01 ~]# /var/lib/libvirt/images
[root@room9pc01 images]# cp .node_base.xml /etc/libvirt/qemu/test.xml

(2)创建磁盘文件

[root@room9pc01 images]# qemu-img create -f qcow2 -b .node_base.qcow2 test.img 30G

(3)修改配置文件

... ...
<name>test</name>
... ...
<source file='/var/lib/libvirt/images/test.img'/>
... ...

(4)创建虚拟机,并启动

[root@room9pc01 ~]# virsh define /etc/libvirt/qemu/test.xml 
[root@room9pc01 ~]# virsh start test

(5)进入虚拟机

[root@room9pc01 ~]# virsh console test
网卡及配置文件

网络配置文件说明

  • /etc/sysconfig/network-scripts/ifcfg-eth0
# Generated by dracut initrd 注释
DEVICE="eth0"
# 驱动名称,与ifconfig 看到的名称一致
ONBOOT="yes"
# 开机启动
NM_CONTROLLED="no"
#不接受 NetworkManager 控制
TYPE="Ethernet"
#类型
BOOTPROTO="static"
#协议(dhcp|static|none)
IPADDR="192.168.1.10"
#IP地址
NETMASK="255.255.255.0" #子网掩码
GATEWAY="192.168.1.254" #默认网关
根分区扩容
  • 根分区扩容
    设置虚拟机语言
    LANG=C

  • 查看硬盘设备是否有多余空间
    lsblk

  • 扩容第一个分区
    /usr/bin/growpart /dev/vda 1

  • 扩容文件系统
    /usr/sbin/xfs_growfs /

  • 检查扩容结果
    df -h

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值