CentOS 6.3部署KVM虚拟机 V1.0

简介:

 20104月发布的RHEL6.0版本中,去掉了XEN,这也许是第一个不包含Xen Hypervisor的知名linux发行版。KVM是指基于Linux内核的虚拟机(Kernel-base Virtual Machine),增加到Linux内核是Linux发展的一个重要里程碑,这也是第一个整合到Linux主线内核的虚拟化技术。在KVM模型中,每一个虚拟机都是一个由Linux调度程序管理的标准进程,你可以在用户空间启动客户机操作系统,一个普通的Linux进程有两种运行模式:内核和用户,KVM增加了第三种模式:客户模式(有自己的内核和用户模式)。

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

[root@kvm ~]# virt-install  --version
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/images/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
image: centos.img
file format: raw
virtual size: 10G (10737418240 bytes)
disk size: 1.4G
1
、可以通过 virt-viewer 查看安装状态:
[root@kvm virtual]# virt-viewer name

2 、使用 virt-install  工具安装虚拟机后,在目录 /etc/libvirt/qemu/ 下生成
[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

的核,给的多。占用的物理资源越充裕

  <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 工具管理生成的虚拟机

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

total 12
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

附一 :   其他问题

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/images/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 images]# virsh  save  --bypass-cache RedHat  /var/lib/libvirt/images/test.img  --running

上面这个命令将 RedHat 的当前状态保存到 /opt/vm2_save 文件中,这个文件我看了一下, 597M.

--running 参数表示下次 restore 回来的时候能够自动启动 RedHat

这个命令会导致 RedHat 被关闭。

 

现在还原:必须先关闭虚拟机

[root@kvm images]# virsh shutdown RedHat

[root@kvm images]# virsh restore /var/lib/libvirt/images/test.img --bypass-cache --running  (还原时不要指定虚拟机名称)



本文转自 freeterman 51CTO博客,原文链接:http://blog.51cto.com/myunix/1118963,如需转载请自行联系原作者
相关文章
|
1月前
|
Linux 网络安全 数据安全/隐私保护
如何在 VM 虚拟机中安装 CentOS Linux 9 操作系统保姆级教程(附链接)
如何在 VM 虚拟机中安装 CentOS Linux 9 操作系统保姆级教程(附链接)
137 0
|
3月前
|
Linux
CentOS7.9服务器一键脚本部署FRP内网穿透服务端与客户端
CentOS7.9服务器一键脚本部署FRP内网穿透服务端与客户端
207 0
|
2月前
|
JavaScript Java 应用服务中间件
centos部署vue项目(java,tomcat环境的搭建)
centos部署vue项目(java,tomcat环境的搭建)
37 0
|
3月前
|
监控 安全 Linux
CentOS7下部署ARL资产侦察灯塔系统
CentOS7下部署ARL资产侦察灯塔系统
149 3
|
1月前
|
分布式计算 关系型数据库 MySQL
Sqoop【部署 01】CentOS Linux release 7.5 安装配置 sqoop-1.4.7 解决警告并验证(附Sqoop1+Sqoop2最新版安装包+MySQL驱动包资源)
【2月更文挑战第8天】Sqoop CentOS Linux release 7.5 安装配置 sqoop-1.4.7 解决警告并验证(附Sqoop1+Sqoop2最新版安装包+MySQL驱动包资源)
92 1
|
2月前
|
存储 NoSQL Linux
centos7部署redis以及多实例
centos7部署redis以及多实例
51 0
|
22小时前
|
JavaScript Linux 数据安全/隐私保护
如何在CentOS7部署Wiki.js知识库并实现分享好友公网远程使用【内网穿透】
如何在CentOS7部署Wiki.js知识库并实现分享好友公网远程使用【内网穿透】
|
17天前
|
Linux Shell 开发工具
CentOS8中Docker安装及部署
CentOS8中Docker安装及部署
62 0
|
27天前
|
关系型数据库 MySQL 数据库
虚拟机Linux-Centos系统网络配置常用命令+Docker 的常用命令
虚拟机Linux-Centos系统网络配置常用命令+Docker 的常用命令
30 0
|
1月前
|
存储 监控 Linux
Flume【部署 02】Flume监控工具Ganglia的安装与配置(CentOS 7.5 在线安装系统监控工具Ganglia + 权限问题处理 + Flume接入监控配置 + 图例说明)
【2月更文挑战第17天】Flume【部署 02】Flume监控工具Ganglia的安装与配置(CentOS 7.5 在线安装系统监控工具Ganglia + 权限问题处理 + Flume接入监控配置 + 图例说明)
26 1
Flume【部署 02】Flume监控工具Ganglia的安装与配置(CentOS 7.5 在线安装系统监控工具Ganglia + 权限问题处理 + Flume接入监控配置 + 图例说明)

热门文章

最新文章