linux服务之kvm

安装软件

[[email protected] ~]# yum grouplist

Virtualization
Virtualization Client
Virtualization Platform

Virtualization Tools

centos6.4-minimal-64bit 默认是200个包
[[email protected] ~]# yum install libvirt
python-virtinst qemu-kvm
Transaction
Summary
=====================================================================================================================================================
Install
87 Package(s)
Upgrade 4 Package(s)

Total download size: 36 M
Is this ok [y/N]: y

[[email protected] ~]# yum install tigervnc-server
Transaction
Summary
=====================================================================================================================================================
Install
22 Package(s)

Total download size: 24 M
Installed size: 70 M
Is this ok [y/N]: y

[[email protected] kvm]# yum install virt-viewer
Transaction
Summary
=====================================================================================================================================================
Install
24 Package(s)
Upgrade 2 Package(s)

Total download size: 8.2 M
Is this ok [y/N]:

[[email protected] ~]# lsmod |grep kvm
kvm_intel 53484 0
kvm
316506 1 kvm_intel
[[email protected] ~]# vi /etc/selinux/config

改为SELINUX=disabled
[[email protected] ~]# reboot
[[email protected] ~]# getenforce

Disabled
[[email protected] ~]# service iptables stop
[[email protected] ~]# service
libvirtd start
Starting libvirtd daemon:
[[email protected] ~]# rpm -ql
libvirt
[[email protected] ~]# rpm -ql python-virtinst
virt-install -
provision(准备,预备) new virtual machines

[[email protected] networks]# cat /etc/libvirt/qemu/networks/default.xml

[[email protected] ~]# vi /etc/libvirt/qemu.conf

QEMU和KVM的关系

现在所说的虚拟化,一般都是指在CPU硬件支持基础之上的虚拟化技术。KVM也同hyper-V、Xen一样依赖此项技术。没有CPU硬件虚拟化的支持,KVM是无法工作的。
准确来说,KVM是Linux的一个模块。可以用modprobe去加载KVM模块。加载了模块后,才能进一步通过其他工具创建虚拟机。但仅有KVM模块是远远不够的,因为用户无法直接控制内核模块去做事情:
还必须有一个用户空间的工具才行。这个用户空间的工具,开发者选择了已经成型的开源虚拟化软件
QEMU。说起来QEMU也是一个虚拟化软件。它的特点是可虚拟不同的CPU。
比如说在x86的CPU上可虚拟一个Power的CPU,并可利用它编译出可运行在Power上的程序。KVM使用了QEMU的一部分,并稍加改造,就成了可控制KVM的用户空间工具了。
所以你会看到,官方提供的KVM下载有两大部分三个文件,分别是KVM模块、QEMU工具以及二者的合集。也就是说,你可以只升级KVM模块,也可以只升级QEMU工具。这就是KVM和QEMU的关系。

网卡桥接

其实KVM的安装和使用都很方便简单的,大家要理解KVM各个参数的含义。最关键的就是KVM的网络桥接的设置,在这里大家要多看软件自身的文档,会有很大的帮助。
要注意,系统重启后要重新加载kvm内核模块:当然,你也可以修改系统相关设置在启动时自动加载该模块。kvm是不是比VB和VM要爽得多呢?
KVM的默认网络模式为NAT,就是说借助宿主机模式上网,现在我们想改成桥接模式,这样外界就可以直接和宿主机里的虚拟机通讯了。

[[email protected] ~]#vi /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0
ONBOOT=yes
TYPE=Ethernet
BRIDGE=br0

IPADDR=192.168.1.187
NETMASK=255.255.255.0

在我们安装完成的时候,是没有关于br0网卡的配置文件的,拷贝一下eth0并重命名为br0
cp
/etc/sysconfig/network-scripts/ifcfg-eth0
/etc/sysconfig/network-scripts/ifcfg-br0 br0以下四项
DEVICE=br0

BOOTPROTO=static
ONBOOT=yes
TYPE=Bridge

保存网卡配置重启网卡
[[email protected] ~]#service network restart
检查br0是否成功

[[email protected] ~]#ifconfig

