深入理解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 ...
随机推荐
- TreeMap和HashMap的元素比较
写在前面的话 2021.04,准备面试和CCF CSP认证的我准备做一套CCF模拟题,然后就有了此篇博客(x 题目:201912-2 回收站报数 题目截图: 第一个想法:读取每个垃圾的位置,存入Tre ...
- 【C++】 C++知识点总结
作者:李春港 出处:https://www.cnblogs.com/lcgbk/p/14643010.html 目录 前言 一.C++常用后缀 二.头文件 1.C++输入输出 2.在C++中使用C的库 ...
- [Fundamental of Power Electronics]-PART I-2.稳态变换器原理分析-2.2 伏秒平衡/安秒平衡 小纹波近似
2.2 电感伏秒平衡.电容充放电平衡以及小纹波近似 让我们更加仔细地观察图2.6中的buck变换器的电感和电容的波形.我们是不可能设计一个滤波器能够只允许直流分量通过而完全滤除开关频率次谐波的.所以, ...
- 用RUST写流媒体服务器实战——rtmp chunk 深入解析
用RUST写流媒体服务器实战--rtmp chunk 深入解析 最近几个月断更了,把精力放在了新的开源项目上,一个用rust写的流媒体服务xiu. 实现过程中踩了不少坑,今天说下rtmp中的chunk ...
- 01-MySQL Linux安装
一.检查当前系统是否安装过mysql rpm -qa|grep mysql 或 ps -ef|grep mysql 二.安装mysql服务端 rpm -ivh MySQL-server-5.5.48- ...
- Dynamics CRM调用选择用户弹窗
在开发Dynamics CRM的部分场景时我们会遇到一些需要去锁定用户的操作,所以就需要使用Javascript把用户的弹窗弹出来.具体做法如下 我们需要拼接一个弹出选择记录框的url Url格式:C ...
- python学习 -- operator.itemgetter(), list.sort/sorted 以及lambda函数
Python 中有非常方便高效的排序函数,下面主要介绍如何sort/sorted对list,dict进行排序. 1. 用list.sort /sorted 对list of tuples中第二个值进行 ...
- ASP.NET Core扩展库之Http通用扩展
本文将介绍Xfrogcn.AspNetCore.Extensions扩展库对于Http相关的其他功能扩展,这些功能旨在处理一些常见需求, 包括请求缓冲.请求头传递.请求头日志范围.针对HttpClie ...
- 001 - 使用鸿蒙WebView创建简单浏览器 step 1
打开官网,找到WebView的文档(模拟器不支持) 鸿蒙webview的开发指南(原始链接,方便大家识别并点击):https://developer.harmonyos.com/cn/docs/doc ...
- 这一次,彻底搞懂 Go Cond
hi,大家好,我是 haohongfan. 本篇文章会从源码角度去深入剖析下 sync.Cond.Go 日常开发中 sync.Cond 可能是我们用的较少的控制并发的手段,因为大部分场景下都被 Cha ...