最近一段一直在闭关设计和研究新一期活动的内容和方式并完成了其中一些关键部分的脚本;这其中一个很重要的部分就是架构和设计虚拟实验室的前后台工作。
今天,通过这篇文章分享一个针对我们的虚拟实验室中必须攻克和解决的一个技术难题及如何设计并解决的,希望对你也有所启发。
(具体的项目设计相对比较复杂,其中的技术部分涉及了虚拟网络隔离设计、存储系统、并发远程连接桌面、自动化部署,前后台等诸多部分,这里仅就存储一个子单元中的一个环节展开)
我们的实验考虑到需要通过自动化批量部署方式将初始化的实验环境部署到后端若干套Hyper-V的服务器虚拟化平台,这里以一个培训完整的实验环境源VHD加上差异盘快照avhd需要300G计算;单就一套完全自包含的环境进行导入导出是很简单的,通过Powershell的导出和导入CMDLETS就可以轻松的解决,不过试想一下,像我们的实验平台单就一个自包含的实验环境就有300GB之巨,如果在服务器端跑10个左右的这样的环境,其初期部署规模就会上升到接近3TB,显然这种方式空间占用和部署时的导入速度都会变得不太能接受的。
有没有什么更好的方法呢?
在前期我就考虑到,是不是可以采用差异磁盘减少空间的投入和部署的时间,但是新的问题接踵而来,如果采用差异磁盘的是需要重新创建虚拟机的,这样对于每套独立的环境就需要在后期脚本中恢复其中的配置,这个复杂度就很高了。
最终,经过思考和测试,找到了一个解决方案,其大致思路是这样的:
我将上述一个实验的环境修改为5个完整的源全量虚拟磁盘vhd分别对应5个快照磁盘avhd或差异磁盘,为什么是这样?在看完了这个实践过程,相信你就清楚了:)
貌似如果需要制作10套环境按照这种做法不但不会节省什么空间,反而显得画蛇添足而且空间还多了这显然得不偿失,不过这时候就要发挥OS自带的MKlink的作用了,而且速度会非常有优势,怎么做呢?其实说来简单,全量磁盘和差异磁盘时有父级别关联关系的,下面拿个测试环境看看:
从界面就可以看出来(对包含快照的环境其实是一样的)
通过Powershell,也可以看到:
如果导出配置了差异磁盘的虚拟机会是神马情况呢?我们测试一下看看:
都导出哪些东东?Hyper-V虚拟机的导出了3个目录,一个快照目录,一个磁盘目录还有一个是虚拟机配置文件目录的XML用于导入。
磁盘目录中包含了全量的父磁盘win2008r2-30G.vhd以及差异磁盘cdltmg.vhd,对于我们要做的就是想个办法绕开拷贝10次父磁盘,记住“重角虽多一麟足矣“!”戏份“开始了:)