vMware存储:SAN配置基础
VMware存储不仅仅是将LUN映射给物理服务器这么简单。VMware vSphere允许系统管理员在一个物理机上创建多个虚拟机。
潜在的hypervisor和vSphere ESXi,能够使guest虚拟机同时使用内部和外部存储设备。本文将会讨论在vSphere上构建SAN的基础以及管理员在部署共享SAN存储时的考虑因素。
VMware存储:SAN基础
vSphere支持包括JBODs,硬件RAID阵列,SSD磁盘以及PCIe SSD卡在内的内部连接磁盘设备。但是,使用这些存储形式的一大不便在于它们是与单一服务器直接连接的。
但是,SAN存储却提供了一个共享的,高可用性以及弹性的存储平台,并可扩展至多服务器部署环境。此外,存储厂商在产品上添加针对vSphere的支持,提供比本地存储部署更好的性能和扩展。
使用NAS和SAN存储部署vSphere是可行的,但是本文仅涉及SAN,或者说块设备。涉及iSCSI,Fibre Channel以及FCoE协议。
VMware文件系统以及数据存储:
vSphere块存储的一大重要结构特性是使用了VMware File System(VMFS)。与传统服务器以文件系统来格式化块设备的方式相同,vSphere在块LUN上使用VMFS来存储虚拟机。
vSphere的存储单位是datastore,包含一个或多个concatenated LUN。在很多实例中,vSphere部署在LUN和datastore之间采用1:1的对应关系,但这并不是配置要求。
vSphere历经数个版本的更迭,VMFS同样经过了更新和改进,当前ESXi 5.1版本使用的是VMFS版本5。在扩展性和性能方面都有改进,单个datastore已能host多个虚拟机。
在datastore内部,虚拟机作为虚拟机磁盘文件(VMDKs)来存储。vSphere同时允许LUN的直接连接而无需VMFS格式化。这些设备称作原始映射设备(raw device mapping, RDM)。虚拟环境中的原始设备映射可以用来创建同虚拟机的直接连接。通过VMware RDM功能,I/O性能开销较高的应用程序可以获得巨大的性能提升,因为RDM可以从已有的SAN环境中直接调用命令。
这可以让用户加载一个现有的LUN。假如使用Exchange Server,并且它已经运行在SAN上面,当虚拟化该Exchange Server时,你会运行VMware转化器、Microsoft转化器或其它第三方产品来将物理机转化为虚拟机,如果只是转化了C盘驱动器,你可以在现有位置上加载原存储。这样服务器在将所有数据转化到VMDK过程中是不需要宕机的,也不需要额外分配空间用来迁移VMDK。
VMware-SAN连接:
vSphere支持Fibre Channel,FCoE和iSCSI块存储协议。
Fibre Channel协议提供一个多路径,高弹性的基础架构,但是对于专用存储网络设施需要额外支出,如光纤交换机和HBA。
相反,iSCSI为共享存储提供相对便宜的选择,因为网卡通常远比Fibre Channel HBA和融合网络适配器便宜。
在最新版本的vSphere之前,多路径是很难配置的,但是这一情况得到了改进。此外,iSCSI的连接速度目前限制在1Gbps和10Gbps。最后,对于管理员来说iSCSI设备的安全性更加复杂,因为其功能特性更加基础,并不适合于高扩展环境。
配置限制:
VMware对于块存储的配置大小有一些限制。适用于iSCSI和Fibre Channel:
LUNs per ESXi host – 256
Maximum volume size – 64TB
Maximum file size – 2TB minus 512 bytes
这些限制值很高对于大多数用户来说不太可能达到,但是在大规模共享部署环境下LUN的数量可能是一个问题,因此在vSphere架构内部署datastore的数量和类型是至关重要的。
Hypervisor功能特性:
vSphere hypervisor包含一些管理外部存储的功能特性。
Storage vMotion使虚拟机能够在datastore之间移动,而虚拟机不用宕机。这能够很好地实现负载均衡或从老硬件设备实现数据迁移。
Storage DRS(SDRS)为基于策略的存储提供了可能。新的虚拟机的创建可建立在基于服务的策略上,如IOPS和容量。此外,一旦虚拟机部署完成并投入使用,SDRS可确保容量和性能在多个类似的datastore之间实现负载均衡。
存储功能特性:
vSphere hypervisor包含一些管理外部存储的功能特性。
vStorage APIs for Array Integration(VAAI)是ESXi 4.1引入的一系列附加SCSI命令,它可以让主机将特定的虚拟机和存储管理操作卸载(offload)到兼容的存储硬件中。在存储硬件的帮助下,主机执行这些操作起来会更快,同时能节省CPU、内存和存储网络带宽资源。
上述功能特性是通过vSphere”primitives”直接映射到新的SCSI命令来实现的。这些功能包括原子硬件辅助锁定,其在VMFS内对文件锁定有更好的粒度。这个特性提供了一种替代性的保护VMFS集群文件系统元数据(metadata)的方法,可以改善共享同一数据存储的ESX服务器大集群的可伸缩性(scalability);全拷贝,将数据复制工作给阵列。这个特性使得存储阵列能够在阵列内部直接完成全体复制,不再需要ESX服务器参与读取和写回数据的过程;块清零,将精简调配环境下的VMFS清零工作卸载给阵列。这个特性使得存储阵列能够快速清零产生大量的存储块,从而加速虚拟机的部署和供给(provisioning)。VAAI由此扩展到SCSI
UNMAP,允许hypervisor控制存储阵列空出精简调配环境下的释放资源。
硬件辅助锁定:
VMFS文件系统允许多主机对同一共享逻辑卷的并发访问,这是vMotion运行的必要条件。VMFS有一个内置的安全机制,防止虚拟机被超过一台的主机同时运行或修改。vSphere采用“SCSI预留”作为其传统文件锁定机制,这种方式在某项存储相关的指令操作期间,比如增量快照增长或发生时,均使用“RESERVE SCSI”命令锁定整个逻辑卷。这有助于防止冲突,不过也拖延了存储工作的完成,因为主机必须等待逻辑卷的解锁命令“RELEASE SCSI”才能继续写入。使用Atomic
Test and Set(ATS)命令是一种硬件辅助的锁定机制,可以离线地对存储阵列加锁,这样就可以对个别磁盘数据块而非整个逻辑卷。这样可以使得余下的逻辑卷在锁定期间继续被主机访问,十分有助于避免性能下降。该功能同时通过VMFS数据存储,允许同一集群中部署更多的主机,以及更多的虚拟主机部署在同一个逻辑卷上。
全拷贝:
通过Full Copy技术,部署虚拟机的能力将得到极大提升,因为相应的处理工作可以在存储阵列内部,或者在存储阵列之间(有些存储厂商的阵列支持xcopy功能)完成,过去花费几分钟的处理工作现在已变成几秒钟的事情,同时ESX服务器的CPU负载也会减少(因为其参与的数据流量减少)。该特性的好处对于桌面基础架构环境更有意义,这种环境下很可能涉及到基于模板部署数百个虚拟机之类的工作。
对于Storage vMotion,迁移虚拟机寄居地的过程用时也将得到类似缩减,因为复制过程不再需要上传给ESX服务器再下达到阵列设备,这将极大释放存储I/O和服务器CPU周期的占用。
Full Copy不仅可以节省处理时间,还可以节省服务器的CPU、内存资源以及网络带宽和存储前端控制器I/O。对于上述的大多数度量指标,Full copy最多可达到95%的减幅。
块清零:
让阵列对磁盘完成大片清零(bulk zeroing)将加速标准初始化过程。block zeroing的一个用途是创建急性清零厚模式(eager-zero thick)格式的虚拟磁盘。如果不使用block zeroing技术,创建命令必须要等到磁盘阵列清零任务全部完成后才能结束。对于大容量磁盘,这可能会持续较长时间。block zeroing(也称为copy same)会让磁盘阵列立即把游标(cursor)返回给发出请求的服务(仿佛写零过程已经被完成),然后再完成清零生成存储块的工作,这时不再需要全程持有游标直至工作结束。
vStorage APIs for Storage Awareness (VASA) 是另一套API,允许vSphere在阵列内获取更多潜在存储资源信息。包括诸如RAID级别,是否精简调配以及数据消重等特征信息。VASA解决的精简配置所存在的另一个问题就是空间回收。当在Windows或Linux上删除文件时,并没有从磁盘上物理删除该文件。恰恰相反,该文件被标记为删除,只有在创建新文件后,被删除的文件才最终被删除。在大多数情况下,这并不是个问题。但对位于精简数据存储之上的精简虚拟磁盘来说,这可能会导致无法控制精简卷的增长。这是因为删除文件后,空闲的磁盘空间并没有返还给存储阵列。
部署SAN存储的关键步骤:
存储管理员在部署SAN存储时应当考虑以下步骤:
厂商以及功能支持
大多数,但并非所有存储供应商支持vSphere的高级功能,如VAAI以及VASA。如果有可能用到以上功能,需小心确认。目前,vStorage阵列集成应用接口只针对基于数据块的存储阵列(光纤存储或iSCSI)有效,并不支持NFS存储。厂商对于VAAI的支持一更不相同,某些厂商,诸如EMC,很快地支持了这些功能,而另一些厂商花费了很长的时间将其整合到他们的所有存储阵列型号中。你可以通过查看VMware对光纤存储的兼容列表来了解哪些存储阵列支持特定的vStorage应用接口特性。通过VMware光纤存储兼容列表,你可以搜索你的存储阵列是否可以支持VAAI,如果这样,其它的应用接口也是支持的。
HBA支持以及专用iSCSI连接
如果管理员计划部署Fibre Channel,那么HBA必须在VMware硬件兼容性列表上。每一个服务器上的HBA数量将取决于期待工作负载,并且至少需要2个硬件冗余。对于iSCSI,需要使用专用的网卡,因此也需要多个冗余。
Datastore大小
可能的情况下,创建尽可能大的datastore。要在存储产品的限制范围内,特别是精简调配情况下。从而减少用户未来需要对数据进行移动的可能。
Datastore类型
Datastore是当前虚拟机性能的最低粒度。因此,管理员应当促使datastore与工作负载类型相匹配。例如,测试和开发数据应当放在较低性能存储。将datastore映射到LUN时,存储管理员还应当对基于阵列同步保护的LUN创建单独的datastore。
VMware以及存储的未来:
VMware已经勾勒出vSphere块存储的演变,以虚拟卷(vVOLs)的形式展现。当前,一个虚拟机是由位于物理LUN映射的datastore上的多个文件系统组成的。vVOLs提供将虚拟机文件抽象成名为vVOL的容器的机会,目的是开启仅针对虚拟机本身的QoS功能。目前,QoS仅能作为整个datastore的属性,这会导致仅仅为了保证虚拟机接收到它所申请的服务层级而进行数据迁移。
与VMware相同,其他供应商也已经开发出专门针对VMware的平台。Tintri 是一个很好的例子,尽管它使用NFS而不是块协议。Tintri VMstore 平台熟悉构成虚拟机的文件类型,因此可以确保服务质量,性能跟踪以及闪存利用被准确定位于虚拟机级别。
vMware存储:SAN配置基础的更多相关文章
- .NetCore MVC中的路由(1)路由配置基础
.NetCore MVC中的路由(1)路由配置基础 0x00 路由在MVC中起到的作用 前段时间一直忙于别的事情,终于搞定了继续学习.NetCore.这次学习的主题是MVC中的路由.路由是所有MVC框 ...
- LINUX+Vmware+SVN的配置和安装
LINUX+Vmware+SVN的配置和安装 验证SVN安装了没有 svnserve --version 查看CentOS自带JDK是否已安装. ◆输入:yum list installed |gre ...
- VC项目配置基础以及快捷键(收藏)
来自http://blog.csdn.net/phunxm/article/details/5082488 一.IDE基础配置 1.字体 VC6中“Tools→Options→Format→Font” ...
- Lync Server 2013中央管理存储:自动收集配置数据失败
Lync Server 2013在安装本地配置存储到配置中央管理存储的本地副本时候提示错如信息:自动收集配置数据失败. 打开Lync Shell,输入Get-CsConfigurationStoreL ...
- vmware centos7 网络配置
1. 在vmware创建centos虚拟机 2. 在cmd下看一下本机所处的网段,并对一下vmware上的配置 如果同样处于同一网段(192.168.aaa.bbb,aaa处一致就行),就可以直接开机 ...
- 系统安装后的linux和vmware的网络配置
一.1表示linux的版本 2表示linux内核的版本 3表示操作系统多少位 4.表示操作系统的名称 二.配置虚拟机网络 1.在办公室控制和使用服务器(机房) 2.远程连接 ###配置虚拟机 ...
- (转)淘淘商城系列——VMware添加已配置好的虚拟机
http://blog.csdn.net/yerenyuan_pku/article/details/72802323 我们有时候会碰到虚拟机环境搭建特别麻烦,很容易出错的问题,而这时我们又刚好有别人 ...
- 08配置基础路径 同时导出一个函数和一个变量 封装微信请求Api
地址===>https://www.bilibili.com/video/av58993009/?p=46 1==>配置基础路径同时导出一个函数和一个变量 var mynetwork= f ...
- VMware Workstation 10 配置Ubuntu环境
分享到 一键分享 QQ空间 新浪微博 百度云收藏 人人网 腾讯微博 百度相册 开心网 腾讯朋友 百度贴吧 豆瓣网 搜狐微博 百度新首页 QQ好友 和讯微博 更多... 百度分享 VMware Work ...
随机推荐
- AngularJS---Unknown provider: $routeProvider
AngularJS路由报错: Unknown provider: $routeProvider 根据先知们的指引,在网上爬贴,有翻到官方的解决文章. 原来在AgularJS1.2.0及其之后的版本中, ...
- hector_localization hector_salm rplidar同时编译
1.将hector_localization包clone到src文件夹 进行功能包依赖安装 cd test_ws rosdep update rosdep install --from-paths ...
- windows 配置squid反向代理服务器
发现Window版本的Squid 和 Linux 配置有点不一样 一.配置squid\etc目录1.squid.conf.default 拷贝一份重新命名为squid.conf2.cachemgr.c ...
- IOS与安卓的远程调试
本地调试H5页面方案总结 http://www.jianshu.com/p/a43417b28280 Fiddler 手机抓包 http://blog.csdn.net/gld824125233/ar ...
- SpringBoot Idea 启动报错 Process finished with exit code 1
问题描述:没有其他任何错误日志,只有Process finished with exit code 1 问题原因:Maven POM.xml问题造成 由于是properties是我直接从其他项目中拷贝 ...
- File 的基本操作
package xinhuiji_day07; import java.io.File;import java.io.IOException; public class FileTest { /** ...
- windows下python安装Numpy、Scipy、matplotlib模块(转载)
python下载链接 Numpy下载链接 python中Numpy包的安装及使用 Numpy包的安装 准备工作 Python安装 pip安装 将pip所在的文件夹添加到环境变量path路径中 ...
- Log4Net.Config配置信息《转》
看了log4net的简单使用之一_log4net介绍 大家对log4net组件应该有了大概的了解,下面再近一步介绍其在项目中如何应用. 1.Logger 所有的记录器都必须实现 ILog 接口,该接口 ...
- idea各种设置和学习
1. 去掉方法中的参数名提示 idea在Review时候的编码设置 idea在review代码的时候会会出现中文乱码,文件是GBK的,但是idea的字符集和项目的字符集都是UTF-8, 这时可以通过把 ...
- protobuf编译安装
为什么选择protobuf,而不选择thift和avro,原因大概几点吧,网上对比的文章很多,我主要关注以下几点 1.protobuf序列化性能最好,序列化后字节数最少. 2.protobuf是单纯的 ...