如何让CloudStack使用KVM创建Windows实例成功识别并挂载数据盘

问题产生背景:

使用CloudStack+ KVM组合进行资源池纳管工作,通过ISO镜像文件创建了两个模板:
RHEL6U3 64位系统以及WindowsServer2008 R2 SP1 64位系统。
然后通过模板创建实例,挂载外接存储,实例启动后,通过fdisk -l 查看RHEL系统以及通过计算机管理中
的存储管理查看Windows系统发现,RHEL系统可以显示挂载的第二块硬盘(卷),但是 Windows却始终
不能识别。
问题分析:
首先考虑是不是CloudStack的SSVM出现了问题,不能够执行诸如卷的挂载等操作,但是RHEL这样的Linux操作
系统不管再挂几块新磁盘或者卸载之类的操作均不会有任何问题,所以判断问题不是出在CloudStack上面,而是在于操作系统。
那么会不会是KVM不能够对 Windows虚拟机进行磁盘挂载操作呢?显然不可能,在没有 CloudStack或者Openstack这样的云管理平台之前,我们就是直接使用RHEL上面的KVM去创建虚拟机,不管是virsh之类的
命令也好,还是virt-manager这样的图形化控制台也好,都不存在说Windows虚拟机不能添加第二块硬盘,
在 CloudStack里面对应添加除系统卷之外的第二块卷。既然从CloudStack的管理界面看不出任何问题,那么
就登陆到KVM主机上面查看吧,打开 virt-manager图形化工具,点击RHEL与Windows虚拟机的Details查看
硬件,发现硬盘跟网卡的硬件类型均为virtio,然后通过手动添加硬盘的方式对RHEL跟Windows进行测试,发现
如果硬盘类型添加为IDE,则两个操作系统均可以显示出来,然而如果添加virtio类型的硬盘,只有RHEL可以显示,而Windows却不能显示。

那么virtio是个什么东东呢http://www.linux-kvm.org/page/Virtio , 所谓的半虚拟化驱动,而CloudStack调用KVM接口去创建虚拟机的时候,数据磁盘类型就是使用的virtio类型的,而在KVM上Windows虚拟机并不能支持,所以导致无法成功显示出数据磁盘。

解决步骤:

220836506.png

图 通过界面添加一个新的数据盘

220839513.png

图 点击附加磁盘

220842616.png

图将磁盘挂载到windows2008上


222127981.png

先取消ISO

222131651.png

图 点击挂载ISO

220853342.png

图 选择ISO

220856233.png

图 重启实例

220900597.png

图 重启实例后打开设备管理器查看SCSI控制器

220903874.png

图 选择驱动位置

220906936.png

图 选择驱动挂载盘

220909127.png

图 安装驱动

220913956.png

图 确认驱动安装是否成功

220917915.png

图 成功显示数据盘

220920467.png

图 初始化磁盘

220923621.png

图 开始格式化

220926811.png

图 开始分区

220930261.png

图 格式化成功

220933959.png

图 大功告成


注意:

Windows server 2003的驱动:virtio-win-0.1-30.iso

Windows server2008 的驱动:virtio-win-0.1-65.iso

否则会造成蓝屏的!!!

=========================2013年12月15日 新问题分析============================

今日,客户反馈说通过CloudStack + KVM 创建的Windows 实例使用起来体验没有原始的ESXI主机上面的虚拟机快,Linux虚机倒是没有什么问题,排除网络跟存储的原因,问题就在虚拟化层面了?难道KVM的问题,倒是KVM的性能也不会有那么大的差距,找了很久,发现唯一的区别就在于Windows的第一块硬盘始终是IDE的,即使按照上文给Windows安装了VIRTIO驱动,第一块盘都不会显示为VIRTIO。

170204744.png

170206171.png

170209268.jpg

170211819.png

170215493.png

170219442.png

170222523.png

170224894.png

170226791.png


也就意味着我们在通过ISO创建实例,然后通过实例制作模板的时候,就需要将ISO注册成Windows PV的操作系统,然后通过如此的ISO创建实例,再安装virtio驱动,会将磁盘跟网络的virtio驱动都安装上,然后将实例做成模板,问题就解决了。

173339844.png










本文转自 暗黑魔君 51CTO博客,原文链接:http://blog.51cto.com/clovemfong/1320587,如需转载请自行联系原作者

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/392982.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

云计算openstack介绍

转载于:https://www.cnblogs.com/WIU1905/p/11107593.html

C语言Node lt T gt,c语言论坛填空;#includelt;stdio.hgt;# 爱问知识人

填空;#include #include #define N 6typedef struct node {int data;struct node *next;填空;#include #include #define N 6typedef struct node {int data;struct node *next;} NODE;void fun(NODE *h){ NODE *p, *q; int t;/**********found*********…

gitlab设置邮件服务器_如何设置您自己的一次性电子邮件服务器

gitlab设置邮件服务器by Oren Geva由Oren Geva 如何设置您自己的一次性电子邮件服务器 (How To Setup Your Own Disposable Email Server) Disposable email services are online services that provide temporary email addresses for registering or signing up on websites…

leetcode442. 数组中重复的数据

