KVM定制OpenStack云主机

KVM定制OpenStack云主机

  如何定制化OpenStack云主机?从去年10月份刚开始接触OpenStack,到现在也有一年了。虽说目前只是停留在用它,对它的一些组件简单的了解,但谈到制作出一个OpenStack云主机的镜像还真不会。今年年初因为一个比赛需要给云主机安装tomcat、ssh等服务,一头雾水,网上查资料。也有正确的资料,但对于我来说似乎也不管用。记得当时是用libvirt的virsh来实现的。而且云主机用的是网上下载的ubuntu14.04的server版本,而且又看到网上说,OpenStack只能支持server版本的,我把只支持server当理论来记在脑海里,现在想想真是傻的不行。

  前面唠嗑了下,下面我会一步步来讲解如何利用KVM来创建虚拟机(即本文提到的云主机)。本文使用的环境是ubuntu14.04。一些KVM的概念这里就不阐述了,网上资料很多很全。

一、ubuntu14.04中安装tun模块。参考上篇博客,这里不再展开。博客地址

http://www.cnblogs.com/grglym/p/7891253.html

为什么用安装tun模块呢?既然需要对虚拟机进行定制化,即需要安装一些个性化服务,文章开头中有提及的,如tomcat、ssh等等。安装这些就需要网络进行安装,这样更加方便。所以呢,虚拟机需要能够上网呀!在KVM的网络实现中是通过qemu来实现。qemu网络相关的教程很多,可以参考如下链接:

http://www.jianshu.com/p/110b60c14a8b

http://blog.csdn.net/ztsinghua/article/details/49741795

这两个链接把qemu的网络细节说的很清楚。本文选择就是qemu的桥接网络方式来实现KVM虚拟机连接Internet。

二、开启CPU虚拟化服务。(vmware和virtualbox各自的虚拟化服务如何开启可网上查看)

cat /proc/cpuinfo |grep vmx

在宿主机中输入如上指令,在flags一栏中查看是否有“vmx”或者“svm”字眼,如图1所示:

图 1

说明CPU是Inter的,如果是AMD的CPU,应该是“svm”。

我所遇到的错误:

modprobe: ERROR: could not insert ‘kvm_intel‘: Operation not supported

通过在宿主机输入如下指令

dmesg | grep kvm

输出为:

kvm: no hardware support

解决办法:看下是否开启CPU虚拟化,如果你是用VMware或者virtualbox,它们有各自的CPU虚拟化选项,勾上即可。如果是在物理机上,则需要进入bios了。

 三、安装kvm-qemu工具

kvm-qemu这是个什么鬼呢?我们应该知道KVM是在linux内核内,KVM自身功能也非常。。。。不夸它了,反正就是很有用的虚拟化工具。但它也有痛点,即实现不了网卡虚拟化等一些必要功能,所以需要借助qemu来实现。kvm-qemu是kvm在用户态下的一个管理工具吧!接下来源码安装kvm-qemu。

1、源码下载

http://sourceforge.net/projects/kvm/files/

下载个最新版本qemu-kvm-1.2.0.tar.gz

tar -zxvf qemu-kvm-1.2.0.tar.gz
cd qemu-kvm-1.2.0

2、对qemu-kvm打补丁。

因为本文用的环境时ubuntu14.04,所以需要对qemu-kvm-1.2.0中的configure进行简单修改,不然会报错。如图2所示,添加黑框中的代码,分别为:

timer_create(CLOCK_REALTIME, NULL, NULL);
$pthread_lib
libs_qga="-lrt $libs_qga"

图 2

需要修改的代码在2681行左右,可通过vim的命令模式下输入/<time.h>,来快速定位需要修改的代码位置。

3、qemu-kvm编译及安装

./configure --prefix=/usr/local/kvm (注,如果报错,需要查看第2步中代码是否修改正确)
make
make install

四、加载KVM内核模块

modprobe kvm-intel
lsmod | grep kvm

图 3

如果modprobe出错,可查看二的开启CPU虚拟化服务。

五、创建br0网桥

1、安装libvirt

apt-get install libvirt-bin

2、创建br0网桥

virsh iface-bridge eth0 br0brctl show

图 4

图 5

六、KVM创建虚拟机

经过以上五大步骤,终于把准备工作做好了,接下来的才是重头菜。

1、KVM创建虚拟磁盘,磁盘格式为qcow2。kvm的一些指令可以从网上查到,这里不再解释。

/usr/local/kvm/bin/qemu-img create -f qcow2 openstack.img 10G

2、KVM虚拟机开启和关闭的网络脚本配置。

开启脚本 qemu-ifdown.sh:

#!/bin/bash
switch=br0
if [ -n "$1" ]; then
#create a tap interface
#tunctl -u $(whoami) -t $1
#start up the tap interface
ip link set $1 up
sleep 1
#add tap interface to the bridge
brctl addif ${switch} $1
exit 0
else
echo "error: no interface specified"
exit 1
fi

关闭脚本 qemu-ifup.sh :

#!/bin/bash
switch=br0
if [ -n "$1" ]; then
#delete the specified interface
tunctl -d $1
#rlease tap interface from bridge
brctl delif $(switch) $1
#shutdown the tap interface
ip link set $1 down
exit 0
else
echo "error: no interface specified"
exit 1
fi

脚本授权:

chmod +x qemu-ifup.sh
chmod +x qemu-ifdown.sh

