镜像 格式

一类是 物理机镜像格式。 ISO BIN IMAGE等。使用此类镜像创建虚拟机,需从头安装该操作系统。
一类是 虚拟机镜像格式。 raw qcow2 vmdk等。已经安装好了系统并进行了基础设置,可看做一个模板。

OpenStack 上传到glance的镜像既可以是ISO等格式的物理机镜像 也可以是qcow2等格式的虚拟机镜像。

ISO
Raw
Machine (kernel/ramdisk outside of image, a.k.a. AMI)
VHD (Hyper-V)
VDI (VirtualBox)
qcow2 (Qemu/KVM)
VMDK (VMWare)
OVF (VMWare, others)

容器格式

容器container格式是指虚拟机映像是否包含一个文件格式,该文件格式还包含有关实际虚拟机的元数据。
需要注意的是:容器格式字符串在当前并不会被glance或其他OpenStack组件的使用,所以如果你不确定,简单的将容器格式指定bare是安全的。

OpenStack上传镜像

可以通过dashboard上传,也可以使用命令上传。镜像名称可重复,根据ID查找镜像。
如上传WindowsServer2008 的镜像(ISO和qcow2两种格式),不同格式的镜像上传时应选择对应的格式。

一、dashboard 上传

登录进OpenStack的dashboard

http://IP/dashaboard

项目->计算->镜像->创建镜像

1.ISO格式

镜像名      WindowsServer2008R2
镜像描述    WindowsServer2008 ISO
镜像格式    ISO
容器      无

2.qcow2 格式

镜像名      WindowsServer2008R2
镜像描述    WindowsServer2008 qcow2
镜像格式    qcow2
容器      无


两个镜像名称相同 但镜像格式不同 ID不同

二、通过glance命令上传

glance 命令 可以使用以下参数:

--id <IMAGE_ID>                   #镜像的ID
--name <NAME>                    #镜像的名称
--store <STORE>                   #储存的镜像上传到
--disk-format <DISK_FORMAT>               #镜像的格式。可以接受的格式包含: ami,ari, aki, vhd, vmdk, raw, qcow2, vdi, and iso.
--container-format <CONTAINER_FORMAT>          #镜像容器的格式。可以接受的格式包含:ami,ari, aki, bare, and ovf.
--owner <TENANT_ID>                # 拥有该镜像的租户
--size <SIZE>                     #镜像的大小(以bytes表示). 一般只与'--location'和'--copy_from'一起使用。
--min-disk <DISK_GB>                 #启动镜像所需的最小硬盘空间(用gigabytes表示).
--min-ram <DISK_RAM>                 #启动镜像所需的最小内存数量(用megabytes表示).
--location <IMAGE_URL>                #镜像所在位置的URL。例如,如果镜像储存在swift中,
--file <FILE>                        #在创建过程中将要被上传的本地文件(包括硬盘镜像)。另外,镜像也可以通过stdin传递给客户端。
--checksum <CHECKSUM>             #被Glance使用的可用于认证的镜像数据的哈希值,在此请提供一个md5校验值。
--copy-from <IMAGE_URL>                #用法和'--location'参数相似,但表明Glance服务器应该能立即从镜像所储存的地方拷贝数据并储存。
--is-public [True|False]                 #表示镜像是否能被公众访问。
--is-protected [True|False]              #用于避免镜像被删除。
--property <key=value>               #与镜像有关的任意的属性。可以使用很多次。
--human-readable                     #用对人友好的格式打印镜像的尺寸。
--progress                       #显示上传的进度条

ps:这些参数不是100%都需要的我们在上传镜像更加我们需求选择相对应的参数就好了

加载认证

source keystonerc_admin

查看镜像列表。通过dashboard上传的两个镜像文件

[root@ALLInOne ~(keystone_admin)]# glance image-list
+--------------------------------------+---------------------+
| ID                                   | Name                |
+--------------------------------------+---------------------+
| f57ac322-1d52-41d8-93dd-7b7ca33bc2f7 | cirros              |
| 478a47b0-9f40-48d3-acf4-473b465bd077 | WindowsServer2008R2 |
| 387db85f-2271-4f95-80b5-9795bc211692 | WindowsServer2008R2 |
+--------------------------------------+---------------------+

