Contents
  1. 1. 制作Openstack的Linux镜像的基础知识
    1. 1.1. 镜像的磁盘容器格式
    2. 1.2. 虚拟化以及镜像的工具
    3. 1.3. CPU虚拟化技术
    4. 1.4. openstack的Linux镜像要求
  2. 2. 制作镜像
    1. 2.1. 官网下载Centos6的ISO文件
    2. 2.2. 安装虚拟化工具和配置网络
      1. 2.2.1. 安装
      2. 2.2.2. 配置网络
    3. 2.3. 创建虚拟主机
      1. 2.3.1. 创建qcow2镜像文件
      2. 2.3.2. 创建虚拟机
    4. 2.4. 通过vnc界面安装centos
      1. 2.4.1. 用VNC客户端安装Centos系统
      2. 2.4.2. 操作系统的一些配置
    5. 2.5. 安装cloud-init和配置
    6. 2.6. 创建快照和恢复
    7. 2.7. 发布镜像
      1. 2.7.1. 清理镜像
      2. 2.7.2. 打包镜像
  3. 3. 在openstack上传镜像

制作Openstack的Linux镜像的基础知识

镜像的磁盘容器格式

  • RAW:原始的格式,一个纯二进制镜像光盘映像,非常便携,一个字:裸。由于原生的裸格式,不支持快照
  • QCOW2:qcow2(QEMU copy-on-write version 2)是KVN虚拟化常用的格式,附带有多种功能,例如大小经过压缩、支持快照、性能上接近raw、支持zlib的磁盘压缩、支持AES的加密等
  • AMI:Amazon Machine Image
  • AKI:Amazon Kernel Image
  • ARI:Amazon Ramdisk Image
  • AMDK:VMware’s ESXi用的格式
  • VDI:Oracle VirtualBox用的格式
  • VHD:微软的虚拟硬盘文件(Microsoft Hyper-V)
  • VHDX也是微软的虚拟硬盘文件(Microsoft Hyper-V),但支持Microsoft Server 2012,附加一些防止数据损坏的特性

虚拟化以及镜像的工具

  • qemu-kvm:vm负责cpu虚拟化+内存虚拟化;qemu是模拟IO设备(网卡,磁盘)。kvm加上qemu之后就能实现真正意义上服务器虚拟化。
  • virt-manager:virt-manager 是基于 libvirt 的图像化虚拟机管理软件。
  • libvirt:免费、开源的支持Linux下主流虚拟化工具的C函数库,为各种虚拟化工具提供一套方便、可靠的编程接口

CPU虚拟化技术

  • CPU需要支持虚拟化技术
  • 需要在BIOS开启虚拟化特性

openstack的Linux镜像要求

  • 支持磁盘分区和调整引导根分区,使用cloud-init实现
  • 清除MAC地址信息
  • 开启SSH服务
  • 禁用防火墙
  • 支持注入公匙来访问SSH,使用cloud-init实现
  • 支持处理用户的数据和其他元数据,使用cloud-init实现

制作镜像

官网下载Centos6的ISO文件

直接在官网上下载Centos6.6

mkdir /var/openstack-image
cd /var/openstack-image
wget http://mirrors.163.com/centos/6.6/isos/x86_64/CentOS-6.6-x86_64-minimal.iso

安装虚拟化工具和配置网络

安装

通过yum来安装:

yum groupinstall Virtualization
yum groupinstall "Virtualization Client"
yum install libvirt
yum install libguestfs-tools

启动服务

service libvirtd restart

配置网络

配置虚拟环境的网络,这个链接描述得很清晰:
http://www.chenyudong.com/archives/libvirt-kvm-bridge-network.html

创建虚拟主机

创建qcow2镜像文件

qemu-img create -f qcow2  CentOS-6.6-x86_64.qcow2 10G
chown  -R qemu:qemu *

创建虚拟机

virt-install -n CentOS-6.6-x86_64 -r 2048 --cpu host -c CentOS-6.6-x86_64-minimal.iso --disk path=CentOS-6.6-x86_64.qcow2,device=disk,bus=virtio,size=10,format=qcow2 -w bridge:br0  --os-type=linux --os-variant=rhel6 --vnc --vnclisten=0.0.0.0 -v

通过vnc界面安装centos

用VNC客户端安装Centos系统

查看虚拟机的vnc链接信息

Virsh vncdisplay CentOS-6.6-x86_64