给定一个整数数组 a,其中1 ≤ a[i] ≤ n (n为数组长度), 其中有些元素出现两次而其他元素出现一次。 找到所有出现两次的元素。 你可以不用到任何额外空间并在O(n)时间复杂度内解决这个问题吗? 示例: 输入: [4,3,2…

C语言基础注意点

一、基础知识篇 (一)关键字 1,存储类型 A、auto 声明自动变量,一般不使用 B、static 声明静态变量 C、extern 声明变量是在其他文件正声明(可看做引用变量) D、register 声明积有器变量 2、常用…

**加密解密基础、PKI及SSL、创建私有CA**

进程间通信 socket通信 客户端-->请求--> 路由转发 --> 服务端,取出资源 --> 封装为可响应给客户端的请求报文从接收请求端口发出 SSL/TLS协议的实现 OpenSSL OpenSSL程序组件 1234[rootlocalhost CA]# rpm -ql openssl /usr/lib/libcrypto.so.10 //加…

json 文件打读取

1。获取文件路径 /** BookController.class.getClassLoader().getResource("static/json/book_nav.json").getPath() 获取当期运行时的项目json文件路径*/JSONObject json JsonResourceUtils.getJsonObjFromResource(BookController.class.getClassLoader().getReso…

16F877A和24C02通信汇编语言,pic单片机IIC通信读24C02程序例 16F877A 主频4M

#define _iic_h_//pic单片机IIC通信初始化函数声明void iiccsh(void);//pic单片机IIC通信读外围设备函数声明//功能:传送一个8位地址,返回一个8位数据unsigned char iicread(unsigned char data);//pic单片机IIC通信给外围器件发送函数声明//功能&#x…

如何从XMLHttpRequest创建自定义获取API

What is your worst nightmare?你最可怕的噩梦是什么? That sounded dark, but it’s not a rhetorical question. I really want to know because I am about to tell you mine. Along the way, we will learn some things like how the fetch API works and als…

leetcode637. 二叉树的层平均值

给定一个非空二叉树, 返回一个由每层节点平均值组成的数组。示例 1:输入:3/ \9 20/ \15 7 输出:[3, 14.5, 11] 解释: 第 0 层的平均值是 3 , 第1层是 14.5 , 第2层是 11 。因此返回 [3, 14.5, 11] 。/*** Definition for a b…

5.3 上午

观看英语课程——《恋练有词》 学习Linux 转载于:https://www.cnblogs.com/bgd140206110/p/6801164.html

AD库转换为KiCAD库的方法

AD库转换为KiCAD库的方法 参照博主另外一篇文档: AD转换为KiCAD的方法,点击此处转载于:https://www.cnblogs.com/zhiqiang_zhang/p/11109560.html

遗传算法求解装箱问题c语言,求解装箱问题的遗传算法-南昌航空大学期刊网.pdf...

求解装箱问题的遗传算法-南昌航空大学期刊网1998 2 Journal of Nanchang Institute of Aeronautical Technology 21998方 平    李 娟( 南昌航空工业学院)  ( 西北工业大学): ( Bin Packing) ,, , D( irst it De-creasing) ,: ; ; ;: TP301. 6( )( Bin Packing) , :1 2 …

mysql索引随记

为什么80%的码农都做不了架构师?>>> 先了解下Btree:https://my.oschina.net/u/3646190/blog/1593094 为什么每个数据项,即索引字段要尽量的小,比如int占4字节,要比bigint8字节少一半? 通过上面…

leetcode79. 单词搜索(回溯算法)

给定一个二维网格和一个单词,找出该单词是否存在于网格中。 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。 示例: board [ [‘A’,‘…

react钩子_迷上了钩子:如何使用React的useReducer()

react钩子So the React Conference just happened and as always something new happened. Hooks happened! The React team talked about suspense, lazy loading, concurrent rendering, and hooks :D.因此,React会议刚刚发生,并且一如既往地发生了一些…

开发注意事项

明确需求 - 沟通 - 定好上下游接口 次序乱不得转载于:https://www.cnblogs.com/zslzz/p/6802437.html

c语言写桌面程序unity,Unity和iOS原生界面交互示例

注意上面的Main方法中出现的UnityAppController,该类就是作为控制类来实现Unity在iOS上显示的功能,在Main方法中就是将该控制器作为参数传递,即Main方法之后就会进入该类执行。所以这是我们进入到UnityAppController.mm,来查看该类…

oracle审计实施

1、语句审计 Audit session; Audit session By ; 与instance连接的每个会话生成一条审计记录。审计记录将在连接时期插入并且在断开连接时期进行更新。 保留有关会话的信息比如连接时期断开连接时期处理的逻辑和物理I/O,以及更多信息将存储在单独一条审计 记录中…

JPDA 架构研究5 - Agent利用环境指针访问VM (内存管理篇)

引入: 我们在前面说到JVMTI的客户端Agent,又提到Agent通过环境指针来访问VM。这里就来看看环境指针到底有多大的访问VM的能力。 分类1:内存管理 a.Allocate. 分配内存 jvmtiError Allocate(jvmtiEnv* env,jlong size,unsigned char** mem_ptr) size:分配…