zoukankan      html  css  js  c++  java
  • 2017-7-8 OpenStack手工+oz自动制作CentOS 7.3镜像

    1、安装kvm基础软件包
    [root@kvm ~]# modprobe kvm
    [root@kvm ~]# egrep "(vmx|svm)" /proc/cpuinfo ##保证服务器或VMWARE支持硬件虚拟化!
    [root@kvm ~]# yum install qemu-kvm qemu-img –y
    [root@kvm ~]# ln -s /usr/libexec/qemu-kvm /usr/lib/qemu-kvm //如果不做这步,无法直接使用其命令
    在windows客户端安装vnc viewer软件,避免安装图形化Linux服务器会更好点。http://www.33lc.com/soft/40006.html
    ///////////////////////////
    [root@kvm ~]# yum install tigervnc vnc* -y //如果上一步做了,接下来的3步都不需要做,这步骤耗时太多
    [root@kvm ~]# yum install xorg* gnome* glx* -y //非常耗时,但是它的确能从字符界面转换为图形界面
    [root@kvm ~]# reboot
    [root@kvm ~]# startx
    ///////////////////////////

    2、制作镜像,安装系统
    [root@kvm ~]# df -Th ##确保自己有足够的磁盘空间,否则可能徒劳无功
    [root@kvm ~]# mkdir openstack_image && cd openstack_image
    下载centos7镜像,改名为centos7.iso
    [root@kvm ~]# wget http://mirrors.aliyun.com/centos/7.3.1611/isos/x86_64/CentOS-7-x86_64-Minimal-1611.iso
    [root@kvm ~]# qemu-img create -f qcow2 centos7.qcow2 15G
    [root@kvm ~]# /usr/libexec/qemu-kvm -m 1024 -cdrom centos7.iso -drive file=centos7.qcow2 -boot menu=on --nographic -vnc :3

    PC的vncviewer客户端填入【10.20.0.201:3】,此IP地址是KVM机器的IP,而不是新创建的虚拟机的IP
    【注意】:安装centos 7系统:不需要swap分区,也不需要boot分区,全部磁盘空间分配给根分区,采用XFS格式,而不用LVM

    3、后续配置。
    参考文档:http://blog.csdn.net/xiegh2014/article/details/53248403
    [root@kvm ~]# yum install virt-install -y //使用virsh命令管理虚拟机非常方便
    [root@kvm ~]# virsh list
    (1)安装ACPI服务,能让宿主机对虚拟机进行开关机等电源管理操作
    [root@kvm ~]# yum install acpid
    (2)安装linux rootfs resize,使得实例启动时可以自动扩展根分区
    [root@kvm ~]# yum install git parted cloud-utils -y
    [root@kvm ~]# git clone https://github.com/flegmatik/linux-rootfs-resize.git
    [root@kvm ~]# cd linux-rootfs-resize
    [root@kvm ~]# ./install
    (3)安装cloud-init,给虚拟机注入密钥登录、主机名、用户名
    [root@kvm ~]# yum install cloud-init -y
    [root@kvm ~]# vim /etc/cloud/cloud.cfg
    在cloud_init_modules 下面增加:
    - resolv-conf
    (4)再次运行系统,观察现象
    [root@kvm ~]# /usr/libexec/qemu-kvm -m 1024 -cdrom centos7.iso -drive file=centos7.qcow2 -boot menu=on --nographic -vnc :3

    4、上传镜像到控制节点的glance组件中
    [root@kvm ~]# source admin-openrc.sh
    [root@kvm ~]# openstack image create "centos7" --file centos7.qcow2 --disk-format qcow2 --container-format bare --public
    [root@kvm ~]# openstack image list

    +++++++++++++++++++++++
    报错:
    1、qemu连上后,进入引导菜单后无反应。
    未解决:猜测我使用VMWARE性能太差,最好使用一台任意物理机器,生成好centos7.qcow2,再rsync到控制节点上。
    +++++++++++++++++++++++++


                     =========================oz自动制作Linux操作系统镜像======================

    自动制作镜像,速度非常慢,如上文所述,centos 7的iso镜像已经被下载到/root/openstack_image/
    1、软件包安装
    [root@kvm ~]# yum install epel-release -y
    [root@kvm ~]# yum install oz libguestfs-tools -y
    安装完后应该多出一个虚拟的网络接口virbr0
    [root@kvm ~]# ip a
    4: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN
    link/ether 52:54:00:58:d1:22 brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
    valid_lft forever preferred_lft forever
    5: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN qlen 500
    link/ether 52:54:00:58:d1:22 brd ff:ff:ff:ff:ff:ff

    [root@kvm ~]# vim /etc/oz/oz.cfg ##oz默认支持raw格式,指明为qcow2
    #image_type = raw
    image_type = qcow2

    [root@kvm ~]# cd openstack_image
    [root@kvm ~]# vim centos7-3.tdl
    <template>
    <name>centos_73_x86_64</name>
    <description>CentOS 7.3 x86_64 template</description>
    <os>
    <name>CentOS-7</name>
    <version>7</version>
    <arch>x86_64</arch>
    <install type='iso'>
    <iso>file:///root/openstack_image/centos7.iso</iso>
    </install>
    </os>
    <commands>
    <command name='console'>
    sed -i 's/ rhgb//g' /boot/grub/grub.conf ##centos7默认没有/boot/grub/grub.conf
    sed -i 's/ quiet//g' /boot/grub/grub.conf
    sed -i 's/ console=tty0 / serial=tty0 console=ttyS0,115200n8 /g' /boot/grub/grub.conf
    </command>
    </commands>
    <disk>
    <size>10</size>
    </disk>
    </template>

    2、编辑ks文件,类似于PXE
    [root@kvm ~]# vim centos7-3.ks
    install
    text
    key --skip
    keyboard us
    lang en_US.UTF-8
    skipx
    network --device eth0 --bootproto dhcp
    rootpw openstack
    firewall --disabled
    authconfig --enableshadow --enablemd5
    selinux --disabled
    timezone --utc Asia/Shanghai
    bootloader --location=mbr --append="console=tty0 console=ttyS0,115200"
    zerombr yes
    clearpart --all
    part / --fstype xfs --size=10240 --grow
    %post
    reboot

    %packages --nobase --excludedocs
    wget
    vim
    cloud-init
    cloud-utils
    dracut-modules-growroot
    %end
    -----------------------------------------

    3、制作镜像
    [root@kvm openstack_image]# pwd
    /root/openstack_image
    [root@kvm openstack_image] systemctl start libvirtd
    [root@kvm openstack_image]# oz-install -p -u -d3 -a centos7-3.ks centos7-3.tdl
    +++++++++++++++++++++++++++
    报错:
    1、[root@kvm openstack_image]# oz-install -p -u -d3 -a centos7-3.ks centos7-3.tdl
    lxml.etree.XMLSyntaxError: AttValue: " or ' expected, line 9, column 20
    解决:报出语法错误,XML文件,是type后面的iso要加单引号才行,之前没加

    2、[root@kvm openstack_image]# oz-install -p -u -d3 -a centos7-3.ks centos7-3.tdl
    oz.OzException.OzException: No disk activity in 300 seconds, failing.
    未解决:查阅资料发现,这是个普遍错误,停留在选择网卡的选项上,于是我删掉ks文件的--device eth0,结果依旧不行。

    +++++++++++++++++++++++++++++++
    镜像创建完后,会保存在 /var/lib/libvirt/images,压缩镜像,比例为4:1。
    [root@kvm ]# qemu-img convert -c /var/lib/libvirt/images/centos_73_x86_64.qcow2 -O qcow2 /root/openstack_image/centos7-3.qcow2
    [root@kvm ]# qemu-img info centos7-3.qcow2

    4、上传镜像到控制节点的glance组件中
    [root@kvm ~]# source admin-openrc.sh
    [root@kvm ~]# openstack image create "centos7" --file /root/openstack_image/centos7-3.qcow2 --disk-format qcow2 --container-format bare --public
    [root@kvm ~]# openstack image list

    拓展:linux与linux之间互传大文件,均要安装rsync,yum install rsync
    [root@kvm openstack_image]# rsync -avz --progress /root/openstack_image/centos7.iso root@10.20.0.3:/root/test

  • 相关阅读:
    杭电1029--Ignatius and the Princess IV(哈希)
    杭电1465--不容易系列之一
    杭电1021--Fibonacci Again
    杭电5018--Revenge of Fibonacci
    UVa10651(记忆化搜索)
    <Win32_5>深入浅出Win32的计时器
    偷个空,写个博客——各种沟通各种纠结
    Arbitrage HDU
    常用的字符串处理方法
    无法捕获的异常:MissingMethodException
  • 原文地址:https://www.cnblogs.com/yue-hong/p/7159932.html
Copyright © 2011-2022 走看看