`

[转]KVM 虚拟机详细说明

 
阅读更多
(部分有点过时)
http://blog.bodhizazen.net/linux/kvm_network_scripts/
2010年最新,亲自测试
首先说一点:碰到问题首先查找linux软件库(deb)中是否有能代替的软件;不行使用wine运行windows软件;再不行,才使用kvm等虚拟机。
因为它们的效率是递减的。还有一点,虚拟机最大的软肋是:图形、影音比较差。如果你想靠它运行电影软件、3D软件,那你就要有一颗坚强的心。


vbox 与 kvm 的区别:
vbox 是由 qemu 改写而成,包含大量 qemu 代码。可以使用于 不支持 虚拟化的cpu。值得说的一点:vbox 在图形方面比较好,能进行2D 3D加速。cpu控制不理想(估计是因为图形支持的缘故)。操作上有独立的图形界面,易于上手。
kvm 是linux内核包含的东西,使用qemu作为上层管理(命令行)。cpu 必须支持虚拟化。性能,作为服务器很好,可是图形能力十分的差。即使放电影,图像也是像刷油漆一样,一层一层的。cpu使用率控制很好。 控制上比较简洁,功能比较丰富:比如使用 “无敌功能”所有更改指向内存,你的镜像永远保持干净。 “母镜像”功能让你拥有n个独立快照点。 还有很多参数。另外,kvm作为内核级的虚拟机,刚开始发展关注的公司比较多——但是还没有达到商业应用的水平。

总体而言:在支持 虚拟化的情况下,vbox 和 kvm 的性能差不多,主要是面向对象不同:kvm使用于服务器,vbox使用于桌面应用。
***********************************************

关于kvm:
kvm是开源软件,全称是kernel-based virtual machine(内核级虚拟机)。是x86架构且硬件支持虚拟化技术(如 intel VT 或 AMD-V)的linux 全虚拟化 解决方案。它包含一个为处理器提供底层虚拟化 可加载的核心模块kvm.ko(kvm-intel.ko 或 kvm-AMD.ko)。
kvm还需要一个经过修改的QEMU软件(qemu-kvm),作为虚拟机上层控制和界面。
kvm能在不改变linux或windows镜像的情况下同时运行多个虚拟机,(ps:它的意思是多个虚拟机使用同一镜像)并为每一个虚拟机配置个性化硬件环境(网卡、磁盘、图形适配器……)。
在主流的linux内核,如2.6.20以上的内核均包含了kvm核心。

KVM官方地址: http://kvm.qumranet.com/kvmwiki
KVM的Changelog: http://kvm.qumranet.com/kvmwiki/ChangeLog, 可以知道最新的版本是多少,做了那些改变。
KVM下载地址在sourceforge.net上: http://sourceforge.net/project/showfile ... _id=180599
KVM的Howto文档: http://kvm.qumranet.com/kvmwiki/HOWTO
Kqemu: http://sourceforge.net/projects/kqemu/
Qemu: http://fabrice.bellard.free.fr/qemu/index.html
**************************入门篇(基于ubuntu9.10)
基本知识:
qemu是独立虚拟软件,能独立运行虚拟机(根本不需要kvm)。kqemu是该软件的加速软件。kvm并不需要qemu进行虚拟处理,只是需要它的上层管理界面进行虚拟机控制。虚拟机依旧是由kvm驱动。
所以,大家不要把概念弄错了,盲目的安装qemu和kqemu。

安装准备:
查看你的硬是否支持虚拟化。
命令:
egrep '(vmx|svm)' /proc/cpuinfo
要有 vmx 或 svm 的标识才行。总的说来,AMD在虚拟化方面作得更好一些。
使用intel cpu的朋友还需要进入bios进行设置——因为我的是AMD,所以设置方法不敢乱说。


安装kvm:
打开新立得软件库,安装kvm。系统会自动安装相关的软件包,包括qemu-kvm。什么kvm-AMD 或 kvm-intel模式系统都自动处理好了。现在大多文章都是2008年写的,已经过时了,可惜好多人只知道复制,好多设置已经不需要了,有些跟官方的完全冲突。

创建虚拟镜像:
命令(先cd 到你要保存镜像的位置):
kvm-img create xxx.img 2G
由于是要安装xp精简系统,2G已经足够大了(安装下来只要700M)。xxx 代表名字,想取什么都可以。最好是连续的英文.默认格式为raw,当然你可以自己设定,比如(-f qcow2)加在 create 后面即可。(.img这个后缀是我随便编的,kvm对后缀名没有要求)
其它格式如下:
Supported formats: cow qcow vmdk cloop dmg bochs vpc vvfat qcow2 parallels nbd host_cdrom host_floppy host_device raw tftp ftps ftp https http

安装虚拟机系统:
命令(先cd 到你要保存镜像的位置):
kvm -hda xxxx.img -cdrom /path/to/boot-media.iso -boot d -m 512
说明几点:/path/to/boot-media.iso 只是个举例。具体为你的系统盘镜像位置。-m 为虚拟机内存大小,单位是M默认(不写这个选项)为128M。当然,自己看着给吧。
建议如果虚拟的是xp系统,把页面缓存给关了。

使用虚拟机最简单的命令:
命令(先cd 到你要保存镜像的位置):
kvm -m 1024 -hda xxx.img
由于默认内存是128M,所以不得不指定一下,要不连-m 1024都可以省了。此时是没有声卡的,当然也可加上声音选项。cpu默认是一颗,网络默认启动(为net-内部端口映射)(可以上网,但是主机识别不了,它也无法连接主机)。
你可以使用:
kvm -m 1024 -hda /xxx/xxx/xxx.img
你也可以把它作为桌面“创建启动器”的命令使用。每次轻轻一点就可使用了。

****************************中级篇
命令:
kvm --help
命令:
kvm-img --help
看看具体的选项说明,需要什么功能就在“最简单命令”后面加就是了——特别简单、功能又很多。用的满意了,可以做成“程序启动器”。或者打开gedit,把命令保存进去,把文件名改为xxx.sh。再把属性改为“可执行”,要用就点击。
比如:kvm -m 1024 -hda xxx.img -xxx xx -xxxx xxx -xxxxxx -xxx

现在分功能讲解

1,文件共享
我们希望虚拟机能和主机对一些文件夹进行共享操作。类似于vbox的共享文件夹。
首先安装 samba 。这是linux的共享功能软件,支持windows系统的访问。记住不是samba4
然后,新建一个文件夹,属性。共享选项,把所有选项开启。应用。接受系统的权限的更改。

好了,默认在虚拟机的网上邻居,就能找见了。没有?看看整个网络(侧边任务)。
简单吧,kvm早已升级了。根本不需要什么配置。

关于权限:你是否有“无法访问,权限不够……”的问题?主机无法修改共享文件“你不是该文件的创建者”?
那是因为linux的权限相当的严格,必须要放权别人才能访问、修改。
如果上级文件夹(无论哪个)不让读取(比如: 其它;文件夹访问 无),那么就会出现无法访问的情况。你要设置上级文件夹权限为(其它;文件夹访问 访问文件)就可以了,不必完全放权。

因为安全考虑,我的用户文件夹(其它;文件夹访问 无)。所以一开始就出了权限问题。我的解决办法是使用命令:
sudo gnome-open /home/
在home中再新建一个文件夹,在属性上,把创建者改为非root(改为经常使用的普通用户),组群:sambashare。权限全为:创建和删除。

经测试,外网虽然能显示共享文件夹,却无法访问——保证只有虚拟机可以访问。(我使用了ufw防火墙)

windows虚拟机在共享文件夹中创建的文件,主机是无法更改的。要设置权限:
我的电脑-打开-工具-文件夹选项-查看
把“使用简单的文件共享”选项去掉。在文件(夹)属性——安全:知道怎么弄了吧。

linux的文件夹系统权限作的十分的好。比如你把其它非受权文件夹的链接复制到共享文件夹,依然无法访问。windows那种权限的随意性,看见就想哭。

多说一点:我的电脑右键,可以把共享文件夹设置为网络硬盘。相当于移动硬盘,可以方便的安装软件,保存资料。

2。无敌模式(-snapshot)
-snapshot       write to temporary files instead of disk image files
意思是不更改镜像文件,启动后的所有改动均不会往镜像文件上写。临时文件存放在内存中了,具体是cached。
同样的功能,在vbox要独立安装软件。效率可想而知……
在命令后面空格加上:
-snapshot
即可

3.高速网络(-net nic,model=virtio -net user)
表 2. 虚拟网络模块的性能差异
虚拟网络模块     网络传输速度(ssh)     客户机操作系统     网络状态
rtl8029    200-300KB/s    SLES10SP2 (kernel 2.6.16-60)    不稳定
e1000    4.8-5.4MB/s    SLES10SP2 (kernel 2.6.16-60)    稳定
virtio    10.6-11.1MB/s    SLES11 (kernel 2.6.27-19)    稳定
驱动下载地址:
http://sourceforge.net/projects/kvm/files/
名字是 kvm-driver-disc 的
NETKVM-20081229.iso
具体可能有变化,使用命令:
kvm -m 1024 -hda xp.img -cdrom /home/cat650/linux/kvm/NETKVM-20081229.iso  -enable-kvm -net nic,model=virtio -net user
其中:-cdrom是加载光驱的意思。网络默认设置是 (-net nic -net user) 这里由于要指定virtio模块所以要把命令加上。然后自动安装驱动就行了。听说速度接近真实网卡——明显是为打造虚拟服务器配置的。
以后在启动虚拟机命令后面加上-net nic,model=virtio -net user就可以了。

4.高速虚拟
VirtIO paravirtual 是 Linux 虚拟机平台上统一的虚拟 IO 接口驱动。通常主机为了让客户机像在真实环境中一样运行,需要为客户机创建各式各样的虚拟设备,如磁盘,网卡,显卡,时钟,USB 等。这些虚拟设备大大降低了客户机的性能。如果客户机不关注这些硬件设备,就可以用统一的虚拟设备代替他们,这样可以大大提高虚拟机的性能。这个统一的标准化接口在 Linux 上就是 VirtIO 。需要注意的是 VirtIO 运行在 kernel 2.6.24 以上的版本中才能发挥它的性能优势。另外 KVM 项目组也发布了 Windows 平台上的 VirtIO 驱动,这样 windows 客户机的网络性能也可以大大提高了。
下载地址:http://www.linux-kvm.org/page/WindowsGuestDrivers/Download_Drivers
viostor是磁盘的虚拟驱动。
带图片的参考:http://www.linux-kvm.org/page/WindowsGuestDrivers/viostor/installation
命令:把-hda xxx.img 替换为-drive file=/home/cat650/virt/xp.img,if=virtio,boot=on
意思是使用virtio磁盘系统,并作为启动盘(默认是boot=off,作为附加的第二硬盘)。第一次使用的时候记得挂载viostorXXXX.img,来安装驱动。

5.使用金手指“母镜像”功能
要求,镜像格式为 qcow2 。作用:在“母镜像”的基础上,建立一个新的镜像。虚拟机操作这个新镜像时不会对“母镜像”进行任何更改(只读“母镜像”),新镜像只保存由于操作产生的与“母镜像”的数据差异(大小很小)。由此实现超越“快照”“还原点”的金手指功能(数量没有限制)。
命令(先cd 到你要保存镜像的位置):
kvm-img create -b xp.img -f qcow2 xp.test
其中xp.img是“母镜像”(参数 -b xxx),xp.test是新镜像——只能用 qcow2 格式。
新镜像的使用:正常使用即可。

6.镜像格式转换,镜像信息查询
能转换的格式有:raw,qcow2,qcow,cow,vmdk,cloop
如果你记不清你创建的镜像是什么格式的,可以使用命令(先cd 到你要保存镜像的位置):
kvm-img info xxx.img
关于格式的优缺点,请参看高级篇
转换命令(先cd 到你要保存镜像的位置):
kvm-img convert -f raw -O qcow2 xp.img xp.qco
注意:-O是字母o的大写。
这条命令举例的意思是:把名为xp.img格式为raw的镜像转换成新镜像xp.qco格式为qcow2
其它格式"vmdk"是 VMware 3 / 4 兼容镜像格式。

*******************************深入了解
1.kvm-img 命令
用法:kvm-img 后续命令 [命令选项]

后续命令如下

check [-f fmt] filename
create [-F base_fmt] [-b base_image] [-f fmt] [-o options] filename [size]
commit [-f fmt] filename
convert [-c] [-f fmt] [-O output_fmt] [-o options] [-B output_base_image] filename [filename2 [...]] output_filename
info [-f fmt] filename
snapshot [-l | -a snapshot | -c snapshot | -d snapshot] filename

部分内容详解:

filename
镜像的文件名(比如:xp.img cat.raw……后缀名随便取,或者不取)

base_image
只读的镜像——有点像“母镜像”。在“母镜像”基础上创建的镜像只储存对“母镜像”的修改。

output_base_image

forces the output image to be created as a copy on write image of
the specified base image; "output_base_image" should have the same
content as the input's base image, however the path, image format,
etc may differ
base_fmt
base_image(母镜像) 的格式. 参考 fmt


fmt
指镜像格式。建议大多数情况让系统自动选择(不使用该选项)。
主要格式如下:


"raw"
Raw disk image format (默认).该格式精简,易被多种虚拟机接受。
如果你的系统支持 holes (如 linux 的 ext2 ext3 ext4? windows 的 NTFS),那么它将有效节约空间(比如你创建的磁盘是2G,虚拟系统只使用了800M,那么它实际也只占用800M的空间)。使用命令“kvm-img info 镜像文件名”,将显示实际使用的大小。linux用户还可以使用“ls -ls”命令直接查看。


"qcow2"
QEMU 镜像格式, 使用最多的格式. 创建的镜像比较小(用多少就占多少),对于系统文件不支持 holes 的(比如windows系统下使用qemu)很有帮助。可进行AES加密,zlib基本压缩,并支持多种VM的快照(snapshots)。

"qcow"
古老的 QEMU 镜像格式. Left for compatibility.

"cow"
User Mode Linux Copy On Write image format. Used to be the only
growable image format in QEMU. It is supported only for
compatibility with previous versions. It does not work on
win32.不能运行win32.
"vmdk"
VMware 3 / 4 兼容镜像格式

"cloop"
Linux Compressed Loop image, useful only to reuse directly
compressed CD-ROM images present for example in the Knoppix CD-
ROMs.
size
镜像文件的大小比特. 一般单位使 "M" (megabyte, 1024k) 、 "G" (gigabyte, 1024M)、 T (terabyte, 1024G) 。 "b" is ignored.

output_filename
生成的镜像文件名

output_fmt
生成的镜像文件格式
分享到:
评论

相关推荐

    KVM虚拟机GPU透传.docx

    以下是KVM虚拟机GPU透传的详细操作说明。 KVM虚拟机GPU透传的准备工作 在开始KVM虚拟机GPU透传之前,需要先在实体机上找到GPU对应的PCI设备号。使用lspci命令可以找到GPU设备的PCI设备号。然后,使用virsh nodedev...

    kvm虚拟机安装介绍,KVM

    ### KVM虚拟机安装介绍 #### 一、KVM虚拟机概述 KVM(Kernel-based Virtual Machine)是一种基于Linux内核的全虚拟化技术。它实际上只是Linux内核中的一个模块,本身并不能直接用于创建和管理虚拟机。为了实现完整...

    使用libvirt管理kvm虚拟机.txt

    本文将详细介绍如何使用libvirt及其命令行工具virsh来管理KVM虚拟机。 #### 二、Libvirt简介 Libvirt是用于管理机器上的虚拟化功能的一种软件集合。它提供了APIs和一系列命令行工具来帮助用户管理虚拟机。Libvirt...

    KVM虚拟机迁移原理分析.pdf

    KVM虚拟机迁移是虚拟化技术中的一项重要功能,它允许在不影响虚拟机运行的情况下,将其从一个物理主机迁移到另一个物理主机上。这一过程对于维护服务器的高可用性、负载均衡以及升级硬件等应用场景非常有用。KVM...

    CentOS8安装KVM虚拟机详解.docx

    本文将详细介绍 CentOS 8 安装 KVM 虚拟机的步骤和相关知识点。 一、检测是否支持 KVM KVM 是基于 x86 虚拟化扩展(Intel VT 或者 AMD-V)技术的虚拟机软件,因此需要检测 CPU 是否支持 VT 技术。使用以下命令可以...

    创建第一台kvm虚拟机、系统配置、模板准备、克隆虚拟机操作及配置.docx

    KVM虚拟机创建、系统配置、模板准备和克隆虚拟机操作 KVM(Kernel-based Virtual Machine)是基于 Linux 内核的开源虚拟机解决方案。它可以在 Linux 主机上运行多个虚拟机,每个虚拟机可以运行不同的操作系统。下面...

    linux-KVM虚拟机GPU透传操作步骤.docx

    本文将详细介绍Linux操作系统下KVM虚拟机GPU透传的操作步骤。 二、准备工作 在开始GPU透传操作之前,需要在物理机上找到GPU对应的PCI设备号,可以使用lspci命令来获取设备号。例如: ``` lspci -v -s 00:03.0 ```...

    KVM虚拟机网络环境介绍

    文档《[美河学习在线eimhe.com]KVM虚拟机网络环境介绍.pdf》应该包含了详细的图文教程,从创建网络桥、配置虚拟机网络接口到启动虚拟机的每一步都有清晰的说明和截图,对于初学者来说非常实用。 5. 高级网络功能 ...

    Linux系统下基于Kvm创建虚拟机时网络网桥的配置使用说明

    在Linux系统下,基于KVM创建虚拟机时,网络配置是一项关键步骤,特别是涉及到网络网桥的设置。本文主要介绍了如何在Red Hat Enterprise 5.0环境下配置网桥,以便虚拟机可以顺利接入网络。 首先,理解网桥的概念至关...

    KVM性能测试报告

    根据测试结果,KVM虚拟机的CPU性能损失非常小,甚至不到1%。同时,当多个虚拟机同时运行时,KVM表现出了良好的资源利用率,与物理机的性能差距并不大,证实了KVM对于虚拟机的CPU资源分配是相当公正的。 内存性能...

    KVM virsh命令管理虚拟机

    KVM(Kernel-based Virtual Machine)是Linux内核的一个虚拟化模块,它能够支持Linux和Windows等操作系统在x86硬件平台上作为虚拟机运行。virsh是libvirt提供的一个命令行工具,用于管理虚拟机。通过virsh命令,可以...

    img2kvm.zip

    具体参数说明应在使用方法文档中详细列出。 4. **确认转换**:转换完成后,检查新生成的qcow2文件大小和结构是否符合预期。可以通过`qemu-img info`命令查看文件信息。 5. **导入KVM**:最后,将转换后的qcow2文件...

    Linux运维-运维课程-kvm虚拟化部署实践(上)-19virt-install安装虚拟机案例说明.mp4

    Linux运维-运维课程-kvm虚拟化部署实践(上)-19virt-install安装虚拟机案例说明.mp4

    kvm管理系统(shell脚本)

    4. **内存管理**:KVM虚拟机的内存配置直接影响其性能。脚本可以自动分配内存给新创建的虚拟机,或者调整现有虚拟机的内存设置。 5. **创建和管理KVM存储池**:存储池是KVM中组织磁盘资源的方式。脚本可能包含创建...

    vm-manager:一个轻量级的单机qemu kvm虚拟机管理器 | a lignt qemu kvm vm manager for single machine

    一个轻量级的单机qemu kvm虚拟机管理器 使用说明 请将config-tpl.toml修改后保存为config.toml放在程序的工作目录下 请自行修改vm-manager-systemd-tpl.service文件后放置于systemd的service目录 关于使用ovs-dpdk ...

    详解CentOS7.2部署KVM虚拟机(图文)

    前段时间学习了关于PostGis、OSM数据...如果结果中有vmx(Intel)或svm(AMD)字样,就说明CPU的支持的。 egrep '(vmx|svm)' /proc/cpuinfo 2. 关闭SELinux,将 /etc/sysconfig/selinux 中的 SELinux=enforcing 修改

    关机执行暂停虚拟机的脚本文件

    关机执行的脚本文件,脚本文件中包含一些命令的说明 使用时只需要修改虚拟机的目录和目标启动机的目录即可

Global site tag (gtag.js) - Google Analytics