确保本地有镜像文件。

[root@ALLInOne ~(keystone_admin)]# ls -lh /image/
total 11G
-rw-r--r-- 1 root root 3.2G Dec 28 16:51 WindowsServer2008R2.iso
-rw-r--r-- 1 root root 7.1G Dec 28 17:00 WindowsServer2008R2Model.qcow2
[root@ALLInOne ~(keystone_admin)]#

1.ISO格式

glance image-create --name "win2k8-iso" --file /image/WindowsServer2008R2.iso --disk-format iso --container-format bare --visibility public --progress

等待上传完毕

2.qcow2 格式

glance image-create --name "win2k8-qcow2" --file /image/WindowsServer2008R2Model.qcow2 --disk-format qcow2 --container-format bare --visibility public --progress

3.其它格式镜像同理,只需设置disk_format

三、如果OpenStack通过kolla-ansible安装。

1.部署完成 生成 openrc 认证文件。

kolla-ansible post-deploy

认证文件应该会生成在 /etc/kolla 目录下

/etc/kolla/admin-openrc.sh

2.安装OpenStack命令行工具

先安装版本不匹配的组件

pip install -I ipaddress

安装命令行工具

pip install python-openstackclient

3.执行openstack相关命令可能报错 ImportError: No module named queue

openstack -h

找到对应错误文件 将

import queue

修改为

from multiprocessing import Queue as queue

4.使用openstack命令行工具上传镜像

查看使用帮助

openstack image create -h

参数

  --file <file>         Upload image from local file待上传镜像的本地路径--disk-format <disk-format>    镜像格式Image disk format. The supported options are: ami,ari, aki, vhd, vmdk, raw, qcow2, vhdx, vdi, iso,类型--public              Image is accessible to the public--private             Image is inaccessible to the public (default)--community           Image is accessible to the community--shared              Image can be shared

加载认证

source /etc/kolla/admin-openrc.sh

上传镜像

openstack image create win2k8-qcow2 --disk-format qcow2 --file /image/WindowsServer2008R2Model.qcow2 --public

制作qcow2 格式的镜像。

qcow2 格式的镜像获取可以直接网络下载相应系统镜像(但基本没有官方的,下载地址),也可以自己制作。

使用qemu通过ISO镜像创建虚拟机,创建qcow2格式磁盘安装虚拟机系统。安装完成该qcow2格式磁盘就是一个镜像

CentOS7下安装设置。内存4G CPU4

安装qemu + kvm 环境

1.安装kvm核心包——虚拟操作系统模拟器加速模块

yum -y install qemu-kvm qemu-kvm-tools

2.安装kvm管理工具

yum -y install libvirt libvirt-python libguestfs-tools

3.安装镜像安装程序virt-install

yum install -y virt-install

4.安装vncserver。使用vnc viewer连接完成虚拟机的图形化安装。

yum -y install tigervnc-server

虽然是一个服务的形式,但是不用手动启动。安装虚拟机时会自动启动一个虚拟机对应的vncserver(不同的虚拟机有不同的vnc端口和设置)。

虚拟机安装系统时会使用图形界面安装,在使用CentOS7作为服务器时一般不会安装GNOME等桌面环境,也就是服务器本机无法使用virt-manager虚拟机图形管理的方式安装虚拟机。 主机安装vncserver,安装虚拟机时设置vnc client等远程连接虚拟机的端口,如5900,5901,5902。

注,vnc client用于远程连接vnc server。可以是windows下软件。如VNC viewer。viewer连接vnc server时需要保证服务器主机防火墙相关端口开放或者,暂时关闭防火墙。

systemctl stop firewalld
firewall-cmd --zone=public --add-port=5900/tcp --permanent
firewall-cmd --reload

5.启动libvirtd管理程序。

systemctl enable libvirtd
systemctl start libvirtd

6.安装virt-win驱动。无法直接使用OpenStack安装Windows的ISO镜像到卷的一大部分原因是windows无法直接使用virtio格式硬盘,需要驱动。

yum -y install wget
wget https://fedorapeople.org/groups/virt/virtio-win/virtio-win.repo -O /etc/yum.repos.d/virtio-win.repo
yum -y install virtio-win

安装完成后RPM包内容

