1
、
KVM
虚拟机的管理工具
准确的来说,KVM仅仅是Linux内核的一个模块,管理和创建完整的KVM虚拟机,需要更多的辅助工具。
QEMU-KVM:在Linux系统中,首先我们可以用modprobe命令加载KVM模块,如果用RPM安装KVM软件包,系统会在启动时自动加载模块,QEMU是一个强大的虚拟软件,它可以虚拟不同的构架
Virt-manager:尽管QEMU-KVM工具可以创建和管理KVM虚拟机,RedHat 为KVM开发了更多的辅助工具,比如 libvirt libguestfs等,原因是QEMU工具效率不高,不易于使用。
2
、安装配置
KVM
相关软件
2.1系统要求:
处理器需求:需要一台可以运行最新linux内核的Intel处理器(含VT虚拟化技术)或AMD处理器(含SVM安全虚拟机技术的AMD处理器,也叫AMD-V)
[root@kvm ~]# cat /etc/redhat-release
CentOS release 6.3 (Final)
2.2检查CPU:
[root@kvm ~]# egrep 'vmx|svm' --color=always/proc/cpuinfo
如果输出的结果包含VMX,它是Intel处理器虚拟机技术标志:如果包含SVM,它是AMD处理器虚拟机技术的标志,如果你什么都没有得到,那应你的系统并没有支持虚拟化的处理,不能使用KVM,另处linux发行版本必须在64bit环境中才能使用KVM。
3
、安装
centos 6.2
后下载
163
源配置文件
http://mirrors.163.com/.help/CentOS6-Base-163.repo
# cd /etc/yum.repos.d/ #进入源目录
# cp CentOS-Base.repo CentOS-Base.repo.bak #备份源文件
用下载的163源配置文件替换CentOS-Base.repo文件内容
# yum update 系统升级
如果不提示错误,CentOS-Base.repo文件中
gpgcheck=0
4
、安装
KVM
[root@kvm ~]#yum -y install kvm python-virtinst libvirt bridge-utils virt-manager qemu-kvm-tools virt-viewer virt-v2v
[root@kvm ~]#vi /etc/sysconfig/selinux
SELINUX=disabled
[root@kvm ~]#reboot
5
、重启后确认
libvirtd
是否正常启动、重启。
[root@kvm ~]# /etc/init.d/libvirtd restart
Stopping libvirtd daemon: [FAILED]
Starting libvirtd daemon: [ OK ]
6
、检查
KVM
是否加载成功
显示结果如下表示kvm模块已经加载,如果没有输出信息,则表示没有加载成功:
[root@kvm yum.repos.d]# lsmod | grep kvm
kvm_intel 52570 6
kvm 314739 1 kvm_intel
7
、检查
KVM
是否成功安装
[root@kvm ~]# virsh list --all (--all关闭的也会显示)
Id 名称 状态
----------------------------------------------------
1 Win7 running
2 RedHat running
8
、各版本查询
[root@kvm ~]#
kvm --version
QEMU PC emulator version 0.12.1 (qemu-kvm-0.12.1.2), Copyright (c) 2003-2008 FabriceBellard
QEMU PC emulator version 0.12.1 (qemu-kvm-0.12.1.2), Copyright (c) 2003-2008 FabriceBellard
[root@kvm ~]# virt-install --version
0.600.0
[root@kvm ~]# virsh --version
0.9.10
9 、修改 qemu.conf 配置
0.600.0
[root@kvm ~]# virsh --version
0.9.10
9 、修改 qemu.conf 配置
[root@kvm ~]#vi /etc/libvirt/qemu.conf
vnc_listen = "0.0.0.0"修改vnc监听端口
二、配置网络桥接
http://www.techotopia.com/index.php/Creating_an_RHEL_6_KVM_Networked_Bridge_Interface
已安装bridge-utils,添加修改配置文件来的更简单。以下是实际配置文件,eth0为物理网口,br0为桥接网口。
1
、安装
tunctl
:
# yum install -y tunctl
2
、禁用网络管理器:
# chkconfig NetworkManager off 和桥接有冲突,要关闭
# service NetworkManager stop
3
、修改
eth0
为物理网口,
br0
为桥接网口配置文件:
[root@CY-S01 network-scripts]# cat ifcfg-br0
DEVICE="br0"
TYPE="Bridge"
ONBOOT="yes"
BOOTPROTO=static
IPADDR=192.168.50.190
PREFIX=24
GATEWAY=192.168.50.1
DNS1=8.8.8.8
DELAY=0
[root@CY-S01 network-scripts]#cat ifcfg-eth0
DEVICE="eth0"
NM_CONTROLLED="yes"
ONBOOT=yes
TYPE=Ethernet
BRIDGE="br0"
BOOTPROTO=none
IPADDR=192.168.50.190
PREFIX=24
GATEWAY=192.168.50.1
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME="System eth0"
UUID=5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03
DNS1=202.106.46.151
HWADDR=00:1E:67:07:EC:30
[root@CY-S01 network-scripts]#
4
、最后重启网络
[root@CY-S01 network-scripts]# service network restart
5
、查看桥接网络
[root@CY-S01 network-scripts]# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.0025901b11a2 no eth0
vnet0
virbr0 8000.525400aba808 yes virbr0-nic
三、使用
virt-install
工具安装
guest
系统
[root@kvm /]# virt-install --name=qxm --ram 1024 --vcpus=2
> --disk path=/var/lib/libvirt/p_w_picpaths/qxm.img,size=20 --accelerate
> --cdrom /mnt/cn_windows_7_ultimate_with_sp1_x86_dvd_u_677408.iso
> --graphics vnc,password=123456,port=5920, --network bridge=br0 --force --autostart
使用virt-install 工具,工具自动创建磁盘,默认是raw格式。
[root@CY-S01 vms]# qemu-img info centos.img
p_w_picpath: centos.img
file format: raw
virtual size: 10G (10737418240 bytes)
disk size: 1.4G
1 、可以通过 virt-viewer 查看安装状态:
p_w_picpath: centos.img
file format: raw
virtual size: 10G (10737418240 bytes)
disk size: 1.4G
1 、可以通过 virt-viewer 查看安装状态:
[root@kvm virtual]# virt-viewer
name
[root@kvm virtual]# virt-viewer
name
2
、使用
virt-install
工具安装虚拟机后,在目录
/etc/libvirt/qemu/
下生成
xml
配置文件。
[root@kvm ~]# cd /etc/libvirt/qemu
[root@kvm ~]# cat centos.xml
<domain type='kvm'> 虚拟机类型
<name>centos</name> 虚拟机名称
<uuid>54da30ed-150d-514e-9803-4dc01bd50488</uuid> uuid唯一标示
<memory unit='KiB'>1048576</memory> 指定虚拟机内存大小,给出了单位
<vcpu placement='static'>2</vcpu> 虚拟机占用虚拟cpu个数,这里只物理cpu
[root@kvm ~]# cat centos.xml
<domain type='kvm'> 虚拟机类型
<name>centos</name> 虚拟机名称
<uuid>54da30ed-150d-514e-9803-4dc01bd50488</uuid> uuid唯一标示
<memory unit='KiB'>1048576</memory> 指定虚拟机内存大小,给出了单位
<vcpu placement='static'>2</vcpu> 虚拟机占用虚拟cpu个数,这里只物理cpu
的核,给的多。占用的物理资源越充裕
<os>
<type arch='x86_64' machine='rhel6.3.0'>hvm</type> 指定虚拟系统架构
<boot dev='hd'/> 启动类型,从硬盘启动
</os>
<devices>
<emulator>/usr/libexec/qemu-kvm</emulator> 驱动程序,同上,使用的是qemu-kvm
<disk type='file' device='disk'> 指定磁盘类型
<driver name='qemu' type='raw' cache='none'/> 指定磁盘格式,这里是raw,也支持qcow2.
<source file='/home/vms/centos.img'/> img文件路径
<target dev='hda' bus='ide'/> 磁盘文件标示,驱动类型
<address type='drive' controller='0' bus='0' target='0' unit='0'/>
<interface type='bridge'>
<mac address='52:54:00:11:57:e6'/> 自动生成,可以手动指定。
<source bridge='br0'/> 桥接到哪一个接口
</domain>
3 、使用 virsh 工具管理生成的虚拟机
<type arch='x86_64' machine='rhel6.3.0'>hvm</type> 指定虚拟系统架构
<boot dev='hd'/> 启动类型,从硬盘启动
</os>
<devices>
<emulator>/usr/libexec/qemu-kvm</emulator> 驱动程序,同上,使用的是qemu-kvm
<disk type='file' device='disk'> 指定磁盘类型
<driver name='qemu' type='raw' cache='none'/> 指定磁盘格式,这里是raw,也支持qcow2.
<source file='/home/vms/centos.img'/> img文件路径
<target dev='hda' bus='ide'/> 磁盘文件标示,驱动类型
<address type='drive' controller='0' bus='0' target='0' unit='0'/>
<interface type='bridge'>
<mac address='52:54:00:11:57:e6'/> 自动生成,可以手动指定。
<source bridge='br0'/> 桥接到哪一个接口
</domain>
3 、使用 virsh 工具管理生成的虚拟机
A、[root@kvm ~]#
virsh start centos 启动虚拟机 reboot start shutdown
B、[root@kvm ~]# virsh list 列出当前运行的虚拟机
Id Name State
----------------------------------------------------
1 centos running
3 centos6332 running
C、[root@kvm ~]# ll /var/lib/libvirt/qemu
Id Name State
----------------------------------------------------
1 centos running
3 centos6332 running
C、[root@kvm ~]# ll /var/lib/libvirt/qemu
total 12
srwxr-xr-x 1 root root 0 Aug 22 09:53 centos.monitor
srwxr-xr-x 1 root root 0 Aug 22 09:53 centos.monitor
这里的文件,是libvirtd在重启后,虚拟机也随着自动重启。
D、动态查询kvm资源占用情况,每一台VM,对应一个qemu-kvm进程
[root@CY-S01 vms]#
top -d 1 | grep kvm
4 、截取的 kvm 进程信息
[root@kvm ~]#
ps -aux | grep kvm
<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->
<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->
附一
:
其他问题
1、图形化配置:从菜单中启动,或者运行virt-manager进入图形管理界面,由于比较简单,在此不详述,不过img的位置要好好配置一下,kvm安装后会有一个默认位置,不注意的话容易占满空间。或者直接硬盘分区时单独给/var分一个区。
2、虚拟机重新配置:
虚拟机的配置文件保存在/etc/libvirt/qemu目录下,扩展名是xml。修改相应的文件即可重新配置虚拟机。
3、虚拟机备份及恢复:
备份:拷贝/etc/libvirt/qemu目录下的xml配置文件,以及xml中设置的img文件。
恢复:进入virsh,执行define 目录下的xml文件路径
virsh # define /etc/libvirt/qemu/winxp.xml
4、开机自动启动虚拟机:
[root@kvm qemu]# virsh autostart Winxp
5、克隆KVM虚拟机:
[root@kvm ~]# virt-clone -o Winxp -n winxpclong -f /var/lib/libvirt/p_w_picpaths/winxpclong.img
(-o 原始客体的名称,-n新客户端的名称,-f作为新客户端磁盘映像的新文件)
6、虚拟机意外关机报下述错误:
[root@kvm qemu]# virsh start winxp
错误:开始域 winxp 失败
错误:Unable to read from monitor: Connection reset by peer
解决方法:virsh managedsave-remove winxp
附二
: Virsh
语法参数详解
Autostart 自动开始一个域
Create 从一个 XML 文件创建一个域
Define 从一个 XML 文件定义(但不开始)一个域
edit 编辑某个域的 XML 配置
shutdown 关闭一个域
start 开始一个(以前定义的)非活跃的域
reboot 重新启动一个域
suspend 挂起一个域
resume 重新恢复一个域
vncdisplay vnc 显示
使用
save
来备份当前虚拟机的状态:
[root@kvm p_w_picpaths]# virsh
save --bypass-cache RedHat /var/lib/libvirt/p_w_picpaths/test.img --running
上面这个命令将RedHat的当前状态保存到/opt/vm2_save文件中,这个文件我看了一下,597M.
--running参数表示下次restore回来的时候能够自动启动RedHat
这个命令会导致RedHat被关闭。
现在还原:必须先关闭虚拟机
[root@kvm p_w_picpaths]# virsh shutdown RedHat
[root@kvm p_w_picpaths]# virsh restore /var/lib/libvirt/p_w_picpaths/test.img --bypass-cache --running (还原时不要指定虚拟机名称)
转载于:https://blog.51cto.com/chinawl/1136532