制作WindowsServer2008镜像上传到OpenStack
镜像 格式
一类是 物理机镜像格式。 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相关推荐
- (私有云)客户给的VMware镜像磁盘如何制作成自定义镜像上传至openstack镜像服务器供客户使用
(私有云)客户给的VMware镜像磁盘如何制作成自定义镜像上传至openstack镜像服务器供客户使用 目录 1.准备工作 2.修改域xml配置文件以及是否缩容 3.在镜像更新服务器上启动这个自定义镜 ...
- (三)Docker----基础镜像(制作镜像),实现动静分离,本地镜像上传docker仓库
文章目录 一. Docker 镜像与制作 手动制作nginx 镜像(不建议) DockerFile 制作nginx 镜像(建议) 手动制作编译版本 nginx 镜像(不建议) 提交为镜像: 装数据库 ...
- 本地打包Docker镜像上传至阿里云远程仓库(一站式脚本)
打包镜像上传至远程仓库: 1. 本地项目为 mytest-project 2. 仓库为阿里云镜像仓库 registry.cn-beijing.aliyuncs.com/test/mytest-proj ...
- 华为云ecs服务器镜像上传到容器镜像服务SWR
操作场景 客户端上传镜像,是指在安装了容器引擎客户端的机器上使用docker命令将镜像上传到容器镜像服务的镜像仓库. 如果容器引擎客户端机器为云上的ECS或CCE节点,根据机器所在区域有两种网络链路可 ...
- 自定义镜像上传阿里云
alpine制作jdk镜像 alpine Linux简介 1.Alpine Linux是一个轻型Linux发行版,它不同于通常的Linux发行版(centos.Ubuntu),Alpine采用了mus ...
- 自定义镜像上传阿里云(图文教程 附带思维导图)
自定义镜像上传阿里云 alpine Linux简介 思维导图 使用Dockerfile基于alpine制作JDK8镜像 使用Dockerfile基于alpine制作最小JRE基础镜像 将Docker镜 ...
- 如何将镜像上传至阿里云?如何从阿里云中拉取自己的镜像?
目录 如何将制作好的镜像上传至阿里云? 一.前期准备 1.注册阿里云账户 2.登录账号 3.配置Docker加速器 4.创建镜像仓库的命名空间(私有的) 5.创建镜像仓库(创建镜像仓库时要绑定一个代码 ...
- docker之自定义镜像上传阿里云
alpine制作jdk镜像 alpine Linux简介 1.Alpine Linux是一个轻型Linux发行版,它不同于通常的Linux发行版,Alpine采用了musl libc 和 BusyBo ...
- Docker 之 自定义镜像上传阿里云
alpine制作jdk镜像 alpine Linux简介 1.Alpine Linux是一个轻型Linux发行版,它不同于通常的Linux发行版,Alpine采用了musl libc 和 BusyBo ...
最新文章
- 【imx6】Unable to find the ncurses libraries的解决办法
- java实现多线程的方式并源码分析
- dataframe常用操作_【Data Mining】机器学习三剑客之Pandas常用算法总结上
- NYOJ 309 BOBSLEDDING(dp)
- Python中爬虫框架或模块的区别!
- oracle修改表字段
- FTP 协议和 HTTP 协议的比较
- 再有人问你为什么MySQL用B+树做索引,就把这篇文章发给她
- sparksql与hql语法差异
- cisco路由器如何查看内网流量情况
- 《创业维艰》笔记 2
- 旅游吧!我在这里 ——旅游相册POI搜索:找回你的足迹
- 中环混改尚存变数 高调的TCL要上演“资本魔输”?
- chromium浏览器定制 | 高匿名爬虫随机指纹
- 【python】牛客竞赛语法入门班选择结构习题 python解法
- html里问号的作用,问号的用法_问号的作用
- iOS 通讯录-获取联系人属性
- 【转】如何成为一名黑客--Eric Steven Raymond
- Excel VBA获取选择文件的文件名称
- 1063 计算谱半径