PCEVA,PC绝对领域,探寻真正的电脑知识
打印 上一主题 下一主题
开启左侧

深入了解微软操作系统自带的Storage Space的分层存储

[复制链接]
跳转到指定楼层
1#
点击数:16345|回复数:25
从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
2#
nighttob 发表于 2014-9-18 15:11 | 只看该作者
MS的这东西槽点还是多……
两年了还是个半成品的样子,细节还要用PS来调整。

这俩250G HDD就那么惨么,RAID 0了还不到100MB/s的最大读取速度?

点评

由于池中只有1块SSD,所以虽然选择了Simple,但Column数只有1,并非真正的条带。  发表于 2014-9-24 11:51
3#
zhangzh0199 发表于 2014-9-18 15:42 | 只看该作者
最喜欢看这种技术性文章了。
4#
doymll 发表于 2014-9-18 16:07 | 只看该作者
这个对于个人组建服务器,来做软阵,是不是就OK了.
其实我看归看,还不知道具体个人用的话,是什么用途好点,或者说小公司
5#
larryexchange  楼主| 发表于 2014-9-18 16:36 | 只看该作者
本帖最后由 larryexchange 于 2014-9-18 16:37 编辑
nighttob 发表于 2014-9-18 15:11
MS的这东西槽点还是多……
两年了还是个半成品的样子,细节还要用PS来调整。


这不能算槽点吧,现在MS在主推的就是无UI(Server Core),都通过PS命令行或远程管理管理。有UI的功能永远只是PS的一个子集。
6#
Calvi 发表于 2014-9-18 16:59 | 只看该作者
我一直都觉得win8最大的进步就是对硬盘的优化,尤其是SSD。感觉,无依据
7#
nighttob 发表于 2014-9-18 17:01 | 只看该作者
larryexchange 发表于 2014-9-18 16:36
这不能算槽点吧,现在MS在主推的就是无UI(Server Core),都通过PS命令行或远程管理管理。有UI的功能永 ...

也是
MS的东西要么别管,要么全手动优化
8#
红色狂想 发表于 2014-9-18 17:01 | 只看该作者
不错,这个Storage Space组件在即将发布的win9系统中应该有进一步的完善。总的来说,这个分层存储功能可玩儿性十足,拿来屯片儿热度管理非常合适。。。就是不知道万一系统崩溃需要重做时,这个软raid0中的数据还能否恢复原样,要是其中一块盘挂了呢?
9#
iFive 发表于 2014-9-18 17:16 | 只看该作者
红色狂想 发表于 2014-9-18 17:01
不错,这个Storage Space组件在即将发布的win9系统中应该有进一步的完善。总的来说,这个分层存储功能可玩 ...

重装系统不影响
10#
larryexchange  楼主| 发表于 2014-9-18 17:48 | 只看该作者
红色狂想 发表于 2014-9-18 17:01
不错,这个Storage Space组件在即将发布的win9系统中应该有进一步的完善。总的来说,这个分层存储功能可玩 ...

RAID0(准确的说在Storage Space中叫“简单”或Simple)当然在一块盘坏的时候没法保护数据,但是Storage Space中你可以选择镜像,两个镜像甚至三个镜像,或者选择Parity的方式(类似RAID5)。
11#
hqj169 发表于 2014-9-18 21:15 | 只看该作者
学习了
12#
kylinzx 发表于 2014-9-18 22:18 | 只看该作者
又学到一点存储的知识。
13#
wanganjun 发表于 2014-9-18 23:06 发自PCEVA移动客户端 | 只看该作者
看起来挺不错的
14#
seele0001 发表于 2014-9-18 23:06 | 只看该作者
技术贴,要支持一个,很长知识!
15#
科比加油 发表于 2014-9-18 23:57 | 只看该作者
还停留在WIN7的路过
16#
noskin 发表于 2014-9-19 01:05 | 只看该作者
学习了,不过所有的硬盘已经准备迁移至nas,主机就留个ssd跑系统
17#
a77d8d9 发表于 2014-9-19 13:17 | 只看该作者
感谢lz分享,学习了~
18#
ChineseBoy 发表于 2014-9-19 19:17 | 只看该作者
这不就是储存空间吗
19#
板砖财 发表于 2014-9-20 09:34 | 只看该作者
其实我关心这种Raid性质的复合存储,在重装系统或者重装一台机器以后,如何一个个硬盘添加回系统里面,然后如何操作才能够找回原来的文件数据和存储卷。

这是最重要的,没解释清楚这一点,我永远都不敢启用Raid性质的存储系统,单个驱动器存储来保证数据安全。
20#
larryexchange  楼主| 发表于 2014-9-20 19:53 | 只看该作者
板砖财 发表于 2014-9-20 09:34
其实我关心这种Raid性质的复合存储,在重装系统或者重装一台机器以后,如何一个个硬盘添加回系统里面,然后 ...

Storage Space是将有关存储池和Storage Space的相关信息存放在池中所有的磁盘上,所以磁盘相互之间知道彼此都有谁。即便你把所有磁盘重新插入新的服务器中,所包含的信息也会带入新的服务器,此时在新的服务器上使用这个存储的方法就是标记为这台服务器拥有对这个池的读写访问权限即可。完了以后虚拟磁盘只要直接挂载就行。

官方的说明见下面的链接:
http://social.technet.microsoft.com/wiki/contents/articles/11382.storage-spaces-frequently-asked-questions-faq.aspx#What_happens_to_Storage_Spaces_when_moving_physical_disks_between_servers

其实如第一贴中说说Storage Space的功能很多,这个帖子只是着重通过自己的测试介绍并验证了它的分层存储功能的实现方法和特点。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部