为OpenStack制作Windows 2008 R2镜像

本文介绍如何在CentOS7系统中利用KVM和Libvirt搭建Windows Server 2008 R2虚拟机,涵盖硬件要求、软件安装配置、网络设置、虚拟机创建及维护等全过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原创作品,允许转载,转载时请务必以超链接形式标明文章  原始出处 、作者信息和本声明。否则将追究法律责任。 http://foolishfish.blog.51cto.com/3822001/1618447

前提条件:

支持硬件辅助虚拟化(Intel VT-x或AMD-V)的主机一台。

已安装好的CentOS7,默认的最小安装即可,配置网络使之可以访问外网。

准备Windows 2008 R2安装光盘镜像

配置过程:

注:以下配置中过程中,eno16777736为主机外部网络所对应的网卡,IP地址为192.168.1.9,配置过程中,请根据实际情况修改

  • 环境准备

安装相关软件包

1
2
yum  install  -y vim wget net-tools  bash -completion qemu-kvm libvirt virt- install
systemctl start libvirtd.service

创建桥接网络

1
2
3
4
5
6
7
8
9
10
11
cat  /etc/libvirt/qemu/networks/bridge .xml << EOF
<network>
   <name>bridge< /name >
   <bridge name= "br-ex" />
   <forward mode= "route"  dev= "eno16777736" />
   <ip address= "192.168.1.9"  netmask= "255.255.255.0" />
< /network >
EOF
 
virsh net-define  /etc/libvirt/qemu/networks/bridge .xml
virsh net-autostart bridge

配置网卡自动添加到桥接器

1
2
3
4
5
cp  /etc/sysconfig/network-scripts/ifcfg-eno16777736  /etc/sysconfig/network-scripts/ifcfg-br-ex
sed  -i -e  '/^NAME=/d'  -e  '/^DEVICE=/d'  -e  's/^TYPE=.*/TYPE=Bridge/'  -e  '/^UUID=/d'  -e  '/^HWADDR=/d'  /etc/sysconfig/network-scripts/ifcfg-br-ex
echo  "DEVICE=br-ex"  >>  /etc/sysconfig/network-scripts/ifcfg-br-ex
sed  -i -e  '/^IPADDR/d'  -e  '/^NETMASK/d'  -e  '/^PREFIX/d'  -e  '/^GATEWAY/d'  -e  '/^DNS/d'  /etc/sysconfig/network-scripts/ifcfg-eno16777736
echo  "BRIDGE=br-ex"  >>  /etc/sysconfig/network-scripts/ifcfg-eno16777736

重启系统使配置生效

1
reboot

确认"bridge" 网络已启动

1
2
virsh net-list
brctl show

spacer.gifwKiom1T8ks_xYFsrAAERAM9UXRc456.jpg

关闭防火墙或者开放5900+N端口(要从客户端连接虚拟机控制台,默认从5900端口开始,每个虚拟机实例占用一个端口号,也可以指定虚拟机实例所使用的端口)

1
systemctl disable firewalld.service ; systemctl stop firewalld.service

创建镜像制作目录

1
mkdir  /opt/image  cd  /opt/image

下载virtio驱动软盘

1
wget -O virtio-win-drivers.vfd https: //launchpad .net /kvm-guest-drivers-windows/20120712/20120712/ +download /virtio-win-drivers-20120712-1 .vfd


  • 安装Windows 2008 R2系统

创建qcow2格式的虚拟磁盘

1
qemu-img create -f qcow2 win2k8.qcow2 10G

wKioL1T8k-rAFlGTAACRPFuyOoY460.jpg

将系统安装镜像文件上传至/opt/image(此过程不在本文描述范围,略过),并命名为 win2k8.iso。如果使用其他文件名,请在后续操作中自行修改镜像文件名。

如果只有光盘没有镜像,可以将光盘放入到光驱,通过以下命令将光盘制作为iso镜像。

1
dd  if = /dev/sr0  of= /opt/image/win2k8 .iso

创建虚拟机实例。以下命令创建一个Win2k8虚拟机实例,配备1G内存,单核CPU,使用virtio网卡和磁盘适配器,挂载win2k8.iso和virtio-win-dirvers.vfd,远程控制使用spice(自动分配端口号,默认从5900开始)

1
2
3
4
5
6
7
8
virt- install  --connect qemu: ///system  --virt- type =kvm \
--name win2k8 -- ram  1024 --vcpus 1 --arch=x86_64 \
--network network=bridge,model=virtio \
--disk win2k8.qcow2, format =qcow2,device=disk,bus=virtio \
--cdrom win2k8.iso \
--disk virtio-win-drivers.vfd,device=floppy \
--graphics spice,listen=0.0.0.0 --video qxl --channel spicevmc \
--os- type  windows --os-variant win2k8

出现以下两条告警可以忽略,后续将从Windows客户端进行连接,无需使用 virt-viewer

  • 如果没有安装 virt-viewer,会出现警告信息 WARNING Unable to connect to graphical console: virt-viewer not installed.

  • 如果在命令行模式下运行此命令,会出现警告信息 WARNING **: Could not open X display