其实我们在虚拟机搭建的时候,我们最终关心的网卡是: eth0, br0, vnet0,vnet1…
其中,我们的eth0是原来的物理网卡,br0是我们虚拟出来的桥设备,而vnetXXX就是桥接映射到虚拟机里面用到的网
卡。当配置完了之后,我们使用ifconfig,查看起来的话,eth0是没有ip地址的,而br0仿佛是虚拟出来的一个原来eth0的访问接口,它具有ip地址,可以代替原来的eth0被访问,而vnetXX的地址可以在
建立虚拟机之后在虚拟机里面配置,桥接后可以被外部访问。

[[email protected] ~]# brctl ?
[[email protected] ~]# brctl showmacs br0
[[email protected] ~]#
brctl show
bridge name bridge id STP enabled
interfaces
br0 8000.4487fc5bf0b0 no
eth0
virbr0 8000.525400a64f66 yes
virbr0-nic
系统默认生成接口主要用于NAT,如果要删除可以先ifconfig virbr0 down接口,然后利用brctl delbr
virbr0删除掉

当然,有的时候我们在虚拟机里可能不仅仅使用一块网卡,但是在新增网卡的时候会有无法识别的情况,我们如何应对呢,下面记录一种方法,也许可以帮助我们解决问题哦。
[[email protected]
~]#vi /etc/udev/rules.d/70-persistent-net.rules

# PCI device 0x10ec:0x8168 (r8169) 这个是新增网卡
SUBSYSTEM=="net",
ACTION=="add", DRIVERS=="?*", ATTR{address}=="c8:61:00:4F:CD:76",
ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"
# PCI device 0x10ec:0x8169
(r8169) 这个是旧的网卡
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*",
ATTR{address}=="00:23:56:9A:E8:5C", ATTR{type}=="1", KERNEL=="eth*",
NAME="eth0"

将旧的eth0的配置信息删掉,然后将新增的eth1改成eth0,然后进入/etc/sysconfig/network-script/
修改ifcfg-eth0的配置文件,更改mac地址(改成新增网卡的),然后重启网络或者重启系统配置既可以生效。

虚拟机连接与查看  不知道虚拟机安装时如何去连接,win7安装vnc客户端去连接host创建的guest,但却一闪而过,是不是host上一定要装桌面环境才能去连接查看

连接kvm虚拟机的几种方法,以下是guest系统已安装好,然后连接的方法
我现在知道的有3中方法:
1,ssh:如果虚拟机网络没有配置好就只能用下面两种方法。
2,vnc:可以使用virt-viewer,或者vncviewer命令,但是virt-viewer我遇到了报错,最终没有解决。
Unable
to connect to the graphic server localhost:5900
3,通过serial
console连接。以下是在guest里所做的
http://nixcraft.com/kernel-based-virtual-machine/15075-kvm-virsh-redirect-centos-redhat-console-serial-port.html
1)echo
“ttyS0″ >>
/etc/securetty
2)编辑/boot/grub/grub.conf文件在kernel的末尾添加如下:
console=ttyS0
3)编辑
/etc/inittab文件在末尾添加:
S0:12345:respawn:/sbin/agetty ttyS0
115200
4)重启kvm虚拟机,然后在host主机上面依次执行下面命令:
desktop # virsh --connect
qemu:///system
virsh # console centos
5)回车输入用户名密码登陆即可。

默认情况下,QEMU会启动一个VNC
server端口(如上面的::1:5900),可以用vncviwer工具来连接到QEMU的VNC端口查看客户机。
这里可以使用“vncviewer
:5900”命令连接到QEMU启动的窗口

步骤

kvm支持的镜像很多,常用的是原始镜像(*.img),还有支持动态大小扩张的qocw2格式(首选)。
更优的选择是系统盘如C盘用img格式,数据盘用qcow2格式以减少服务器磁盘闲置空间。
qemu-img
create -f raw test.img
10G
创建qcow2镜像,但是其实际占有磁盘大小仅为193K左右,而虚拟机内部显示磁盘大小为10G,也就是磁盘空间使用时才分配,即所谓动态扩张。
qemu-img
create -f qcow2 ubuntu.qcow2 10G

要在一台host上跑起一个虚拟机一般需要三个步骤:
第一步:创建虚拟机镜像
qemu-img create -f raw
/images/vm1.raw
8G
qmeu-img创建的镜像是一个稀疏文件,也就是说刚创建出来的文件并没有8G,它会随着数据的增多慢慢增加,直到8G
第二步:创建guest系统(以下三种方式)
第三步:管理guest系统(启动,关闭等操作)

