RedHat下如何安装和使用KVM

时间:2022-10-05 17:20:05

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

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 kvm
kvm_amd                50452  0
kvm                   109264  1 kvm_amd

 也可以使用 virsh 来测试

?
1
$ virsh -c qemu:/// system list

 

 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 \
-- connect qemu:/// system \
--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  --all
virsh # quit

 

(4. 安装管理查看 virt-install 安装后的系统是否正常

?
1
virt-viewer --connect qemu+ ssh : // 帐号@虚拟机实体主机IP    要连接的虚拟机器名字

 

virt-install 的其它使用

在原来的基础上复制一个新的虚拟机器

?
1
2
$ virt-clone  -- connect =qemu:/// system \
-o 旧的虚拟机器名称  -n 新的虚拟机器名称  -f  新的虚拟硬碟路径 [*.qcow2]
3、克隆虚拟机
virt-clone -o vm1 -n vm2 -f /usr/local/kvm/vm2/disk.os /usr/local/kvm/vm2/disk.data -d --prompt
因为我的vm1虚拟机有两个磁盘,所以,在克隆时需要制定两个磁盘文件,如果你不清楚顺序,可以将-f部分去掉,后面的--prompt,交互式,可以根据提示输入磁盘文件。
注意:克隆的xml文件会丢失vnc的passwd参数,需要手动添加。

克隆后,某个磁盘变为实际使用的大小?
qemu-img create -F qcow2 -b ./disk.data.1 -f raw disk.data 80G

错误:
在convert 或 create时,报错:
qemu-img could not open 磁盘文件
问题:当 qemu-img info 磁盘文件存在backing file 项时,会报这个错误。
backing file 来源:当使用qemu-img create创建磁盘时,会创建这个项
另外:当虚拟机正在使用该磁盘时,qemu-img info 磁盘文件时,也会出现这个错误。

关于qemu-img convert:
会创建新格式的磁盘,旧格式的磁盘仍然存在。

关于error: unknown OS type hvm
kernel没有加载模块,检查bios里是否开启了虚拟化

 

查看所有虚拟出的机器

?
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,下面是两种常见的网络连接方式,默认是default,适用于不同需求的网络环境,后面配置KVM中会详细说明。

bridge网络模式
virt-install --name=gatewat-4 --ram 4096 --vcpus=4 -f /home/kvm/gateway-4.qcow2 --cdrom /home/iso/CentOS-6.5-x86_64-bin-DVD1.iso --graphics vnc,listen=0.0.0.0,port=5920, --network bridge=br0 --force --autostart

NAT网络模式
virt-install --name=test --ram 512 --vcpus=1 -f /home/kvm/test.qcow2 --cdrom /opt/CentOS-6.5-x86_64-bin-DVD1.iso --graphics vnc,listen=0.0.0.0,port=5988, --network network=default, --force --autostart

 

1.nat模式配置

KVM默认采用nat模式,用户网络(User Networking):让虚拟机访问主机、互联网或本地网络上的资源的简单方法,但是不能从网络或其他的客户机访问客户机。在公网IP不够使用KVM还需要上网的时候可以使用,大大节省了公网IP!同时这种模式也使得KVM不用暴露在公网之中,也增加了安全性。

2.Bridge方式

虚拟网桥(Virtual Bridge):设置好后客户机与互联网,客户机与主机之间都可以通信,试用于需要多个公网IP的环境。

Bridge方式即虚拟网桥的网络连接方式,是客户机和子网里面的机器能够互相通信。可以使虚拟机成为网络中具有独立IP的主机。

桥接网络(也叫物理设备共享)被用作把一个物理设备复制到一台虚拟机。网桥多用作高级设置,特别是主机多个网络接口的情况。

要做到这一点,我们安装bridge-utils工具。。。。。。
yum install bridge-utils
... 并且配置一个网桥从/etc/sysconfig/network-scripts/ifcfg-eth0参考BOOTPROTO, BROADCAST, IPADDR, NETMASK和NETWORK等值来创建文件/etc/sysconfig/network-scripts/ifcfg-br0 :
vi /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE=br0
TYPE=Bridge
BOOTPROTO=static
BROADCAST=192.168.0.255
IPADDR=192.168.0.100
NETMASK=255.255.255.0
NETWORK=192.168.0.0
ONBOOT=yes
修改/etc/sysconfig/network-scripts/ifcfg-eth0 as follows (取消注释BOOTPROTO, BROADCAST, IPADDR, NETMASK, 和NETWORK 最后添加 BRIDGE=br0):
vi /etc/sysconfig/network-scripts/ifcfg-eth0
# Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+
DEVICE=eth0
#BOOTPROTO=static
#BROADCAST=192.168.0.255
HWADDR=00:10:A7:05:AF:EB
#IPADDR=192.168.0.100
#NETMASK=255.255.255.0
#NETWORK=192.168.0.0
ONBOOT=yes
BRIDGE=br0
重新启动网络...
/etc/init.d/network restart
... 运行
ifconfig

 

 

转载:http://lvmy.iteye.com/blog/1297409http://segmentfault.com/a/1190000000644069http://5ydycm.blog.51cto.com/115934/274902/