设为首页 收藏本站
查看: 3903|回复: 0

[经验分享] KVM虚拟机管理配置——libvirt

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-3-4 08:42:00 | 显示全部楼层 |阅读模式
                      一、关于libvirt
1)libvirt简介
Libvirt是目前使用最广泛的虚拟机管理工具和应用程序接口(API),常用的虚拟机管理工具(virsh、virt-install、virt-manager)和云计算架构平台(如:OpenStack、OpenNubula)等在底层都使用libvirt的应用程序接口。

Libvirt是一套开源的支持linux下虚拟化工具的函数库,为安全有效的管理各域,libvirt提供的一个公共的稳定软件层。
Libvirt由三个部分组成:应用程序接口(API)、一个守护进程libvirtd、一个默认的命令行管理工具virsh。
作用分别如下:
API为其他虚拟机管理工具(如virsh  virt-manager)提供程序库支持;
Libvirtd守护进程管理所有域,在使用各工具对虚拟机进行管理时,该守护进程需要打开;
Virsh是libvirt项目中默认的命令行管理工具,具有定义、启动、停止等管理功能。

2)Libvirt工作原理如下图:
wKioL1T1K4DRXfNPAAJBES4pTo0740.jpg
一句话描述:管理工具virsh、virt-manager、virt-install等,通过使用libvirt提供的API的,对虚拟化程序(Hypervisor)在各物理节点(node)上虚拟化出的多个域(domain,机客户操作系统 Guest OS)进行操作管理。

概念解释:
虚拟机管理程序(Hypervisor):是一个虚拟化软件,可以让一个节点上虚拟出多个客户机,常用的虚拟化软件有:KVM、Xen、VMware、VirtualBox等;
节点(node):指一台物理机,每个node上面可以虚拟化出多个虚拟域(Domain);
域(domain):虚拟化软件在物理机上虚拟化出的一个客户机,域也称为实例,或客户机操作系统(Guest OS)、虚拟机(Virtual  machine)。

3)节点(node)、虚拟管理程序(Hypervisor)、域(domain)的关系如下图:
wKioL1T1Lfiynch3AADMhMen3O8818.jpg
在物理节点(node)上运行虚拟化软件(Hypervisor),通过Hypervisor在node上生成多个独立的虚拟域(domain)。

二、准备工作——软件安装与网桥配置
1)检查服务器CPU是否支持虚拟化,看是否有vmx或svm 参数
[iyunv@project ~]# grep  -E  'vmx|svm' /proc/cpuinfo
flags: fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm  pebs bts rep_good xtopology  dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm dca sse4_1 sse4_2 popcnt aes lahf_lm arat dts tpr_shadow vnmi flexpriority ept vpid

2)安装所需软件
通过yum源安装虚拟化软件与管理工具相关的3组软件包
[iyunv@project ~]# yum groupinstall "Virtualization Client" "Virtualization Platform" "Virtualization Tools"
启动libvirt服务
[iyunv@project ~]# /etc/init.d/libvirtd   restart
Stopping libvirtd daemon:                                  [  OK  ]
Starting libvirtd daemon:                                  [  OK  ]

安装网桥管理工具
[iyunv@project ~]# yum  install  bridge-utils  tunctl  -y

3)添加桥接网络(Bridge)
新建网桥br0配置文件,将网卡em1加入网桥br0
[iyunv@project ~]# cd  /etc/sysconfig/network-scripts
[iyunv@project network-scripts]# vim  ifcfg-br0
DEVICE=br0
ONBOOT=yes
BOOTPROTO=static
IPADDR=10.10.100.30
NETMASK=255.255.255.0
GATEWAY=10.10.100.254
TYPE=Bridge

[iyunv@project network-scripts]# vim   ifcfg-em1
DEVICE="em1"
ONBOOT="yes"
BRIDGE=br0