虚拟机创建

http://www.open-open.com/lib/view/open1346511443506.html
讲的比较详细
对于用户或者管理员来说,虚拟机的创建有着很多的方法,例如:kvm自带命令行工具、使用virsh命令来创建、使用具有图形界面的virt-manager等等。
但是它们底层实现的原理都是一样的,而且它们基本上都是通过开源的虚拟化库Libvirt来开发的。下面就讲一讲三种用户可以创建虚拟机的方式。

宿主机叫host,虚拟机叫guest

1.1 利用kvm自带命令行工具进行创建
dd if=/dev/zero of=rhel6u3.img
bs=1M\ count=8192 也可以用此命令创建一个硬盘文件与qemu-img create命令效果一样
[[email protected] ~]#
/usr/libexec/qemu-kvm --help
[[email protected] ~]# qemu-img --help
[[email protected] ~]#
qemu-img create -f raw test.img 10G
[[email protected] ~]# qemu-img create -f qcow2
centos65-64.qcow2 10G
[[email protected] ~]# /usr/libexec/qemu-kvm -boot order=dc -hda
centos65-64.qcow2 -cdrom CentOS-6.5-x86_64-minimal.iso -m 512 -smp 2 -vnc :0
安装系统
[[email protected] ~]# /usr/libexec/qemu-kvm -boot c -hda test.img -m
512  启动系统

1.2 利用virsh命令行工具进行创建
virt-install是一个使用“libvirt”
hypervisor 管理库构建新虚拟机的命令行工具,此工具使用串行控制台,SDL(Simple DirectMedia
Layer)图形或者VNC客户端/服务器,
支持基于命令行和图形安装。
编写xml配置文件,下面介绍
virsh create
test.xml
利用virsh工具创建虚拟机必须编写xml配置文件,该文件指定虚拟机的各项参数,比如虚拟机名称、磁盘镜像的位置、内存大小、显示配置等等。下面给出一个简单的配置文件的例子。
#test.xml
<domain
type=‘qemu‘>
<name>windowsXP</name>

<uuid></uuid>
<memory>500000</memory>

<currentMemory>500000</currentMemory>

<vcpu>1</vcpu>
<os>
<type
arch=‘i686‘machine=‘pc‘>hvm</type>
<boot dev=‘hd‘/>

<boot dev=‘cdrom‘/>
</os>
<devices>

<emulator>/usr/bin/qemu-system-x86_64</emulator>
<disk
type=‘file‘ device=‘cdrom‘>

<sourcefile=‘/home/turnupthesun/kvm/windowsXP.iso‘/>
<target
dev=‘hdc‘/>
<readonly/>
</disk>
<disk
type=‘file‘ device=‘disk‘>

<sourcefile=‘/home/turnupthesun/kvm/windowsXP.img‘/>
<target
dev=‘hda‘/>
</disk>
<graphicstype=‘vnc‘ port=‘14‘
listen=‘127.0.0.1‘/>

</devices>
</domain>
下面介绍其中几个比较重要的元素及属性。
(1)<domain>元素的type属性指定运行域的虚拟机管理器,针对kvm应当选择“qemu”。
(2)<name>元素的内容指定域的名字。
(3)<memory>元素和<currentMemory>元素的内容非别指定启动时为域分配的最大内存和实际分配的内存。
(4)<os></os>元素之间的内容用来指定操作系统启动的一些信息。其中重复的<boot>元素形成了一个启动顺序表,比如例子中先从磁盘启动,磁盘无法启动再从光盘启动。
(5)<disk>元素的device属性指明不同的设备,<source>标签的file属性指明这些设备的位置。

[[email protected] ~]# virsh
Welcome to virsh, the virtualization interactive
terminal.

Type: ‘help‘ for help with commands
‘quit‘ to quit

virsh #
[[email protected] ~]# virsh -c qemu:///system list

virt-install -n centos.... 安装虚拟机
virt-viewer -c qemu:///system
centos vnc远程到虚拟机安装系统
如果这里报错无法连接虚拟机,则安装vncviewer
vncviewer
192.168.2.8
yum -y install dacpid 安装完虚拟机系统则安装acpid,不然无法通过virsh安装关闭虚拟机

