从Windows 8和Windows Server 2012开始微软的操作系统中集成了一个叫做Storage Space的存储控制组件。也看到这里的兄弟用过,但是毕竟能够花时间深入了解它的人并不多。也许还有人有疑问,很多年前Windows的磁盘管理器就可以做软RAID了,为什么还需要这个组件?故而将我所知分享在这里,各位如果用Windows 8或Windows Server 2012以及以后的操作系统,在需要做软RAID的时候至少多了一个选择。
Storage Space的功能很多,各种(类)RAID、群集、Dedup、分层存储。这篇帖子将着重介绍和测试它的分层存储(只有Windows 8.1和Windows Server 2012 R2支持)。有关Storage Space的概览性介绍请直接访问官网http://technet.microsoft.com/library/hh831739.aspx。
首先介绍一下我的测试实验环境,这是一台DELL T3400 台式机,由于年代久远,只能支持SATA2,被人遗弃。楼主拾来同T7600形成高低搭配。
DELL Precision T3400
- CPU: Intel至强X3360
- 内存: 16GB
- 系统盘: Intel 710 300GB SSD
- 操作系统:Windows Server 2012 R2
测试对象:
SAMSUNG PM851 256GB + Seagate 3.5寸 7200转250GB HDD两块
设备管理器磁盘类中最后三个就是这次用来构建分层存储的SSD和HDD。
首先是用傻瓜式的向导把256GB的SSD和两块250GB的HDD加到新创建的存储池中。Storage Space能够正确识别它是SSD还是HDD。
接着就是创建一个虚拟磁盘,此时从上图也可以看出默认启用了1GB的回写缓存(这个的作用后面会详细说)。由于我的存储池包括SSD和HDD,向导会问你是否要创建分层存储。这里我建了分层存储,并且两块HDD选择了做条带(类似传统的RAID0)。
从上图可以看到,最终这块混合虚拟磁盘包括了三块磁盘容量的总和。
接着用一些常见的测试工具测试了这块混合虚拟硬盘的性能。
首先是AS SSD。对于机械硬盘用AS SSD需要耐心,混合硬盘也一样,虽然4K-64Thrd写的性能稍好但读的性能和普通机械硬盘没有区别。
TxBENCH给的结果也类似,只是QD=32的4KB写没有AS SSD的夸张,读却好不少。
接着是ATTO,同样结果同普通硬盘无二。
不过HD Tune的结果就很有趣了,很明显前1/3测的是SSD,后2/3测的是HDD。这和SSD同HDD容量的分布是吻合的。
到这里需要讲讲Storage Space分层存储的工作方式,他有一个Heat Map,以每1MB为单位统计数据块的热度,然后默认是在每天凌晨1点进行热数据的搬移操作,从HDD搬到SSD。这个搬移操作不影响线上应用。而且前面提到的默认1GB回写缓存,是利用了SSD的一部分空间为整个虚拟机磁盘提供一个回写缓存从而提高随机的写性能。
为了验证这一工作原理,我用IOMeter在混合硬盘上创建了一个5GB的测试文件(大于回写缓存大小),接着做了一个10分钟队列深度64的4KB随机写测试。从下面的测试结果可以发现,最高的IOPS可以到18,245,而大部分IOPS还是300-1500之间波动。并且整个IOPS曲线有着明显的规律。这应该就是那1GB的回写缓存被一次次填满、释放再填满的过程。换言之,对于Storage Space的分层存储,数据首次真正落盘是在HDD上,SSD此时仅仅用于回写缓存,不过我们可以通过增大缓存(PowerShell命令行)来提高此种情况下的写性能。但也不能增加太多,如果把整个SSD都作为了回写缓存,那么后面的热数据块就没有足够的空间容纳了。至于到底多少合适,后面再说。
再来看看10分钟QD=64, 4KB随机读的表现。这也就是普通机械硬盘两块做RAID0的表现了。再次说明落盘的数据在HDD上而不是SSD上,哪怕一个数据块都没有。
那么何时这些数据库会搬移到SSD呢?前面我们说过了在每天凌晨1点。不过我可以手工执行那个计划任务,让其立刻启动。
defrag.exe,这个看着是不是很眼熟?在新的操作系统中,这个已经不仅仅用于磁盘碎片整理,也用于热数据块的迁移。所以现在这个程序的正式名字叫做磁盘优化而非简单的碎片整理。或者我们也可以手工执行这条命令。
上面这条命令还生成了一个报告。
这个报告告诉我们经过次轮分析,需要多少容量的SSD,可以让多少百分比的IO请求由SSD提供。除了运行磁盘优化以外,我们还可以通过Powershell命令Set-FileStorageTier来指定特定文件固定在SSD或者HDD中。
优化后,再同样跑刚刚两个测试,看看有没有什么不同。同样的测试用例,同样的5GB数据文件,此时写的IOPS已经稳定在26,000。
而读也稳定在27,000。
很明显经过优化我们的测试文件iobw.tst已经被迁移到SSD层去了。
最后要说的是,Storage Space很多功能是藏在Powershell中的,界面都是傻瓜式的。比如回写缓存的大小,条带的大小,条带Column的数量在UI上都是没有地方配置的,必须通过PowerShell。而且如果HDD和SSD的识别有问题,也可以通过Powershell指定。
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|