重启服务器网络服务,查看网桥br0
br0       Link encap:Ethernet  HWaddr 90:B1:1C:0D:80:14  
          inet addr:10.10.100.30  Bcast:10.10.100.255  Mask:255.255.255.0
          inet6 addr: fe80::92b1:1cff:fe0d:8014/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:584 errors:0 dropped:0 overruns:0 frame:0
          TX packets:458 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:43198 (42.1 KiB)  TX bytes:53755 (52.4 KiB)

em1       Link encap:Ethernet  HWaddr 90:B1:1C:0D:80:14  
          inet6 addr: fe80::92b1:1cff:fe0d:8014/64 Scope:Link
          UP BROADCAST RUNNING PROMISC MULTICAST  MTU:1500  Metric:1
          RX packets:602 errors:0 dropped:0 overruns:0 frame:0
          TX packets:435 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:55634 (54.3 KiB)  TX bytes:52012 (50.7 KiB)
          Interrupt:36 Memory:da000000-da012800


查看生成的桥接网桥 br0
[iyunv@project ~]# brctl  show
bridge namebridge idSTP enabledinterfaces
br08000.90b11c0d8014noem1

4)添加内部网络(NAT)
软件安装好后,会自动生成一个内部网桥配置文件——default,文件路径如下:
[iyunv@project qemu]# ls  /etc/libvirt/qemu/networks/default.xml
添加自定义的内部网桥
复制default.xml文件为natwork.xml,修改里面的内容如下:
[iyunv@project qemu]# cp  default.xml   natwork.xml
[iyunv@project qemu]# cat  /etc/libvirt/qemu/networks/natwork.xml
<network>
  <name>natwork</name>       //网络名称
  <uuid>d4545757-9ceb-435a-860a-5a0ca81015e9</uuid>  //修改唯一标识符
  <bridge name="virbr1" />      //系统中显示的网桥名称,类似于桥接网络的br0
  <mac address='52:54:00:3C:E4:67'/>
  <forward/>
  <ip address="192.168.2.1" netmask="255.255.255.0">     //设置本内部网络的网段
    <dhcp>
      <range start="192.168.2.2" end="192.168.2.254" />   //可DHCP分配的地址
    </dhcp>
  </ip>

5)内部网络的管理——定义、启动、关闭等
[iyunv@project networks]# virsh  net-define  natwork.xml    //根据配置定义网络
Network natwork defined from natwork.xml
[iyunv@project networks]# virsh  net-start  natwork    //启动指定内部网络
Network natwork started
[iyunv@project networks]# virsh  net-list     //查看已定义的内部网络状态
Name                 State      Autostart     Persistent
--------------------------------------------------
default              active     yes           yes
natwork              active     no            yes
[iyunv@project networks]# virsh  net-destroy  default     //关闭指定内部网络
Network natwork destroyed

将内部网络设置为开机自启动
[iyunv@project networks]# virsh  net-autostart  natwork  //设置指定内部网络为开启启动
Network natwork marked as autostarted
[iyunv@project networks]# ls  /etc/libvirt/qemu/networks/autostart/  
default.xml  natwork.xml
//设置开机启动的内部网络,会自动在autostart下生成配置链接

[iyunv@project networks]# virsh  net-list
Name                 State      Autostart     Persistent
--------------------------------------------------
default              active     yes           yes
natwork              active     yes           yes

查看内部网络的网桥
[iyunv@project ~]# brctl   show
bridge name   bridge id         STP enabled    interfaces
br0          8000.66d7c17b4c66   no            em1          //br0 为桥接网络网桥
                                              tap10
                                              tap11
                                              vnet0
                                              vnet1
virbr1     8000.5254002ce366    yes         virbr0-nic  //virbr1为natwork内部网络网桥
                                                vnet2
                                                vnet4      


三、KVM的配置管理
1)创建本地磁盘映像,使用raw格式
[iyunv@project KVM_img]# qemu-img  create  -f  raw  dell_01.img  30G
Formatting 'dell_01.img', fmt=raw size=32212254720