3、KVM启动虚拟机安装:

/usr/local/kvm/bin/qemu-system-x86_64 -hda openstack.img -cdrom ubuntu-14.04.5-desktop-amd64.iso -boot d -m 1024 -net nic -net tap,ifname=tap1,script=qemu-ifup.sh,downscript=no

4、安装完成后,下次如需重新进入系统,可用如下命令:

/usr/local/kvm/bin/qemu-system-x86_64 -hda openstack.img -boot d -m 1024 -net nic -net tap,ifname=tap1,script=qemu-ifup.sh,downscript=no

5、KVM虚拟机运行结果展示如图6所示:

图 6

6、KVM虚拟机访问Internet效果展示如图7所示:

图 7

七、总结

利用KVM的整个过程还是有些麻烦,以后会尝试用KVM的管理工具libvirt来实现更加便捷的定制化云主机。网上资料会有很多,可能不同的环境需要参考不同的资料,这个过程需要踩过很多个坑,这里记录下在本文环境中可行的处理步骤。

八、参考链接

http://blog.csdn.net/ztsinghua/article/details/49741795
http://royluo.org/2014/06/15/kvm-install-1/
http://blog.csdn.net/zhaihaifei/article/details/23168621
时间: 2024-10-22 07:10:53

KVM定制OpenStack云主机的相关文章

创建 OpenStack云主机 [六]

创建 OpenStack云主机 [六] openstack 时间:2016年11月28日 创建虚拟网络 创建m1.nano规格的主机(相等于定义虚拟机的硬件配置)生成一个密钥对(openstack的原理是不使用密码连接,而是使用密钥对进行连接) 增加安全组规则(用iptables做的安全组) 启动一个实例(使用命令启动,启动虚拟机有三种方式:1.命令CLI 2.api 3.Dashboard)其实Dashboard也是通过api进行连接块设备存储编排共享文件系统 虚拟网络分为提供者网络和私有网络

OpenStack云主机配置VIP

在OpenStack中默认由于安全组策略限制,云主机只响应自己的iP地址请求,如果需要做HA,可以用以下两种方式实现 1. 增加allow_address_pairs属性 # neutron port-list |grep 10.xxx.51.50 # neutron port-show cff5866e-f288-4614-8778-665795207e0f +-----------------------+-------------------------------------------

openstack云主机 跨项目迁移

1.面板或者后台修改网络类型为共享网络 openstack network set xxxxxxx --share 2.备份数据库 docker exec -it -u root mariadb mysqldump -uroot -pxxxxxxxxxxx nova instances > nova_instances.sql docker exec -it -u root mariadb mysqldump -uroot -pxxxxxxxxxxx nova instance_info_cac

openstack云主机硬盘复制查询

假定客户在自己的电脑上创建文件后 #宿主机查看客户使用的是哪个磁盘 [[email protected] ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert volume-36e2f96e-2aca-4c09-8fff-8a2b98fe304a cinder-ssd -wi-ao---- 2.00g [[email protected] ~]# volume-36e2f96e-2aca-4c09-8

openstack 调用API 实现云主机的IO 控制,CGroup 策略

# vim: tabstop=4 shiftwidth=4 softtabstop=4 # Copyright (c) 2011 X.commerce, a business unit of eBay Inc. # Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Righ

Openstack新建云主机的流程

前言 前天晚上没睡觉,所以昨天睡得很早,导致今天4点就起来了 时间是人最宝贵的财富,于是我打消了钻在被子里刷剧的念头,爬起来整理一下在Openstack中新建一个云主机的流程. Openstack可以让你在登录dashboard之后只需要点一下"创建主机"的按钮,选择相应配置,在几十秒内就可以创建好一台云主机供你使用,这么牛逼的事情是怎么做到的呢? 别着急,听我跟你慢慢道来 新建一个云主机流程总览图 图中流程-1 首先你访问dashboard之后,显示的是一个登录页面,人家horizo

Openstack liberty源码分析 之 云主机的启动过程3

接上篇Openstack liberty源码分析 之 云主机的启动过程2, 简单回顾下:nova-conductor收到nova-scheduler返回的主机列表后,依次发送异步rpc请求给目标主机的nova-compute服务,下面继续来看nova-compute服务的处理过程: nova-compute 根据路由映射,nova-compute中处理云主机启动请求的方法为 nova/compute/manager.py.ComputeManager.py.build_and_run_insta

Openstack之路(八)创建云主机镜像

准备CentOS-7.x镜像,可以从网上直接下载,我这里准备的镜像是CentOS-7.2-x86_64 [[email protected] ~]# ls -l /tmp/CentOS-7-x86_64-DVD-1511.iso -rw-r--r-- 1 root root 4329570304 Jan 7 2016 /tmp/CentOS-7-x86_64-DVD-1511.iso 安装相关软件 [[email protected] ~]# yum -y install qemu-kvm li

openstack迁移云主机总汇 其二(云主机冷迁移)

2冷迁移 冷迁移有两种方式: 一种方式只能在同一个openstack集群中做,另一种可以再相同或者不同的集群中做 在做冷迁移之前记得把要迁移的实例关机 2.1方法1 把主机名为YUN-19上的实例迁移到YUN-20上,两个节点在同一个集群中,其中YUN-19是控制节点 2.1.1在YUN-19上,修改数据库 (修改数据库必须要在控制节点上做) # mysql mysql> use nova; mysql> update instances set host='YUN-20' where hos