/usr/share/virtio-win/*.iso:   ISO镜像,包含所有驱动。
/usr/share/virtio-win/*.vfd:   用于Windows XP下的VFD软驱镜像
/usr/share/virtio-win/drivers: 从VFD软驱镜像中提取的文件
/usr/share/guest-agent/*.msi:  QEMU Guest Agent 32bit 和 64bit 安装包

使用yum安装失败。直接下载virt-win.iso也是可以的

https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/

6.安装net-tools,设置网桥。不是必要的。

yum -y install net-tools bridge-utils
vim /etc/sysconfig/network-scripts/ifcfg-cloudbr0
TYPE=Bridge
BOOTPROTO=none
DEVICE=cloudbr0
ONBOOT=yes
IPV6INIT=no
IPV6_AUTOCONF=no
DELAY=5
IPADDR=192.168.199.80
NETMASK=255.255.255.0
GATEWAY=192.168.199.1
STP=yes
vim /etc/sysconfig/network-scripts/ifcfg-ens33

删除原IP相关设置,添加

HOTPLUG=no
BRIDGE=cloudbr0

重启网络

systemctl restart network

安装ISO镜像到qcow2磁盘。

1.准备镜像到文件夹/image

[root@KVMHost ~]# ls -lh /image
total 7.3G
-rw-r--r-- 1 root root 3.2G Dec 31 14:24 cn_windows_server_2008_r2.iso
-rw-r--r-- 1 root root 4.2G Dec 31 14:25 cn_windows_server_2012_r2.iso

2.创建qcow2格式磁盘,指定大小80G。磁盘文件放在/vhost 目录。

mkdir /vhost
qemu-img  create -f qcow2 /vhost/win2k8test.qcow2 80G

3.创建虚拟机

virt-install \
--name=win2k8test \
--ram=2048 \
--vcpus=2 \
--network network=default,model=virtio \
--cdrom=/image/cn_windows_server_2008_r2.iso \
--boot menu=on \
--disk=/vhost/win2k8test.qcow2,format=qcow2,bus=virtio \
--disk=/usr/share/virtio-win/virtio-win-0.1.171.iso,device=cdrom \
--graphics vnc,listen=0.0.0.0,port=5901 \
--os-type=windows \
--os-variant=win2k8 \
--force

virt-install 常用参数说明

# 新版本的写法  --name      指定虚拟机名称
--ram       虚拟机内存大小,以 MB 为单位
--vcpus     分配CPU核心数,最大与实体机CPU核心数相同
--network   虚拟机网络配置
--os-type   系统的类型如 linux windows
--os-variant    操作系统类型,更详细的表述。可以用osinfo-query os命令列出可选系统--disk 指定虚拟机的磁盘存储位置  # size,初始磁盘大小,以 GB 为单位。  --location 指定安装介质路径,如光盘镜像的文件路径。
--graphics 图形化显示配置  # 全新安装虚拟机过程中可能会有很多交互操作,比如设置语言,初始化 root 密码等等。  # graphics 选项的作用就是配置图形化的交互方式,可以使用 vnc(一种远程桌面软件)进行链接。  # 如果使用命令行的方式安装,这里要设置为 none,但要通过 --extra-args 选项指定终端信息,  # 这样才能将安装过程中的交互信息输出到当前控制台。
--extra-args 根据不同的安装方式设置不同的额外选项  --cdrom 待安装的ISO镜像 也可使用--location
--boot 引导方式。设置menu=on 表示可手动选择引导盘。设置--boot=cdrom,引导直接通过cdrom启动。
--graphics 设置vnc的端口。linsten=0.0.0.0 允许除本机外主机连接。


安装命令设置完成,等待vnc viewer连接5901端口,完成系统的安装。

4.vnc viewer连接虚拟机vnc 进行安装。
需一个可远程连接到CentOS7服务器主机的图形化系统,如windows mac安装vnc viewer软件,连接到服务器的相应端口对虚拟机系统进行安装设置。

VNC Server 服务器主机的IP和端口,5901就是安装虚拟机时设置的vnc端口。
Name 可随意。

开启连接
可能出现No bootable device。

如果确定ISO文件没有错误。那可能是boot引导选错了ISO,需手动选择。右键点击VNC Viewer,然后选择send Ctrl+Alt+Del。然后重新连接。

还是引导错误。再次Ctrl+Alt+Del,这一次不会退出该界面,手速快点,在看到Press ESC for boot menu是按下键盘esc。然后会让手动选择引导盘。(手速慢或者错过了还是会自动引导失败进入该界面,可以重复Ctrl+Alt+Del)

选择3或者4。进入引导安装界面(应该是选择4没错的,错了再次Ctrl+Alt+De)

这之后不用在手动选择引导了。看到Press ESC 忽视掉,系统会自动向下执行的。
正常完成系统安装步骤直到出现硬盘驱动无法加载界面

选择加载驱动程序 自动扫描,然后选择win2k8的驱动。

驱动安装完成 即可选择磁盘。

该磁盘即是/vhost/win2k8test.qcow2 磁盘文件。点击下一步开始安装

等待直到安装完成。重新设置密码进入Windows2008R2系统。

5.设置网卡驱动。依然是使用vnc viewer连接操作。
此时没有网络驱动,需要手动安装。点击开始图标右边的服务管理器
诊断,设备管理器

选择以太网控制器 更新驱动程序 手动查找驱动

选择CD 驱动器 D virtio-win-0.1.1NetKVM下的2k8R2


这个是使用的virtio 网络。如果希望与宿主机桥接,安装时设置

--network bridge=cloudbr0

代替

--network network=default,model=virtio

这样安装系统时会自动安装驱动,无需再手动安装virtio的网络驱动

宿主机查看当前虚拟机

virsh list

启动状态

[root@KVMHost ~]# virsh listId    Name                           State
----------------------------------------------------2     win2k8test                     running

测试qcow2磁盘使用。

1.删除虚拟机

virsh destroy win2k8test

删除定义文件

virsh undefine win2k8test
virsh list


2.查看qcow2磁盘文件。

qemu-img info /vhost/win2k8test.qcow2
[root@KVMHost ~]# qemu-img info /vhost/win2k8test.qcow2
image: /vhost/win2k8test.qcow2
file format: qcow2
virtual size: 80G (85899345920 bytes)
disk size: 7.0G
cluster_size: 65536
Format specific information:compat: 1.1lazy refcounts: false

3.测试直接启动该磁盘。

virt-install \
--name win2k8test \
--ram 2048 \
--vcpus 2 \
--network network=default,model=virtio \
--disk=/vhost/win2k8test.qcow2,format=qcow2,bus=virtio \
--boot hd \
--graphics vnc,listen=0.0.0.0,port=5900 \
--os-type=windows \
--os-variant=win2k8 \
--force
未使用cdrom,而是硬盘直接引导。
--boot hd

4.创建vnc 5900端口连接

5.删除测试实例

virsh destroy win2k8test
virsh undefine win2k8test

6.现在可以直接将/vhost/win2k8test.qcow2文件当作镜像上传到OpenStack的glance。也可以压缩一下大小再上传。

mkdir /glance

压缩镜像

virt-sparsify --compress /vhost/win2k8test.qcow2 /glance/win2k8test.qcow2

对比大小

du -sh /vhost/win2k8test.qcow2
du -sh /glance/win2k8test.qcow2

将压缩后的qcow2镜像文件备份后,可测试一下该镜像文件是否可正常创建虚拟机。

cp /glance/win2k8test.qcow2  /glance/win2k8test.qcow2.bak
virt-install \
--name win2k8test \
--ram 2048 \
--vcpus 2 \
--network network=default,model=virtio \
--disk=/glance/win2k8test.qcow2,format=qcow2,bus=virtio \
--boot hd \
--graphics vnc,listen=0.0.0.0,port=5903 \
--os-type=windows \
--os-variant=win2k8 \
--force

成功启动,压缩成功。

删除实例后 该qcow2的备份即可上传。

Windows2012镜像制作过程与2008基本一致。

制作WindowsServer2008镜像上传到OpenStack相关推荐

  1. (私有云)客户给的VMware镜像磁盘如何制作成自定义镜像上传至openstack镜像服务器供客户使用

    (私有云)客户给的VMware镜像磁盘如何制作成自定义镜像上传至openstack镜像服务器供客户使用 目录 1.准备工作 2.修改域xml配置文件以及是否缩容 3.在镜像更新服务器上启动这个自定义镜 ...

  2. (三)Docker----基础镜像(制作镜像),实现动静分离,本地镜像上传docker仓库

    文章目录 一. Docker 镜像与制作 手动制作nginx 镜像(不建议) DockerFile 制作nginx 镜像(建议) 手动制作编译版本 nginx 镜像(不建议) 提交为镜像: 装数据库 ...

  3. 本地打包Docker镜像上传至阿里云远程仓库(一站式脚本)

    打包镜像上传至远程仓库: 1. 本地项目为 mytest-project 2. 仓库为阿里云镜像仓库 registry.cn-beijing.aliyuncs.com/test/mytest-proj ...

  4. 华为云ecs服务器镜像上传到容器镜像服务SWR

    操作场景 客户端上传镜像,是指在安装了容器引擎客户端的机器上使用docker命令将镜像上传到容器镜像服务的镜像仓库. 如果容器引擎客户端机器为云上的ECS或CCE节点,根据机器所在区域有两种网络链路可 ...

  5. 自定义镜像上传阿里云

    alpine制作jdk镜像 alpine Linux简介 1.Alpine Linux是一个轻型Linux发行版,它不同于通常的Linux发行版(centos.Ubuntu),Alpine采用了mus ...

  6. 自定义镜像上传阿里云(图文教程 附带思维导图)

    自定义镜像上传阿里云 alpine Linux简介 思维导图 使用Dockerfile基于alpine制作JDK8镜像 使用Dockerfile基于alpine制作最小JRE基础镜像 将Docker镜 ...

  7. 如何将镜像上传至阿里云?如何从阿里云中拉取自己的镜像?

    目录 如何将制作好的镜像上传至阿里云? 一.前期准备 1.注册阿里云账户 2.登录账号 3.配置Docker加速器 4.创建镜像仓库的命名空间(私有的) 5.创建镜像仓库(创建镜像仓库时要绑定一个代码 ...

  8. docker之自定义镜像上传阿里云

    alpine制作jdk镜像 alpine Linux简介 1.Alpine Linux是一个轻型Linux发行版,它不同于通常的Linux发行版,Alpine采用了musl libc 和 BusyBo ...

  9. Docker 之 自定义镜像上传阿里云

    alpine制作jdk镜像 alpine Linux简介 1.Alpine Linux是一个轻型Linux发行版,它不同于通常的Linux发行版,Alpine采用了musl libc 和 BusyBo ...

最新文章

  1. 【imx6】Unable to find the ncurses libraries的解决办法
  2. java实现多线程的方式并源码分析
  3. dataframe常用操作_【Data Mining】机器学习三剑客之Pandas常用算法总结上
  4. NYOJ 309 BOBSLEDDING(dp)
  5. Python中爬虫框架或模块的区别!
  6. oracle修改表字段
  7. FTP 协议和 HTTP 协议的比较
  8. 再有人问你为什么MySQL用B+树做索引,就把这篇文章发给她
  9. sparksql与hql语法差异
  10. cisco路由器如何查看内网流量情况
  11. 《创业维艰》笔记 2
  12. 旅游吧!我在这里 ——旅游相册POI搜索:找回你的足迹
  13. 中环混改尚存变数 高调的TCL要上演“资本魔输”?
  14. chromium浏览器定制 | 高匿名爬虫随机指纹
  15. 【python】牛客竞赛语法入门班选择结构习题 python解法
  16. html里问号的作用,问号的用法_问号的作用
  17. iOS 通讯录-获取联系人属性
  18. 【转】如何成为一名黑客--Eric Steven Raymond
  19. Excel VBA获取选择文件的文件名称
  20. 1063 计算谱半径

热门文章

  1. oneDrive 5T网盘空间申请教程
  2. maximo菜单和应用程序排序
  3. 传奇人物李兴平5000万卖掉hao123后在做什么
  4. 解决百度网盘登录安全验证显示空白页
  5. labview如何加载库_LabVIEW如何方便地调用DLL文件
  6. 嵌入式软件开发之常用软件(六)
  7. QT5串口读取宇电温控器温度
  8. tair用ldb做分布式存储
  9. 数据图表制作的4个基本要素!
  10. 好书分享--生命3.0 人工智能时代人类的进化与重生