深入理解OpenStack-手动制作qcow2镜像
2018-01-18
手动制作镜像
1
|
官方虽提供qcow2系统镜像,但对于有需求的企业来说,还是定制镜像比较靠谱,下面就手动定制一个镜像
|
1 2 3 4 5 6 7 8 9 10 11
|
手动创建镜像需要确保libvirt运行有default网络,这个网络可以给虚拟机提供上网服务。
查看当前是否启用default网络 [root@compute ~]# virsh net-list Name State Autostart Persistent ---------------------------------------------------------- default active yes yes 注:如果没有启用,使用以下命令启用default virsh net-start default
|
1 2 3 4 5 6 7 8 9 10 11 12 13
|
(1)创建一个目录mkdir -p /data 上传iso镜像到/data目录
(2)创建一个10G的磁盘文件给虚拟机使用 qemu-img create -f qcow2 /data/centos.qcow2 10G
(3)安装 virt-install --virt-type kvm --name centos7.4_x86_64 --ram 1024 \ --disk /data/centos.qcow2,format=qcow2 \ --network network=default \ --graphics vnc,listen=0.0.0.0 --noautoconsole \ --os-type=linux \ --location=/data/CentOS-7-x86_64-Minimal-1611.iso
|
- 使用TightVNC Viewer客户端连接虚拟机
1 2 3 4 5 6
|
要想连接虚拟机就需要执行一条命令来查看刚才新建虚拟机的端口信息 [root@compute ~]# netstat -lntup |grep kvm tcp 0 0 0.0.0.0:5900 0.0.0.0:* LISTEN 90011/qemu-kvm tcp 0 0 0.0.0.0:5901 0.0.0.0:* LISTEN 41365/qemu-kvm
可以看到,当前运行有两台虚拟机,我刚刚创建的虚拟机端口是5901。
|
1 2 3 4 5 6
|
运行TightVNC Viewer客户端,Remote Host输入:192.168.56.12:5901 进行连接。连接成功后,就看到操作系统的引导界面了,这时候可以对虚拟机进行系统安装了。也可以根据企业需求进行个性化安装。
安装结束后,点击reboot
注:只有配置了KVM虚拟机,libvirt就会生成一个与操作系统对应的xml文件,其记录了kvm虚拟机的状态。路径如下:/etc/libvirt/qemu/CentOS-6.6-x86_64.xml 注:此文件只能通过“virsh edit”命令修改
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
列出所有虚拟机 [root@compute ~]# virsh list --all Id Name State ---------------------------------------------------- 7 instance-00000003 running 12 centos7.4_x86_64 shut off 启动虚拟机 [root@compute ~]# virsh start centos7.4_x86_64 [root@compute ~]# virsh list --all
当此虚拟机再次启动后,再使用TightVNC Viewer客户端,Remote Host输入:192.168.56.12:5901 进行连接。
此时可以在此系统中编辑已经提前准备并测试好的系统初始化脚本,并让脚本开机后运行,测试无误后将此虚拟机关机。(此步骤是把开机初始化脚本给封装到镜像中)
在这个虚拟机系统中运行shutdown -h now 即可
|
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
|
#!/bin/bash
set_key(){ if [ ! -d /root/.ssh ]; then mkdir -p /root/.ssh chmod 700 /root/.ssh fi # Fetch public key using HTTP ATTEMPTS=30 FAILED=0 while [ ! -f /root/.ssh/authorized_keys ]; do curl -f http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key > /tmp/metadata-key 2>/dev/null if [ "$?" -eq 0 ]; then cat /tmp/metadata-key >> /root/.ssh/authorized_keys chmod 0600 /root/.ssh/authorized_keys restorecon /root/.ssh/authorized_keys rm -f /tmp/metadata-key echo "Successfully retrieved public key from instance metadata" echo "*****************" echo "AUTHORIZED KEYS" echo "*****************" cat /root/.ssh/authorized_keys echo "*****************" else FAILED=`expr $FAILED + 1` if [ $FAILED -ge $ATTEMPTS ];then echo "Failed" break fi sleep 5 fi done }
set_hostname(){ echo "hehe" SET_HOSTNAME=$(curl -s http://169.254.169.254/2009-04-04/meta-data/hostname | awk -F '.' '{print $1}') VM_HOSTNAME="$SET_HOSTNAME".example.com hostnamectl set-hostname $VM_HOSTNAME }
set_static_ip(){ echo "hehe" /bin/cp /tmp/ifcfg-eth0-example /etc/sysconfig/network-scripts/ifcfg-eth0 VM_IPADDR=$(curl -s http://169.254.169.254/2009-04-04/meta-data/local-ipv4) sed -i "s/9.9.9.9/$VM_IPADDR/g" /etc/sysconfig/network-scripts/ifcfg-eth0 }
main(){ set_key; set_hostname; set_static_ip; rm -f /tmp/get_metadata.sh /bin/cp /tmp/rc.local /etc/rc.d/rc.local } main
|
将制作好的/data/centos.qcow2镜像文件上传到Glance
1 2 3 4 5 6 7 8 9 10
|
注:在控制节点进行镜像上传
(1)source变量 source /scripts/admin-openrc
(2)镜像上传 openstack image create "CentOS7.4_x86_64" --file /data/centos.qcow2 \ --disk-format qcow2 --public
(3)openstack dashboard中创建虚拟机,并验证脚本执行情况
|
附录:virsh命令-使用
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
|
virsh --help
virt-clone -o centos7_mini -n centos7_mini15 --auto-clone #克隆mini,新克隆的为mini15 -o #原始机名字,必须为关闭或暂停状态 -n #新客户机的名称 --auto-clone #从原始客户机配置中自动生成克隆名称和存储路径 --replace #不检查命名冲突,覆盖任何使用相同名称的客户机 -f #可以指定克隆后的主机镜像放在指定目录下
virsh autostart xxx #让子机随宿主机开机自动启动 virsh autostart --disable xxx #解除自动启动
virt-install #建立kvm虚拟机 virsh list #查看正在运行的KVM虚拟机 virsh list --all #查看所有KVM虚拟机 virsh start name #启动KVM虚拟机 virsh shutdown name #正常关闭KVM虚拟机 virsh destroy name #强制关闭KVM虚拟机(类似于直接断电) virsh suspend name #挂起KVM虚拟机 virsh resume name #恢复挂起的KVM虚拟机 virsh dumpxml name #查看KVM虚拟机配置文件,可以把输出的内容定义到xml里,用来克隆迁移用。 virsh edit name #编辑KVM虚拟机的xml配置文件 virsh define /etc/libvirt/qemu/name.xml #定义注册虚拟机,需要先查看xml文件对应的镜像,img等路径是否存在或修改指定路径 virsh undefine name #彻底删除KVM虚拟机,不可逆,如果想找回来,需要备份/etc/libvirt/qemu的xml文件
|
注:gentoo使用livecd安装的过程中,关于安装文件如何上传到livecd的问题,解决方案如下:
1
|
kvm安装安装启动livecd,然后通过桥接联网将文件上传,再执行脚本安装和初始化。最后将qcow2文件上传到glance。最后通过openstack dashboard来使用qcow2镜像安装gentoo
|
- OpenStack Nova 制作 Windows 镜像
OpenStack Nova 制作 Windows 镜像 windows虚拟机ubuntuimage防火墙云计算 本贴转自http://www.vpsee.com 上次 VPSee 给 OpenS ...
- 手动制作Docker镜像
手动制作 Docker 镜像 前言 a. 本文主要为 Docker的视频教程 笔记. b. 环境为 CentOS 7.0 云服务器(用来用去感觉 Windows 的 Docker 出各种问题,比如使用 ...
- OpenStack手动制作CentOS 7 KVM镜像
在前面讲解KVM的时候,我们已经学习了如何制作KVM镜像,那么制作OpenStack使用的镜像和KVM是有一些区别的. 1. 下载CentOS 7官方ISO安装镜像这里使用国内阿里云的镜像源进行 ...
- centos7下手动制作trove镜像
获取镜像 [root@bldattet1 ~]# wget http://mirrors.aliyun.com/centos/7.5.1804/isos/x86_64/CentOS-7-x86_64 ...
- 使用ISO文件制作openstack使用的coreOS镜像
OpenStack源码交流群: 538850354 本篇文章是使用coreOS ISO文件手动制作openstack使用的qcow2镜像文件,关于coreOS的介绍,可以看这里 使用服务器:cento ...
- [图文] Fedora 28 使用 Virt-Manager 制作并优化QCOW2镜像——Windows 10 1709
实验说明: 云计算的发展使得桌面上云,windows 10就必不可少,这一章就如何制作QCOW2镜像文件并优化进行说明. 实验环境: 宿主机系统 :Fedora 28 WorkStation 虚拟 ...
- Dockerfile 自动制作 Docker 镜像(一)—— 基本命令
Dockerfile 自动制作 Docker 镜像(一)-- 基本命令 前言 a. 本文主要为 Docker的视频教程 笔记. b. 环境为 CentOS 7.0 云服务器 c. 上一篇:手动制作Do ...
- #openstack centos6 centos7 kvm镜像制作
#openstack centos6 centos7 kvm 镜像制作 openstack windows 2008镜像 制作 http://www.cnblogs.com/elvi/p/800129 ...
- 制作openstack使用的Ubuntu镜像
一.环境准备 OS:Ubuntu-14.04 制作镜像版本:Ubuntu-14.04.4-server-amd64.iso 查看是否支持虚拟化(有输出代表支持,否则在BIOS页面中设置即可): egr ...
随机推荐
- 敏捷史话(十三):我被 Facebook 解雇了——Kent Beck
2011年,Kent Beck 加入了 Facebook .那时候的他已年过半百,几十年的经验让他自认为非常了解软件行业.在 Facebook 的新手训练营期间,Kent 开始意识到,Facebook ...
- thinkphp添加excel更新数据表数据(优化篇)
由于主管说使用saveAll更新数据效率太低,要改用sql语句一次执行现在修改 /** * excel开启上传 * author: panzhide * @return array * Date: 2 ...
- ubuntu16.04 下同时打开多个终端窗口
reference :https://forums.solydxk.com/viewtopic.php?t=5139 reference : http://blog.51cto.com/huqilon ...
- Crackme_003
功能: 拿到文件,先执行一下.功能如下: 1.nag窗口 会先出现如下nag窗口,持续几秒 2.注册窗口: 出现错误会提示:You Get Wrong Try Again 破解: 1.查壳: 无壳, ...
- 【笔记】《Redis设计与实现》chapter22 二进制位数组 chapter23 慢查询日志 chapter24 监视器
chapter22 二进制位数组 22.4 BITCOUNT命令的实现 遍历算法 查表算法 variable-precision SWAP算法 chapter23 慢查询日志 Redis的慢查询日志功 ...
- 【pytest官方文档】解读Skipping test functions,跳过测试用例详解
有时候,为了满足某些场景的需要,我们知道有些测试函数在这时候肯定不能执行,或者执行了也会失败.那么我们 可以选择去跳过这个测试函数,这样也就不会影响整体的测试函数运行效果,不至于在你运行的众多绿色通过 ...
- 2. Mybatis Select
mybatis select是mybatis 中最常用的元素之一. 对简单的查询,select 元素的配置是相当简单的: <?xml version="1.0" encodi ...
- 数据结构(5):Java实现二叉树
二叉树图: package com.test.Sort; import java.util.ArrayList; import java.util.LinkedList; public class B ...
- Centos7 安装RabbitMQ及配置(亲测)
Rabbit MQ Linux 安装 Centos7 如果是重装先把erlang和rabbitmq卸载干净,不然还会重装失败<rabbitmq和erlang卸载> 记得删除/var/lib ...
- 路由器逆向分析------QEMU的下载和安装(Linux平台)
本文博客地址:http://blog.csdn.net/qq1084283172/article/details/68953160 一.QEMU源码的下载和编译 QEMU源码的github下载地址:h ...