virsh -c qemu:///system
virsh # list --all
virsh # start
centos
virsh # shutdown
centos 正常关闭虚拟机命令(如果虚拟机没有安装dacpi命令则不能用shutdown关闭虚拟机)
virsh # destroy
centos 强制关闭
# virt-clone --connect=qemu:///system -o centos -n kvm1 -f
centos1.qcow2 virt-clone命令克隆虚拟机

1,通过virsh交互无法shutdown关闭kvm虚拟机,原因是kvm虚拟机没有安装acpid。
2,vnc问题,virt-viewer报错,只能使用vncviewer
127.0.0.1来连接虚拟机。

virsh list //查看虚拟机信息
virsh destroy kvmtest1 //virsh destroy
ID/NAME删除虚拟机
virsh start kvmtest1 //virsh start NAME启动虚拟机
virsh console
kvmtest1 //virsh console ID/NAME控制台连接虚拟机
//利用ctrl+]切换到host主机,host主机利用virsh
console
ID/NAME切换到guest系统。
虚拟机的配置文件保存在/etc/libvert/qemu目录下,扩展名是xml,这文件只能用virsh
edit来编辑用vi无效,修改相应的文件即可重新配置虚拟机。

[[email protected] kvm]# virt-install -n centos65 -r 512 --disk
path=/root/kvm/centos65-64.img -c CentOS-6.5-x86_64-minimal.iso --network
bridge=br0 --graphics vnc,password=123456,port=5910
virt-install -v -n
kvmtest1 -r 512 –vcpus=1 -l http://mirrors.163.com/centos/6.3/os/x86_64/
-nographics -virt-type=kvm -f /home/vmimages/kvmtest1.img -s 10 -w bridge:br0 -w
bridge:br1 -extra-args=‘console=tty0 console=ttyS0,115200,n,8
ks=http://192.168.xx.xx/test1.cfg‘ -connect qemu:///system
-w 联网方式(birdge
bridge:br0/nat bridge:virbr0)
-os-type=‘windows‘ -os-variant=win2k3
安装windows最好加上这个否则会报错,大家注意一个问题,如果你虚拟的是WIN2003,那么切勿在-net参数中使用model=e1000,否则HOST和GUEST之间不能PING通
virt-install工具安装虚拟机后,在目录/etc/libvirt/qemu/下生成xml配置文件

1.3
如何通过图形化界面virt-manager来创建虚拟机

virt-manager是RedHat共享的一个开源虚拟化管理软件,它是用Python编写的GUI程序,底层使用了Libvirt对各类Hypervisor进行管理。
Virt-manger既虚拟机管理器,是创建和管理虚拟客户端的图形工具。具体的操作步骤为:
a.从控制台窗口启动这个工具,从root身份输入virt-manager命令,点击file菜单的”新建”选项。
b.virt-manager显示两种虚拟化方法:Qemu/KVM或者Xen,这里选择Qemu/KVM作为hypervisor。
c.选择虚拟机名称和指定一种安装方法,通过网络安装服务器或者本地CD/DVD驱动包括本地ISO文件,在此我用本地ISO的安装方法。
d.输入本地ISO文件路径和文件名(假设本地ISO的路径就在根目录下,名称为Mini-BT3.6.1.iso)
e.设置虚拟机使用的内存容量和处理器数量。
f.配置虚拟机的存储方法。对于存储后端有两种选择:物理存储设备或者使用之前建立的磁盘文件。如果处于简单测试,创建文件作为存储后端。当创建虚拟磁盘时,默认为10GB。
g.网络配置,在这里选择NAT方式。
这样一个虚拟机就开始启动起来了,将会出现启动界面,最后出现虚拟机中操作系统的界面。

虚拟机备份及恢复
备份:拷贝/etc/libvirt/qemu目录下的xml配置文件,以及xml中设置的img文件。
恢复:进入virsh,执行define

linux服务之kvm,布布扣,bubuko.com

时间: 2024-10-12 23:11:42

linux服务之kvm的相关文章

Linux服务篇之四:构建MySQL服务器

Linux服务篇之四:构建MySQL服务器  MySQL是一个开放源码的小型关联式数据库管理系统,开发者为瑞典MySQL AB公司, 目前属于Oracle公司,MySQL被广泛地应用在Internet上的中小型网站中.由于其体积小.速度快.总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库. 对应目前主流的LAMP架构来说,Mysql更是得到各位IT运维.DBA的青睐,目前mysql已被orcacle收购,不过好消息是原来mysql创始

