多语言展示
当前在线:870今日阅读:168今日分享:49

KVM简介及操作笔记

KVM 全称是 基于内核的虚拟机(Kernel-based Virtual Machine),它是一个 Linux 的一个内核模块,该内核模块使得 Linux 变成了一个 Hypervisor:它由 Quramnet 开发,该公司于 2008年被 Red Hat 收购。它支持 x86 (32 and 64 位), s390, Powerpc 等 CPU。它从 Linux 2.6.20 起就作为一模块被包含在 Linux 内核中。它需要支持虚拟化扩展的 CPU。KVM 是基于虚拟化扩展(Intel VT 或者 AMD-V)的 X86 硬件的开源的 Linux 原生的全虚拟化解决方案。KVM 中,虚拟机被实现为常规的 Linux 进程,由标准 Linux 调度程序进行调度;虚机的每个虚拟 CPU 被实现为一个常规的 Linux 进程。这使得 KMV 能够使用 Linux 内核的已有功能。但是,KVM 本身不执行任何硬件模拟,需要客户空间程序通过 /dev/kvm 接口设置一个客户机虚拟服务器的地址空间,向它提供模拟的 I/O,并将它的视频显示映射回宿主的显示屏。目前这个应用程序是 QEMU。由于生产环境的服务器并不会安装桌面环境,简单操作的图形化安装也不适合批量部署安装。因此,我还是更倾向于在命令下安装配置KVM虚拟机。以下是我这些年操作linux服务器KVM虚拟化的笔记及心得
工具/原料

linux服务器一台(支持虚拟化)

方法/步骤
1

虚拟机存放目录/home/kvm/images建立存储池目录mkdir -p /home/kvm/images;chown root:root /home/kvm/images;chmod 755 /home/kvm/images;创建存储池virsh pool-define-as StoragePool --type dir --target /data/kvm;virsh pool-build StoragePool;virsh pool-start StoragePool;virsh pool-autostart StoragePool;验证查看存储池信息virsh pool-info StoragePool;查看创建的所有存储池[root@local images]# virsh pool-listStoragePool存储池中创建一个卷,这个卷是用来做虚拟机的硬盘[root@local ~]# virsh vol-create-as --pool StoragePool --name node6.img --capacity 10G --allocation 1G --format qcow2#    创建卷 node6.img,所在存储池为vmware_pool,容量10G,初始分配1G,文件格式类型qcow2[root@local ~]# virsh vol-info /home/kvm/images/node6.img#查看卷信息名称: node6.img类型: 文件容量: 10.00 GB分配: 136.00 KB

2

创建vhost虚拟机目录mkdir -p /vhost定义虚拟机池virsh pool-define-as vmspool --type dir --target /vhost建立虚拟池virsh pool-build vmspool启动虚拟机池virsh pool-start vmspool创建win7虚拟机virt-install --name win701  --ram 1024 --vcpus=2 --os-type=windows --accelerate -c /ISO/en_windows_7_professional_x86_dvd_x15-65804.iso --disk path=/vhost/win701.img,size=30,bus=virtio,format=qcow2 --network bridge=br0,model=virtio --force --autostart --vnc --vncport=5991 --vnclisten=0.0.0.0创建centos7虚拟机virt-install --name centos7_2_246  --ram 1024 --vcpus=2 --os-type=linux --accelerate -c /data/CentOS-7-x86_64-Minimal.iso --disk path=/data/kvm/centos6.5_2_246.img,size=30,bus=virtio,format=qcow2 --network bridge=br0,model=virtio --force --autostart --vnc --vncport=5994 --vnclisten=0.0.0.0

3

(1) KVM虚拟机默认配置文件位置: /etc/libvirt/qemu/virsh -help查看所有kvm虚拟机状态# virsh list --all列出在线运行的主机# virsh listvirsh关机虚拟机# virsh shutdown oeltest01(2) 强制关闭电源# virsh destroy wintest01

4

5. 配置开机自启动虚拟机# virsh autostart oeltest017. 添加与删除KVM虚拟机(1)  删除kvm虚拟机# virsh undefine wintest01  说明:该命令只是删除wintest01的配置文件,并不删除虚拟磁盘文件# virsh undefine web1 --managed-save8. 编辑KVM虚拟机配置文件# virsh edit wintest01virsh edit将调用vi命令编辑/etc/libvirt/qemu/wintest01.xml配置文件。也可以直接通过vi命令进行编辑,修改,保存。

5

10. 其它virsh命令(1) 挂起服务器# virsh suspend oeltest01(2) 恢复服务器# virsh  resume oeltest0111、虚拟机重命名关闭重命名的虚拟机virsh shutdown vm01导出xml文件cd /etc/libvirt/qemu/virsh dumpxml vm01 > test.xml编辑test.xml 包括name 包括img文件名 重新定义虚拟机 virsh undefine vm01 virsh define test.xml 修改文件名 mv vm01.img test.img启动虚拟机 virsh start  test  12.  本机虚拟机直接克隆virt-clone -o oeltest01 -n oeltest02 -f /data/test02.img说明:以oeltest01做为源,克隆oeltest01虚拟机,并创建名称为oeltest02虚拟机,使用磁盘文件/data/test02.img13、kvm 虚拟机VNC下鼠标不同步问题解决方法关闭虚拟机,在虚拟机的配置文件中增加:(该句位于配置中)然后重启libvirtd

注意事项

KVM 是实现拦截虚机的 I/O 请求的原理: 现代 CPU 本身了对特殊指令的截获和重定向的硬件支持,甚至新的硬件会提供额外的资源来帮助软件实现对关键硬件资源的虚拟化从而提高性能。以 X86 平台为例,支持虚拟化技术的 CPU 带有特别优化过的指令集来控制虚拟化过程。通过这些指令集,VMM 很容易将客户机置于一种受限制的模式下运行,一旦客户机视图访问物理资源,硬件会暂停客户机的运行,将控制权交回给 VMM 处理。VMM 还可以利用硬件的虚级化增强机制,将客户机在受限模式下对一些特定资源的访问,完全由硬件重定向到 VMM 指定的虚拟资源,整个过程不需要暂停客户机的运行和 VMM 的参与。由于虚拟化硬件提供全新的架构,支持操作系统直接在上面运行,无需进行二进制转换,减少了相关的性能开销,极大简化了VMM的设计,使得VMM性能更加强大。从 2005 年开始,Intel 在其处理器产品线中推广 Intel Virtualization Technology 即 IntelVT 技术

推荐信息