在本地Windows上安装SPICE客户端(下载链接 https://fedorahosted.org/released/virt-viewer/),Linux系统可在GUI界面下安装virt-viewer

安装完成后,运行 Remote viewer

spacer.gifwKiom1T8ks-DVL0uAAAn9aoc9Hk392.jpg


执行以下命令获取连接虚拟机实例所用的端口号,默认从5900开始

1
virsh domdisplay win2k8

在连接地址栏中填入 spice://host地址:5900 注意将查询到的地址中的localhost替换为主机实际的IP地址,而不是虚拟机的IP地址

spacer.gifwKioL1T8k-qybjePAADPSOphU4U255.jpg

点击 Connect,即可打开远程虚拟机的安装界面

wKiom1T8ktGy-l-NAAQIIIO8vXE538.jpg

因为使用了virtio半虚拟化驱动器,2008 R2和Win7 中默认没有该驱动,所以需要手动加载其驱动

spacer.gifwKioL1T8k-zTPOmrAABOUqqmC94737.jpg

从软驱中加载storage驱动(这里显示2003R2,同样可用于2008R2。可能是软驱容量有限,制作者没有加入太多内容)

wKiom1T8ktHS0t-JAADmzZFzx68186.jpgspacer.gif

wKioL1T8k-ziarx6AACCyiD16LQ513.jpg

然后点击下一步,稍等片刻后即可看到前面分配的磁盘空间了。

wKiom1T8ktGCK_5ZAACi5mgK4I8435.jpg

接下来的系统安装步骤省略。安装完成之前重启会导致spice连接断开,重新连接即可,安装完成之后重启就不会再断开了


系统安装完成后,安装网卡驱动(软驱中的驱动)。配置虚拟机网络,使其与外部网络连通。

spacer.gifwKioL1T8k-zgiFVjAAEyf__LWno999.jpg

下载virtio驱动和qxl显示驱动。(网络已经配置好,也可以使用RDP连接虚拟机实例,方便复制链接和文件)

(备用链接 http://alt.fedoraproject.org/pub/alt/virtio-win/stable/virtio-win-0.1-81.iso)

http://www.spice-space.org/download/windows/spice-guest-tools/spice-guest-tools-0.74.exe

http://www.spice-space.org/download/windows/qxl/qxl-0.1-21/qxl_8k2R2_x64.zip

安装spice-guest-tools-0.74.exe,安装qxl显卡驱动

wKiom1T8ktLiGfIKAAFWFvKJzlc616.jpg

wKioL1T8k-3g6FLJAAEPGTqJ8Ck204.jpg

安装完成之后,设备驱动如下图

wKiom1T8ktKRB_lXAAEushGXEgQ277.jpg

这时就虚拟机实例和主机之间就可以共享剪切板了(基于Spice Agent),能够复制网址、截屏等文本和图像信息,但不能复制文件。

wKioL1T8k-3TPO2BAACMBNgcy-U853.jpg

安装更新,删除临时文件。


  • 配置系统与OpenStack整合

下载cloudbase-init工具并安装 https://github.com/cloudbase/cloudbase-init

wKiom1T8ktOgxvvgAAGjj1FL1qM564.jpgspacer.gif

wKioL1T8k-7gehnRAAFHefb2pR4840.jpg

选择执行Sysprep封装

wKiom1T8ktShDXr-AAHTC28Xw6E730.jpg

将网卡配置修改为DHCP,删除临时文件(包括前面下载的驱动和安装文件),关机。

此程序安装完毕后生成一个“Cloud Initialization Service”服务,下次启动时,此服务会自动启动。

wKioL1T8k--CqyMyAACtbtdvELo229.jpg

它会从OpenStack接收元数据(http://169.254.169.254),然后执行一系列初始化操作,

  • 设置主机名;

  • 创建或更新本地用户(安装过程中所指定的用户名,默认为Admin),添加他的本地组(多个组之间用半角逗号分隔),并注入密码;

  • 配置网络(前面安装过程中所指定的的网卡);

  • 在用户目录下创建包含SSH密钥的authorized_keys文件(由元数据提供,也就是创建实例时所选择的密钥对);

  • 执行创建实例时所指定的脚本(输入脚本时,第一行写入 rem cmd 为批处理命令,第一行写入 #ps1 为PowerShell脚本)

详细信息可参考此链接 http://www.cloudbase.it/cloud-init-for-windows-instances/

  • 压缩虚拟机磁盘

1
qemu-img convert -c -p -O qcow2  /opt/image/win2k8 .qcow2  /opt/image/win2k8r2 .qcow2

其中,-c表示使用压缩,-p表示执行过程中显示进度,-O指定输出格式为qcow2

对比前后文件大小

wKiom1T8ktShVNq3AABc-7_5hQA016.jpg

  • 上传到glance

将虚拟机磁盘文件拷贝到控制节点,执行以下命令完成镜像上传

1
glance image-create --name  "Windows_2008_R2"  --is-public  true  --disk- format  qcow2 --container- format  bare -- file  /opt/image/win2k8r2 .qcow2



排错:

故障现象:

执行virsh net-list时,出现以下错误提示

error: failed to connect to the hypervisor 

error: no valid connection

error: Failed to connect socket to '/var/run/libvirt/libvirt-sock': No such file or directory 

wKioL1T8k-_BIyjIAACk13VXc0s330.jpg

问题原因:

libvirtd服务未启动

解决方法:

执行 systemctl start libvirtd.service 启动该服务即可。

可通过 systemctl status libvirtd.service 检查该服务运行状态,确保服务处于active (running) 状态

1
2
systemctl start libvirtd.service
systemctl status libvirtd.service

wKiom1T8ktThDSkVAAE2qkDR_Ys783.jpg


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值