linux服务与进程

linux服务与进程 http://www.cnblogs.com/jamesbd/p/3567654.html linux服务与进程 1.应用程序 2.服务脚本 3.配置文件 4.查看进程 5.查看端口 6.crontab任务计划 需求:搭建一个web服务器,用apache软件,web服务能够随着计算机的启动而启动,而且对外提供web服务的端口是800端口,最后查看进程和端口? 1.安装apache的软件 yum -y install httpd* 2.设置随计算机启动而启动 chkconfi

Linux服务的管理

1.Linux服务的介绍 系统服务 --某些服务的服务的对象是Linux系统本身,或者Linux系统系统用户,这类服务我们称为系统服务(System Service) 网络服务 --提供给网络中的其他客户端(Client)调用使用的服务,这类的服务我们统称为网络服务(Networking Service) 按照服务启动的方法又可分为 独立系统服务 --服务一经启动,除非关闭系统或者手动关闭,否则都在后台执行,不管有没有用到,这样的服务我们称为独立系统服务(Sys V Service) 临时服务

[Linux]服务管理:rpm包, 源码包

--------------------------------------------------------------------------------------------------- |--- 1. 独立的服务  |---- rpm包默认安装的服务 |--- 2. 基于xinetd服务 linux服务分类: | |---- 源码包安装的服务 查询已安装的服务: rpm包安装的服务:chkconfig --list( 查看服务自启动状态,可以看到所有rpm包安装的服务 ) ( 7个

Linux服务篇之七:MySQL主从原理及架构配置

Linux服务篇之七:MySQL引擎了解.主从原理及架构配置 一.MySQL引擎了解 MyISAM引擎 默认表类型,它是基于传统的ISAM类型,ISAM是IndexedSequential Access Method (有索引的顺序访问方法) 的缩写,它是存储记录和文件的标准方法.不是事务安全的,而且不支持外键,如果执行大量的select, MyISAM比较适合. InnoDB引擎 支持事务安全的引擎,支持外键.行锁.事务是他的最大特点.Innodb最初是由innobase Oy公司开发,200

完解LINUX服务器之NTP服务

NTP:Network Time Protocol  是用来使计算机时间同步化的一种协议,它可以使计算机对其服务器或时钟源(如石英钟,GPS等等)做同步化,它可以提供高精准度的时间校正(LAN上与标准间差小于1毫秒,WAN上几十毫秒),且可介由加密确认的方式来防止恶意的协议攻击. 1.安装: yum install NTP yum install tzdata NTP协议使用的是UDP,Port:123 2.配置文件: /etc/ntp.conf                #NTF服务器的主

linux服务延时启动

zabbix-server在系统启动时,需要先启动xampp中的mysql,如果mysql没启动就会导致zabbix-server启动失败 怎么设置linux服务延时启动呢,很简单,用sleep就可以 修改/etc/rc.local文件 /opt/lampp/lampp startmysql /bin/sleep 60 /etc/init.d/zabbix-server start 就这么简单.

Linux之部署KVM虚拟化平台

Linux之部署KVM虚拟化平台 案例需求: 1.安装KVM所需软件,验证. 2.设置KVM网络,将网络设置为桥接模式. 3.使用virt-manager安装linux系统. 4.kvm基本管理的命令 (1)查看虚拟机的状态 (2)虚拟机的关机,强制关机和开机 (3)虚拟机的挂起和恢复 (4)配置虚拟机实例伴随宿主机自动启动 (5)导出虚拟机配置 5.kvm文件管理 (1)将raw格式磁盘转换为qcow2格式 (2)转换后,修改xml配置文件 (3)查看虚拟机磁盘信息 6.虚拟机克隆 7.虚拟机

linux服务自动手动启动tomcat的方式

Linux服务自启动的方式有多种,有时候无法通过chkconfig命令运行级别设置和ntsysv图形运行级别设置时,此下方法可以有效解决问题. 生产环境: OS: CentOS release 6.7 (Final) Web服务器:Apache Tomcat/7.0.57 任务:Linux启动时需要自动启动Tomcat服务. Linux自动启动服务配置方式如下: [[email protected] ~]# [[email protected]~]# cd  /etc/rc.d [[email