然后用vncview客户端链接上(vncview下载地址:http://www.realvnc.com/download/viewer/

看到这个界面就熟悉了,基本和平时安装系统一样进行下去,但有以下几点的要求:
网络的配置:

启用IPv4的DHCP

存储设备:
在选择存储设备的类型时,选择基本存储设备(Basic Storage Devices.)。

磁盘分区:
如果不了解这块,选择默认分区方。

完成操作系统的安装:

完成系统安装需要重启虚拟机。重启前卸载CD-ROM:

virsh attach-disk --type cdrom --mode readonly CentOS-6.6-x86_64 "" hdc

使用上面virsh命令可以弹出光驱

操作系统的一些配置

完成centos系统的安装后,用SSH客户端(例如PuTTY)链接上虚拟机,修改操作系统的一些配置的

修改网络配置

Disable the zeroconf route:

echo "NOZEROCONF=yes" >> /etc/sysconfig/network

安装ACPI服务

yum install -y acpid
chkconfig acpid on

这样可以通过web界面控制虚拟化程序来重启或者关闭虚拟机实例

Configure console
nova console命令读取到centos的log,需要在/boot/grub/menu.lst文件下增加以下的内容:

serial --unit=0 --speed=115200
terminal --timeout=10 console serial
# Edit the kernel line to add the console entries
kernel ... console=tty0 console=ttyS0,115200n8

升级

yum upgrade

升级下操作系统

禁用selinux

修改/etc/selinux/config文件,将SELINUX=enforcing改为SELINUX=disabled

关闭防火墙

chkconfig iptables off
chkconfig ip6tables off

编辑/etc/rc.local

/etc/rc.local文件增加以下内容:

if [ ! -d /root/.ssh ] ; then
  mkdir -p /root/.ssh
  chmod 0700 /root/.ssh
  restorecon /root/.ssh
fi

最重要的配置,Attention

这个配置很重要,提升自己的知名度,修改/etc/motd,增加以下内容:

Welcome to XunyunEdu Elastic Compute Server
The CentOS Image Author:Jacken(chenjacken@gmail.com)
Pls Visit The Website:http://www.jacken.me

安装cloud-init和配置

直接用yum进行安装

yum install -y  http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
yum install -y cloud-utils cloud-init

cloud-init的配置文件在/etc/cloud/cloud.cfg,编辑里面配置,定制自己所需要的功能。我的配置信息是:

cloud.cfg
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
disable_root: 0
ssh_pwauth: 0

locale_configfile: /etc/sysconfig/i18n
mount_default_fields: [~, ~, 'auto', 'defaults,nofail', '0', '2']
resize_rootfs: 1
resize_rootfs_tmp: /dev
ssh_deletekeys: 0
ssh_genkeytypes: ~
syslog_fix_perms: ~

datasource_list: ['ConfigDrive','Ec2','NoCloud']
datasource:
Ec2:
timeout: 5
max_wait: 10

chpasswd:
list: |
root:RANDOM
expire: False

growpart:
mode: auto
devices: ['/']

cloud_init_modules:
- migrator
- bootcmd
- write-files
- growpart
- resizefs
- set_hostname
- update_hostname
- update_etc_hosts
- rsyslog
- users-groups
- ssh
- resolv-conf

cloud_config_modules:
- mounts
- locale
- set-passwords
- timezone
- mcollective
- disable-ec2-metadata
- runcmd

cloud_final_modules:
- rightscale_userdata
- scripts-per-once
- scripts-per-boot
- scripts-per-instance
- scripts-user
- ssh-authkey-fingerprints
- keys-to-console
- phone-home
- final-message

system_info:
distro: rhel
default_user:
name: centos
paths:
cloud_dir: /var/lib/cloud
templates_dir: /etc/cloud/templates
ssh_svcname: sshd

# vim:syntax=yaml

cloud.cfg

其中几点说明下:

1,允许root登录和禁止password验证

disable_root: 0
ssh_pwauth:   0

2,以下配置是让虚拟机根据openstackFlavors自动resize根文件系统大小

resize_rootfs: 1
resize_rootfs_tmp: /dev

growpart:
  mode: auto
  devices: ['/']

但是遇到一个问题,虚拟机实例创建完,需要重启一次系统才能调整根文件系统的大小,请高手指点

3,数据源的获取方式

datasource_list: ['ConfigDrive','Ec2','NoCloud']

我配置了ConfigDrive为先。这个需要修改openstack的nova的配置文件,开启Config Drive
简单说明下,在所有计算节点,修改nova.conf配置,增加或修改以下内容:

force_config_drive=True
config_drive_format=iso9660

创建快照和恢复

镜像创建快照,目的是可以让镜像创建多种环境版本,例如这个快照是集成LAMP,那个快照安装了Mysql等。恢复到指定的快照,可以修复完成发现的问题或创建另一种环境的快照,再发布打包成镜像。

创建快照

virsh snapshot-create-as  --domain CentOS-6.6-x86_64 --name "cloud-init" --description "cloud-init had installed and configured"

查看已有的快照

virsh snapshot-list CentOS-6.6-x86_64

恢复到指定的快照

virsh snapshot-revert --domain  CentOS-6.6-x86_64 --snapshotname cloud-init

删除指定的快照

virsh snapshot-delete --domain CentOS-6.6-x86_64 --snapshotname cloud-init

发布镜像

清理镜像

把镜像系统关机:

shutdown -h now 

删除硬件信息

virt-sysprep -d CentOS-6.6-x86_64

打包镜像

压缩镜像文件

virt-sparsify  --tmp ./ --compress CentOS-6.6-x86_64.qcow2  CentOS-6.6-x86_64-Cloud.qcow2

在openstack上传镜像

选择刚才创建的镜像文件CentOS-6.6-x86_64-Cloud.qcow2上传

当然你可以用命令glance add创建镜像,这部分略!

Contents
  1. 1. 制作Openstack的Linux镜像的基础知识
    1. 1.1. 镜像的磁盘容器格式
    2. 1.2. 虚拟化以及镜像的工具
    3. 1.3. CPU虚拟化技术
    4. 1.4. openstack的Linux镜像要求
  2. 2. 制作镜像
    1. 2.1. 官网下载Centos6的ISO文件
    2. 2.2. 安装虚拟化工具和配置网络
      1. 2.2.1. 安装
      2. 2.2.2. 配置网络
    3. 2.3. 创建虚拟主机
      1. 2.3.1. 创建qcow2镜像文件
      2. 2.3.2. 创建虚拟机
    4. 2.4. 通过vnc界面安装centos
      1. 2.4.1. 用VNC客户端安装Centos系统
      2. 2.4.2. 操作系统的一些配置
    5. 2.5. 安装cloud-init和配置
    6. 2.6. 创建快照和恢复
    7. 2.7. 发布镜像
      1. 2.7.1. 清理镜像
      2. 2.7.2. 打包镜像
  3. 3. 在openstack上传镜像