在公司当前环境中,VMware虚拟化环境承载着大约80%的应用系统的运行。随着应用系统和虚拟桌面需求增多,尤其各种业务系统突发增多,传统的存储规划已经无法满足要求,需要灵活的应对VMware环境存储需求的方案。随着各种软件定义存储的发展和使用,我们也在尝试和寻找一个比较成熟的针对VMware环境的软件定义存储方案。
存储方案的基本原则:
- 灵活快速部署,通过监控当前环境存储的状态能够通过快速部署应对存储性能和容量的需求增长。
- 在满足性能要求的前提下,降低成本。
- 通用型存储,以便该存储方案能够应对其他应用场景的需求。
结合VMware所兼容的存储类型接口,在软件定义存储的选型中,我们对当前主流的几款软件定义存储做了一些测试以及分析,综合下来有以下特点:
一些开源软件定义存储已经可以通过部署iSCSI Gateway提供block存储挂载给VMware ESXi主机使用,但目前此方案还不成熟,比如Ceph。
一些存储公司的软件定义存储产品已可以与VMware环境集成,但有些产品集成度过高,不够通用;还有些产品可以独立部署,作为通用存储使用,除了能够提供对VMware存储集成支持,也可适用于其他应用场景。在这一点上,比较符合我们选型前所设定的基本原则。
那么,如何对此存储集群进行设计?
在设计前,需要结合当前VMware运行环境的特点以及容量和性能需求做统一考虑:
- 通过监控当前VMware环境,我们发现,在此环境中存储的读写比例约为7:3,读操作明显更多
- 结合虚拟桌面的特点,也更多的是读操作
- 容量需求
- 虚拟桌面的镜像存储需要更优的读性能
结合容量以及未来增长需求,我们考虑此存储集群的存储节点不会超过16个,我们最终按以下架构进行了***期部署:
- 采用两套独立的10gb网络用于不同的通信:
1. Private network用于存储节点之间通信,作为数据rebuild和rebalance网络
2. Public network用于存储客户端与存储集群通信,作为数据存储网络
- 采用6台X86服务器作为存储节点,每台服务器配置:
1. 10K SAS 1.2TB × 20
2. SSD 480GB × 4
- 存储池和Cache设置:
1. 根据硬盘分类将集群分为两个存储池:SAS pool和SSD pool
2. 使用一部分存储节点内存作为缓存
3. 每台存储节点使用一块SSD作为SAS pool读缓存
4. SSD pool主要用于存放虚拟桌面镜像
- 容错配置:
为了应对服务器故障,同时由于存储集群节点较少,我们设置每台服务器作为一个Fault set,同时预留一台服务器的容量空间作为spare space,可以应对一台服务器故障。随着集群增大,可以灵活更改此预留空间比例。
我们通过FIO对此存储集群做了一个简单的性能测试,结果如下:
当然,VMware环境的实际IO类型要比以上的测试更为复杂,目前此套集群已经能满足当前需求。我们也将不断根据实际使用情况和需求,逐步增加集群存储节点,结合cache技术,进行存储性能优化。