Linux 中使用 KVM
RedHat 红帽CTO Brian Steven在一次记者招待会说:“我们致力于Xen,RHEL 5有10年的生命周期,因此会有一个较大的交叉过渡.我们将在Red Hat 6中全面使用KVM,但KVM目前已经准备就绪,完全可以正式投入到数据中心和云中,不用再等待了!”
KVM要使用2.6.20以上的内核才行.Ubuntu到是不用担心,它基本一直使用的是最新的内核.
需要关心一点就是,你的硬件,CPU是不是支持半虚拟(VT/AMD-V),使用下面的命令可以查看是否支持
|
1
|
grep -E '(vmx|svm)' /proc/cpuinfo |
在ubuntu中安装KVM
我原来以为KVM很难装,没想到现在容易成这样了.太方便了
|
1
|
sudo apt-get install kvm libvirt-bin ubuntu-vm-builder bridge-utils kvm-pxe uml-utilities |
安装KVM在ubuntu中的GUI管理软件,象我,拿ubuntu当桌面,就不使用命令…呵呵
|
1
|
sudo apt-get install virt-manager virt-viewer |
需要设置一下网桥
|
1
|
sudo /etc/init.d/networking stop |
我们来修改一下配置
|
1
|
sudo vim /etc/network/interfaces |
静态IP和使用DHCP是不一样的,DHCP修改成下面这样
|
1
2
3
4
5
6
|
auto br0iface br0 inet dhcpbridge_ports eth0bridge_stp offbridge_fd 5bridge_maxwait 5 |
或
static:
|
01
02
03
04
05
06
07
08
09
10
11
|
auto br0iface br0 inet staticaddress 192.168.0.xxxnetwork 192.168.0.0netmask 255.255.255.0broadcast 192.168.0.255gateway 192.168.0.1bridge_ports eth0bridge_stp offbridge_fd 5bridge_maxwait 5 |
完事后
进入ubuntu的“应用程序”-> “系统工具” -> “虚拟系统管理”就可以全GUI来玩kvm啦
RedHat Centos 安装 KVM
在 Centos 中安装 kvm 也一样很容易,
1. 安装 KVM 和 virtinst (一个创建 virtual machines 的工具 )
|
1
|
yum install kvm kmod-kvm qemu libvirt python-virtinst |
2. 装完后记的重起,重起后检查模块是否有加载
|
1
2
3
|
$ lsmod | grep kvmkvm_amd 50452 0kvm 109264 1 kvm_amd |
也可以使用 virsh 来测试
|
1
|
|
3. 安装桥接管理的工具
|
1
|
yum install bridge-utils |
4. 安装 GUI 的管理软件
|
1
|
yum install virt-manager |
KVM 的高级管理
KVM 现在相当成熟,在三个比较常用管理程序(我所知道的),大家平时玩玩的话,就用 GUI 来管理就好了,GUI 都会我就不详细写了:
virt-manager: 这个我最常用,是 GUI 的,需要 x windows 的支持.这个是 RedHat 开发,大家想了解可以到 http://virt- manager.et.redhat.com/ 上看看
virt-install:python 写的文字介面的管理 kvm 的程序,这个也是Red Hat 开发的哦.
ubuntu-vm-builder:这个是 Canonical (Ubuntu)开发的文字的管理程序.
virt-install 的基本使用
(1. 安装 virt-install 和 图形化的连接软件 virt-viewer
|
1
|
sudo apt-get install python-virtinst virt-viewer |
详细使用可以 man virt-install
(2. virt-install 安装虚拟系统
例:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
$ virt-install \--name= 虚拟机器的名字 \--ram=设置内存的大小 [MB] \--os-type=操作系统的类型 [linux ] \--os-variant=操作系统的版本 [centos 5.4] \--hvm [全虚拟化( hvm )与半虚拟化( paravirt )选择其一] \--paravirt [全虚拟化( hvm )与半虚拟化( paravirt )选择其一] \--accelerate [KVM 加速器] \--cdrom=系统安装的CD路径 [*.iso] \--file=虚拟硬盘的路径 [*.qcow2] \--file-size=虚拟硬盘的大小 [GB] \--bridge=br0 \--vnc \--noautoconsole \--debug |
注意 Windows 只能用有全虚拟化( hvm )与半虚拟化( paravirt )中选择 hvm.hvm 的意思是指硬件辅助的虚拟化,就是需要所谓的 VT 支持的.
建出来的虚拟机会在 /etc/libvirt/qemu/虚拟机器名称.xml 有个配置文件
(3. 使用 virt-install 启动虚拟的机器
进入 virsh 中,所有 virsh 的操作都要先进入这个
|
1
|
virsh |
管理启动
|
1
2
3
|
virsh# start 虚拟机器名字virsh# list --allvirsh# quit |
(4. 安装管理查看 virt-install 安装后的系统是否正常
|
1
|
virt-viewer --connect qemu+ssh://帐号@虚拟机实体主机IP 要连接的虚拟机器名字 |
virt-install 的其它使用
在原来的基础上复制一个新的虚拟机器
|
1
2
|
-o 旧的虚拟机器名称 -n 新的虚拟机器名称 -f 新的虚拟硬碟路径 [*.qcow2] |
查看所有虚拟出的机器
|
1
|
virsh# list --all |
dump 虚拟出的机器配置文件
|
1
|
virsh# dumpxml 虚拟出的机器名称 /tmp/虚拟出的机器配置文件 [*.xml] |
使用现有的虚拟出的机器配置文件建立虚拟新机器
|
1
|
virsh# define /etc/libvirt/qemu/虚拟出的机器配置文件 [*.xml] |
移除虚拟出的机器
|
1
|
virsh# undefine 虚拟出的机器名称 |
关闭虚拟出的机器
|
1
|
virsh# shutdown 虚拟出的机器名称 |
关掉虚拟出的机器的电源
|
1
|
virsh# destory 虚拟出的机器名称 |
KVM的小技巧
1.提升KVM的网络和硬盘IO在linux中的性能
官方提供了一个叫kvm-guest-drivers-windows的网卡驱动很不错,虚拟机的启动参数那里加上model=virtio这个参数,界面中也是可以设置的.硬盘也有virtio的驱动,记的使用.在Virt-manager 中可以选择 virtio disk.获得高性能的网络和磁盘操作
virtio的网卡驱动的地址: http://sourceforge.net/project/showfiles.php?group_id=180599&package_id=267943
virtio的硬盘驱动的地址:http://www.linux-kvm.com/sites/default/files/viostor.iso
2.和真实机器中资料共享
这个是超级方便的,不需要象VBox搞个文件夹,只要在Host的设置中直接给真实的Dev的块设备直接设定到Guest的配置中,然后在进入kvm中的系统,直接mount就行
3.转换VMWare的image让KVM能使用
我们先要安装一个小软件virt-goodies.
|
1
|
sudo apt-get install virt-goodies |
然后使用vmware2libvirt来给VMWare VM的基本资料vmx转成KVM可以读入的XML. 如
|
1
|
vmware2libvirt -f myvm.vmx > myvm.xml |
在转VMWare VM的disk image, 使用qemu-img转成KVM能读的文件.
|
1
|
qemu-img convert -f vmdk myvm.vmdk -O qcow2 myvm.qcow2 |
可能还需要修改一下vmx转成的xml,
disk中的target dev,在VMWARE是ide(target dev=’hda’ bus=’ide’)可能要修改成scsi(target dev=’sda’ bus=’scsi’),我们看能不能找到ROOT就知道是不是用对了;
bridge mode, 给interface type=’network’修改成interface type=’bridge’, 而source network=’default’修改成source bridge=’br0′.
qcow选项,则会创建QCOW(写时复制)格式
修改后给VM的配置加入到libvirtd中.
|
1
2
|
virsh -c qemu:///system define myvm.xmlvirsh -c qemu:///system list --all |
FAQ:
1.如果在安装的时候见到"FATAL: Error inserting kvm_intel"
这是因为没有在BIOS中打开virtualization.需要进入BIOS中打开,然后断电重起.进入系统后打modprobe kvm-intel来加载模块
先在虚拟机中打开windows自己的远程桌面,然后给用户设定密码,然后运行 rundll32 netplwiz.dll,UsersRunDll 启 用windows的自动登录.(这三步必不可少,否则rdesktop是无法连上winxp的)
重新启动虚拟机,当听到winxp后台登录的声音后,即可用rdesktop远程登录:
rdesktop localhost:3389 -u *** -p *** -g 1280×700 -r sound:local
-u winxp的用户名, -p winxp的密码, -r sound:local 启用声音
现在可以看到桌面了吧.是不是灰常流畅呢?鼠标、键盘 都非常完美啊,剪贴板也可以公用哦.堪比装了tools的virtualbox,但是比后者占用的资源要少的多
Linux 中使用 KVM的更多相关文章
- Linux 桌面玩家指南:07. Linux 中的 Qemu、KVM、VirtualBox、Xen 虚拟机体验
特别说明:要在我的随笔后写评论的小伙伴们请注意了,我的博客开启了 MathJax 数学公式支持,MathJax 使用$标记数学公式的开始和结束.如果某条评论中出现了两个$,MathJax 会将两个$之 ...
- Linux中KVM桥接的配置
Linux中KVM桥接的配置 1. 原理 1.1 说明 在安装一个拥有虚拟化功能的Linux操作系统(此处以CentOS为例),一般我们有两种方法: .在光盘安装的时候安装好虚拟化包或者PXE服务器上 ...
- 诠释Linux中『一切都是文件』概念和相应的文件类型
导读 在 Unix 和它衍生的比如 Linux 系统中,一切都可以看做文件.虽然它仅仅只是一个泛泛的概念,但这是事实.如果有不是文件的,那它一定是正运行的进程. 要理解这点,可以举个例子,您的根目录( ...
- Linux中mod相关的命令 内核模块化 mod相关命令都是用来动态加载内核模块/驱动程序模块
Linux中mod相关的命令 内核模块化 mod相关命令都是用来动态加载内核模块/驱动程序模块 http://baike.baidu.com/link?url=lxiKxFvYm-UfJIxMjz ...
- linux中的虚拟化网络模型及各种模型实现
第一种隔离模型: Guest1和Guest2都为虚拟机. 首先要了解在linux中的虚拟机的网卡都包含前半段和后半段,前半段在虚拟机上,后半段在宿主机上,这里以centos6为例,上图 eth0为Gu ...
- 关于Linux虚拟化技术KVM的科普
虚拟化技术应用越来越广泛,虚拟化技术需求越来越强劲.KVM.XEN.Docker等比较热门,尤其是KVM技术越来越受欢迎. 基于此背景,了解一下KVM+QEMU就有点必要了. 从网上收集了一些资料进行 ...
- 在 Linux 中自动配置 IPv6 地址
在 Linux 中自动配置 IPv6 地址 在本文中,我们将学习如何为 ULA 自动配置 IP 地址. 何时使用唯一本地地址 唯一本地地址unique local addresses(ULA)使用 f ...
- LInux中的物理内存管理
2017-02-23 一.伙伴系统 LInux下用伙伴系统管理物理内存页,伙伴系统得益于其良好的算法,一定程度上可以避免外部碎片为何这么说?先回顾下Linux下虚拟地址空间的分布. 在X86架构下,系 ...
- 【转载】基于Linux命令行KVM虚拟机的安装配置与基本使用
基于Linux命令行KVM虚拟机的安装配置与基本使用 https://alex0227.github.io/2018/06/06/%E5%9F%BA%E4%BA%8ELinux%E5%91%BD%E4 ...
随机推荐
- Less的学习(一)
1.html部分 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head& ...
- 树莓派 安装 OpenCV 使用CMake 编译工程 最新版2015
一.安装make,cmake sudo apt-get install make sudo apt-get install cmake 二.下载deb包 去这里下载libopencv_2.4.10.d ...
- 带删除小图标的EditText
import android.content.Context; import android.graphics.Rect; import android.graphics.drawable.Drawa ...
- Delphi 之前解析串口数据
//串口接收数据procedure TfrmClientMain.Comm1ReceiveData(Sender: TObject; Buffer: Pointer; BufferLength: Wo ...
- Linux 文件的几种类型
文件的几种类型: 1.普通文件 普通文件就是一般意义上的文件,它们作为数据存储在系统磁盘中,可以随机访问文件的内容.Linux系统中的文件是面向字节的,文 件的内容以字节为单位进行存储与访问 ...
- DuiLib消息处理剖析
本来想自己写写duilib的消息机制来帮助duilib的新手朋友,不过今天发现已经有人写过了,而且写得很不错,把duilib的主干消息机制都说明了,我就直接转载过来了,原地址:http://blog. ...
- 【Linux】一个简单的线程创建和同步的例子
最近很多精力在Linux上,今天简单看了一下Linux上的线程和同步,其实不管windows还是Linux,OS层面的很多原理和概念都是相同的,很多windows之上的经验和概念完全可以移植到Linu ...
- ansible命令执行模块使用
ansible命令执行模块使用 1.命令执行模块-command 在远程节点上运行命令. 命令模块使用命令名称,接上空格-的分割符作为参数使用,但是不支持管道符和变量等,如果要使用这些,那么可以使用s ...
- Mac OS X 10.9 编译C++11
Notice: How to compile C++ with C++ 11 support in Mac Terminal stackoverflow上面的问题 其实mac里面的不是g++而是cla ...
- JavaWeb高性能开发(一)
今日要闻: 淘宝删差评产业链 在你给出"差评""中评"后不久,有人会偷偷登录你的淘宝账户,把你之前给过的评价删除或改成"好评".而这种人就是 ...