我们目前有一个testing环境,在我们的SAN连接的存储arrays上创build数百个LUN,将其导出到一个或多个(物理)服务器,对LUN上包含的数据运行testing,然后将其销毁并重复。
我们希望使用虚拟机作为服务器,但是在为每个单独的虚拟机手动分配数百个LUN时遇到了问题(与之前的物理服务器一样,我们可以设置分区来执行此操作并执行HBA重新扫描) 。
有关如何处理这种情况的任何build议? 一种解决scheme可能是虚拟机直接pathIO(但目前我们没有所需的硬件),或者设置脚本以自动重新扫描ESX级别的新LUN,然后自动将LUN分配给特定虚拟机(我认为可以通过API来完成)。
我看不出为什么你不能用任何标准的ESX / ESXi设置来做到这一点。
你应该可以用Raw Device Mappings来做到这一点。 假设SAN端的分区和LUN呈现过程保持不变,可以使用vmkfstools告诉ESX重新扫描并检测主机级别的新LUN。 一旦发现,您可以创buildVMDK并将其添加到VM中,或将整个卷作为裸设备映射(RDM)提供。
使用ESX可以在服务控制台命令行上编写脚本,但对于ESXi,您需要使用PowerCLI(Powershell)或Perl CLI工具。 vSphere Management Appliance是一种Linux设备,如果要采用该路由,则会预先打包所有工具。 所有三种CLI方法的文档可以在这里find。
你想要做什么的大纲是:
1.重新扫描主机上的新LUN。
vicfg-rescan [vmhbaX]
您可能只想扫描LUN所在的相关HBA,以便使用连接到SAN的相关HBA名称replacevmhbaX。
2.创build一个映射到新LUN的RDM存根
vmkfstools –a lsilogic -r /vmfs/devices/disks/vmhba1:0:0:0 /vmfs/volumes/storage1/testluns/testrdmlun.vmdk
您将需要找出LUN的LUN参考,并将vmdk设置为适合您的环境的位置和名称。 这里有几个语法变体,我没有在ESXi 4上使用过,但是这个格式在3.5上对我来说工作的很好。 有两种RDM模式,如果你需要更多的SCSIfunction,那么Raw Device Mapping Passthrough模式可能更适合你,在这种情况下用-xreplace-r。
3.将新磁盘呈现给您的虚拟机。
一旦以这种方式准备好了磁盘,有几种方法可以将这些信息提供给VM中的操作系统。 您可以编辑VMconfiguration并为此设备添加条目,或者可以在VM中configuration此特定目标vmdk,并且可以在VMclosures时运行上述发现步骤。 如果你想要一个更dynamic的机制,最好的方法就是使用VMware Disk Mount实用程序 – 这样可以直接在客户机操作系统中安装RDM(或任何其他VMDK),而不必乱用与VMconfiguration。
如果使用远程CLI执行重新扫描和vmkfstools部分,则可能必须将目标主机和身份validation凭据指定为命令的一部分。
标准的VMDK文件可以使用同样的方法,但是您需要首先将LUN格式化为VMFS,然后在其上创build适当的VMDK。 据我所知,从你的描述来看,这样做对你没有好处。