伴随这两年SDDC(软件定义的数据中心)越来越热,作为其中重要的建设区块的软件定义存储(SDS)也越来越多地被各行业,各类规模的数据中心所使用。作为SDS厂商之一的微软,面对这块蛋糕当然不甘人后,从Windows Server 2012开始,微软隆重推出了他的SDS解决方案--Storage Space。该版本还是需要建立在共享磁盘柜(JBOD)的基础上,和其他主流SDS厂商一样,其目的是通过将JBOD里各类磁盘加入到一个或多个存储池,再从存储池里划分存储空间(Storage Space)给单台主机使用或者多台主机共享的过程,帮助用户精简架构,简化管理及实现按需灵活扩展。服务器连接JBOD盘柜也不再需要昂贵的RAID卡,而只需要认证的SAS卡即可,数据保护及性能优化等高级功能则以软件定义的方式基于每一个存储空间实现。相比传统SAN的使用维护,SDS的确彰显出易于部署,易于使用和易于扩展的特点。

       到了Windows Server 2016,该功能有了很大的变化,首先从架构上来说,企业用户依然可以使用MS Failover Cluster功能将多达16台服务器配置成一个S2D群集,每台服务器不再需要外接JBOD,而是直接贡献出配置的内部磁盘组成存储池。每台服务器通过虚拟的Software Storage Bus能够“看到”其他节点的物理磁盘。这样的架构就比其上一代更加简化,和VSAN及Nutanix的产品趋于一致。节点和节点的网络连接建议采用支持RDMA的冗余万兆网卡,以此提高安全性及降低数据交换的延迟。如果贡献存储的服务器节点同时也跑业务,那么这也就是热门的超融合架构(HCI);也可以把存储节点和业务节点分开,存储空间以CIFS方式共享给前面的业务节点,这两层架构各自按需扩展。第二,服务器的磁盘可支持PCIe NVMe SSD、SSD和HDD,S2D会默认将性能最好的磁盘作为存储总线缓存(Storage Bus Cache),为每个节点提供读/写缓存,同时也作为存储池的元数据存放地。该功能可在配置时自动或者通过手工指定完成。比如服务器里同时配置了以上三种类型的磁盘,那么PCIe SSD将被用于存储总线缓存,SSD和HDD磁盘将被用于容量层。值得注意的是,用Powershell命令可以看到针对磁盘类型的指定里有SCM/SSD/HDD三种,这里SCM是指“Storage Class Memory”,是JEDEC标准里的下一代极高性能的存储设备,当前Windows Server 2016能够支持该标准里的NVDIMM-N,而vSphere 可能需要等到明年才能支持。NVDIMM-N简单地说就是将DRAM芯片和NAND Flash芯片放于同一个内存模块内,辅之以大电容或者电池做数据保护,当系统意外掉电时,通过大电容或者电池,能够将DRAM里的数据直接搬到NAND存储芯片里,这样就实现了近乎永久的保存,该过程对于操作系统及应用透明。使得系统既能够享受近乎DRAM几十纳秒级别的数据写入延迟,又能得到意外掉电后的数据保护,真正达到消除系统内存储的性能瓶颈的目的。第三,在Windows server 2012/R2,其标准版也能够支持Storage Space,但是到了W2016,只有数据中心版才包含S2D功能。在数据保护方面,除了2-way  mirror ,3 way-mirror以外,也能支持Erasure Coding(single parity/dual parity)以提高磁盘空间利用率。另外,和之前的版本一样,微软将S2D的很多高级配置及参数调节功能仅仅放到了Powershell里,对于习惯用图形界面进行配置管理的用户需要注意。下面的实验也基本在Powershell里进行。Storage Space/S2D都有自己的硬件兼容列表,部署前务必仔细核对自己的硬件是否能够支持。比如S2D当前针对戴尔服务器HBA卡的认证就只有HBA330。具体信息可参考下面微软官网:

Storage Space 硬件认证列表:

https://www.windowsservercatalog.com/results.aspx?&bCatID=1642&cpID=0&avc=10&ava=0&avt=0&avq=0&OR=1&PGS=25&PG=9

 

S2D 配置需要满足的硬件条件:

https://docs.microsoft.com/en-us/windows-server/storage/storage-spaces/storage-spaces-direct-hardware-requirements