使用qcow2格式时,需要加上预分配元数据参数 preallocation=metadata
[iyunv@project KVM_img]# qemu-img create -f qcow2 -o preallocation=metadata  dell_01.img  30G
Formatting 'dell_01.img', fmt=qcow2 size=32212254720 encryption=off cluster_size=65536 preallocation='metadata'
使用qcow2格式,如果不加预分配元数据参数,使用virt-install安装Guest时,磁盘大小为0。

2)使用virt-install安装Guest系统
通过本地光盘安装——网络为桥接模式
[iyunv@project KVM_img]# virt-install --name=dell_test01 --vcpus=2 --ram=2048 \
--disk path=/data/KVM_img/dell_01.img,size=30  \
--network  bridge=br0,model=virtio \
--os-type=linux  --os-variant=rhel6 \
--cdrom=/data/CentOS-6.3-x86_64-bin-DVD1.iso \
                     --vnc  --vncport=5904  --vnclisten=10.10.100.30


通过本地光盘安装——网络为NAT模式
[iyunv@project KVM_img]# virt-install  --name=dell_test02 --vcpus=2  --ram=2048  --disk path=/data/KVM_img/dell_01.img,format=raw  --os-type=linux --os-variant=rhel6  --network  network=default,mac=52:54:01:79:47:34 --graphics vnc,port=5905,listen=10.10.100.30  --cdrom=/data/CentOS-6.3-x86_64-bin-DVD1.iso

通过网络源安装
[iyunv@project ~]# virt-install  --name=dell_test03 --ram=2048 --vcpus=2 --disk path=/data/KVM_img/dell_01.img,format=raw  --os-type=linux --os-variant=rhel6  --network  network=default,mac=52:54:01:79:47:34 --graphics vnc,port=5905,listen=10.10.100.30  --location=ftp://10.10.100.30/R6


然后使用vnc客户端远程连接,执行Linux安装(linux与windows客户端都可以),在上一篇《VM虚拟机安装管理——qemu-kvm方式》已经演示。

安装参数说明:(安装时根据需要选择参数,有些可不选)
-n    --name    指定Guest名字
-r    --ram    指定内存大小
--vcpus        指定Guest虚拟CPU的个数
-u    --uuid    Guest系统的唯一标识符,可以使用uuidgen命令生成
-p    --paravirt    指定Guest为半虚拟化
--disk        指定Guest的存储磁盘,path=  指定存储位置可以是虚拟映像、lvm分区、物理分区等,format= 指定虚拟映像格式,size=  指定虚拟映像大小,单位为G

-w  --network    网络配置
   --network bridge=br0    指定Guest网络到特定的桥接网桥
   --network network=mynat1    指定Guest网络到特定的nat网桥
   --network network=mynet,model=virtio,mac=00:11...    使用参数指定网卡模式,mac地址等

--os-type=         指定Guest系统的类型,如linux、unix、windows

--os-variant=      指定安装Guest的发行版本,如rhel5、rhel6等

-c  --cdrom        指定Guest的虚拟光驱,可以是ISO镜像文件,或CDROM设备,也可以是一个通过URL可以访问和获取到的boot.iso镜像

-l  --location    指定kernel和initrd安装源,对于半虚拟化是必须的,全虚拟化使用--cdrom或--location
--location    使用nfs:host/path、ftp://host/path、http://host/path的方式指定安装源

-pxe        指定使用PXE boot 协议来引导加载系统

-x  --extra-args用来给加载的kernel和initrd提供额外的内核命令行和参数
如:”ks=http://10.0.0.10/rehel-ks.cfg  ip=xx  netmask=xx gateway=xxx”

--graphics vnc,port=5905,listen=10.10.100.30    指定图形设置,主要为vnc配置,可以用来远程安装与管理虚机,可以配置vnc端口、密码、监听地址等。VNC图形还可以使用“--vnc  --vncport=5904  --vnclisten=10.10.100.30”等独立参数来配置。
                   


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-42981-1-1.html 上篇帖子: kvm虚拟机安装 下篇帖子: Ubuntu 14.10安装libvirt KVM 虚拟机
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表