Linux下KVM的简单使用

  • 3
  • 485 views
  • A+
所属分类:Notes

1.KVM简介
kvm 是虚拟化技术的一个典型实现,功能非常强大,使用很方便。kvm 本身主要实现对 CPU 的虚拟化,内存和IO的虚拟化使用了开源软件 qemu,qemu 是纯软件层面的虚拟化,其实就是个模拟器。kvm 要求 cpu 必须支持硬件虚拟化,可以通过 Linux 命令查看。

说到 kvm 必须提及 libvirt 程序集,它是用来管理 kvm 虚拟机的,当然其实也可以管理 xen 等其它虚拟化的虚拟机。
libvirt 包括三部分:
(1). libvirtd是后台服务程序;
(2). libvirt 是管理虚拟机的 API 接口,可以通过 python c java 等语言来编写程序管理虚拟机,比较典型的 virt-manager 就是使用 python 写的可视化工具;
(3). virsh 等命令行管理工具。

2.Centos安装KVM及virt-manager
yum install -y kvm virt-* libvirt bridge-utils qemu-img qemu-kvm
yum upgrade device-mapper-libs
reboot
lsmod |grep kvm

启动 libvirtd 相关服务
/etc/init.d/libvirtd start
/etc/init.d/messagebus restart
systemctl start libvirtd && systemctl enable libvirtd

3.在KVM上安装虚拟机
注意事项:关于虚拟机镜像,有很多种类型:raw、qcow2、vmdk等,推荐使用 qcow2 格式的镜像,因为 qcow2 格式的镜像支持快照,使用的比较广泛,是kvm自带的qcow2格式,他的特点是可伸缩,而且有实际存储数据才会占空间,没有就不占,。在创建虚拟机之前需要手动去创建 qcow2 格式的镜像磁盘文件,以供安装虚拟机时使用。

注意先关闭selinux(如果安装虚拟机出问题,请暂时关闭pitables)
sed -i '/^SELINUX=/c\SELINUX=disabled' /etc/selinux/config
setenforce 0

1)按照如下命令进行创建qcow2 格式的镜像磁盘文件:
qemu-img create -f qcow2 -o preallocation=metadata /data/kvm/testvm1.qcow2 50G
查看该镜像信息
qemu-img info /data/kvm/testvm1.qcow2

2)安装虚拟机:
通过 iso 镜像实现本地安装,支持 vnc ,无文本控制台。
virt-install --virt-type kvm --name testvm1 \
--ram 2048 --vcpus 4 \
-f /data/kvm/testvm1.qcow2 --os-type linux \
--os-variant rhel6 --network network:default \
--cdrom /tempfile/CentOS-6.8-i386-minimal.iso \
--graphics vnc,listen=0.0.0.0,port=5920

3)修改虚拟机配置
安装后,虚拟机的启动信息在/etc/libvirt/qemu下的xml文件中,可以编辑文件,然后关闭并启动虚机。
#进入/etc/libvirt/qemu 是kmv的配置文件存放的地方。
cd /etc/libvirt/qemu

4)修改虚拟机网卡配置
brctl show ##查看已有网桥
(略,如果虚拟机需要访问外网,需要进行一些配置才能行)

4.KVM管理工具
命令行管理工具用virsh(自带),virsh更像是Kvm的命令行管理工具,如同window的cmd,而我们操作window,经常通过界面操作。如果熟悉命令,virsh操作Kvm更方便。

kvm 虚拟机常见的基础操作命令
开机:virsh start vm
关机:virsh shutdown vm 如果不生效,需要在 vm 中执行:yum install -y acpid
强关:virsh destroy vm
删除:virsh undefine vm
定义:virsh define vm
挂起:virsh suspend vm
恢复:virsh resume vm

虚拟机列表:virsh list
包含关机的虚机:virsh list --all
设置自动启动:virsh autostart vm
关闭自动启动:virsh autostart --disable vm
登陆虚机控制台:virsh console vm # 只对指定了console的虚机才管用,方式一
退出虚机控制台:ctrl + ]

5.虚拟机的克隆
注意:克隆前需要先关闭虚拟机;克隆完毕,一般需要设置虚拟机的网络。
virt-clone --original testvm1 --name testvm2 --file /data/kvm/testvm2.qcow2

6.创建虚拟机的快照
1)创建快照的条件
虚拟机是关机状态。
虚拟机镜像格式是 qcow2。

2)创建快照
virsh snapshot-create liwei

3)查看快照列表
virsh snapshot-list testvm1
# 可以通过 qemu-img 查看镜像的快照信息
qemu-img info /data/kvm/testvm1.img

4)切换快照
virsh snapshot-revert testvm1 20180104174801

5)查看当前快照
virsh snapshot-current testvm1

6)删除快照
virsh snapshot-delete testvm1 20180104174801

7)快照文件存储位置
/var/lib/libvirt/qemu/snapshot

7.虚拟机磁盘扩容和添加磁盘
1)虚拟机扩容磁盘,给现有磁盘增加容量
qemu-img resize /data/kvm/testvm1.qcow2 +5G
# 重启虚拟机 reboot虚机不生效
在虚拟机中使用 fdisk -l 查看,通过观察block 块 id 可以发现存储空间多了,还必须将多余部分分区、格式化使用,默认使用 lvm 。

2)给虚拟机添加磁盘

8.使用虚拟磁盘恢复虚拟机
前提条件:首先得有镜像文件(已有) + xml 配置文件
virsh dumpxml testvm1 > /etc/libvirt/qemu/testvm1.xml
# 编辑配置文件,修改为适当的值
# 添加定义
virsh define /etc/libvirt/qemu/testvm1.xml
virsh list --all #即可查到该虚拟机

9.虚拟机的迁移

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:3   其中:访客  3   博主  0

    • ag

      检查CPU是否支持虚拟化:
      egrep -c ‘(vmx|svm)’ /proc/cpuinfo

      • ag

        http://www.linux-kvm.org
        http://en.wikipedia.org/wiki/Kernel-based_Virtual_Machine
        http://www.ovirt.org
        http://virt-manager.et.redhat.com/

        • ag

          https://docs.google.com/presentation/d/1lwgofrsa03mtteK8_1TD1AlODxSf8LbS5ZuYjIZpQ5g/present?slide=id.i0