win10和server2016存储池和dedup小探
本帖最后由 shizitou50 于 2017-2-14 21:51 编辑翻到两个帖子:http://bbs.saraba1st.com/2b/forum.php?mod=viewthread&tid=1020269,http://bbs.saraba1st.com/2b/forum.php?mod=viewthread&tid=1078309
好奇心痒之下,自己也试着折腾了一下。(http://bbs.saraba1st.com/2b/thread-1289388-1-1.html
网上有的帖子主要是在win8和server2012的,win10和server2016的比较少,我自己试探了一些,分享一点经验~
主机是i5-4590,8g,浦科特M6s256G+希捷2T+东芝3Tx2,1511的win10 pro系统。这里的2016,都是指的server2016technical_preview_5_x64_dvd_8509035
首先是存储池:
[*]总的来说,win8和server2012的存储池算老一代,win10和server2016算新一代。老一代的池可以被新一代系统识别并(可选)升级到新一代,但新一代的池无法被老一代系统识别,但同一代中也有少许区别和不兼容:
2012的池可被win10识别并升级为win10的,升级后无法再被2012识别win10的池无法被2012识别win10的池可被2016继承2016的池无法被win10识别
[*]新老两代的共同点:用物理硬盘组成存储池,存储池中建立虚拟硬盘(可选普通、镜像、奇偶校验),虚拟硬盘上再分区(即卷)。一个系统中可以建立多个池,一个池中可以有多个虚拟硬盘,一个虚拟硬盘中可以有多个分区。win10中,把虚拟磁盘和卷两层统一为一个存储空间(卷和虚拟盘一样大),但实际可以在磁盘管理中缩小卷、新建卷等。
[*]win10必须把整块物理磁盘都加入存储池(会清空盘上所有数据),一块硬盘只能加入一个池;2012、2016可以只把物理磁盘中的未分配空间加入池(比如2T盘,建了0.5T分区,留1.5T未分配,就可以把1.5T加池),但必须把所有未分配空间都加入池(至少GUI里是这样,命令行不详)。
[*]物理硬盘属于哪一个池,这个池中有哪些虚拟硬盘,分别由哪些物理磁盘组成,这些信息都存储在物理硬盘上的那一个MSR分区中,因此哪怕换台电脑插上,只要是支持该代存储池功能的windows都能识别,也无所谓插上顺序,只要插上最少足够读取该虚拟磁盘的物理磁盘,就可以读取其中数据。
[*]新一代的存储池支持优化驱动器使用率(使数据在各个物理磁盘中均匀分布),老一代只能人工手动操作
[*]8和10原生不带分层加速和dedup,2012和2016支持分层加速和dedup。分层加速:把ssd作为缓存,hot数据(读取100次以上)移动到ssd中,或者也可以手动指定移动哪些文件,类似混合硬盘。
[*]几种虚拟磁盘格式:简单、奇偶校验的默认设置都非常傻逼。“简单”默认只有1列,也就是说raid0的坑爹抗风险能力,却没有raid0的速度(见下表的“简单1列”),类似磁盘管理中的跨区卷,要想读写能力上升必须需要用PowerShell指定列数为磁盘数才行(见下表的“简单2列”和“简单3列”,类似“带区卷”,即raid0,例:New-VirtualDisk -StoragePoolFriendlyName "池byWin10" -FriendlyName "简单2列" -Size 1TB -ProvisioningType Thin -ResiliencySettingName simple -NumberOfColumns 2);奇偶校验默认只有3列且单奇偶校验,也就是说哪怕7个物理盘组默认奇偶也只有2/3的有效可用容量、且只容许死亡一块盘,要提升容量利用率和容许磁盘损坏量也必须用PowerShell指定列数和容许磁盘损坏量(例:New-VirtualDisk -StoragePoolFriendlyName "池byWin10" -FriendlyName "双奇偶7列" -Size 1TB -ProvisioningType Thin -ResiliencySettingName "Parity" -PhysicalDiskRedundancy 2 -NumberOfColumns 7)。win10也可用上面的PowerShell命令建立双奇偶校验空间。镜像没什么好说的,基本可以认为是raid1。可以用下列命令查看虚拟磁盘的类型参数:Get-VirtualDisk | ft @{Expression={$_.FriendlyName}; Label="昵称"},
@{Expression={$_.ResiliencySettingName}; Label="raid类型"},
@{Expression={$_.NumberOfColumns}; Label="列数"},
@{Expression={$_.PhysicalDiskRedundancy}; Label="物理磁盘允许损坏数"},
@{Expression={$_.NumberOfDataCopies}; Label="DataCopies数"},
@{Expression={$_.ProvisioningType}; Label="配置类型"},
@{Expression={$_.Size / 1GB}; Label="Size(GB)"},
@{Expression={$_.FootprintOnPool / 1GB}; Label="占用池空间(GB)"},
@{Expression={$_.writecachesize/ 1MB}; Label="回写缓存(MB)"} -AutoSize[*]一块虚拟磁盘用到的物理磁盘数必须>=NumberOfColumns*NumberOfDataCopies,
虚拟磁盘类型 容量利用率Number Of DataCopies理论读取性能Number Of Columns必须满足Physical Disk Redundancy
n列简单11n*NumberOfDataCopiesn>=10
n列双向镜像1/22n*NumberOfDataCopies?(不确定,下同)n>=11
n列三向镜像1/33n*NumberOfDataCopies?n>=12
n列单奇偶(n-1)/n1(n-1)*NumberOfDataCopies?n>=31
n列双奇偶(n-3)/n1(n-3)*NumberOfDataCopies?n>=72
[*]2012里的双奇偶校验必须是固定容量类型的虚拟磁盘,但10和2016支持使用动态的
[*]我用Crystal DiskMark测的速度
sequential512k4K4K QD32
读写读写读写读写
希捷2T157.3151.953.2481.670.6541.21.5911.172
东芝3T一号 DT01ACA300196.4186.959.3181.690.7550.7541.9260.823
东芝3T二号DT01ACA300 200.419659.3483.10.7750.7611.880.713
简单3列520506.160.8988.230.8572.0764.6342.134
简单2列336.1340.450.5674.80.7131.3493.3341.325
简单1列187.2196.465.13109.30.8241.0282.8131.084
双重镜像195.918164.7375.410.8050.6494.5790.662
奇偶3列33634.8756.479.9470.7460.4342.6210.491
[*]windows的双奇偶校验算法非常坑,磁盘容量利用率为(n-3)/n而不是(n-2)/n……
然后是dedup
[*]是文件数据块级别的去重(两个1T的文件,只相差1byte,dedup后占用空间大约只有1T)。在dedup时吃几百近千MB的内存,dedup完毕后几乎不吃内存,我给2012虚拟机分配768MB内存足矣。dedup时磁盘读写大,但仅是速度慢,不阻止其它程序对文件的读写(操作是透明的)。不论对该类文件去重效果如何,把所有文件都转成专用的数据块(这一操作类似于复制后删除,对磁盘的读写也是,由此可估算速度:dedup速度约=同盘复制的速度),存在卷的根目录的System Volume Information里(隐藏不可见),文件原位置只留一个指针(占用空间很小)。所以如果把一个卷完全dedup后,理论上选中所有文件夹查看属性,大小是不变,占用空间应该变得很小(无论dedup率如何,因为产生的数据块都到那个隐藏文件夹里去了,这里看不到数据块的空间占用,这里占用空间的只有指针文件),一般不足1G(或者文件很多的话最多几个G)。
像http://bbs.saraba1st.com/2b/forum.php?mod=viewthread&tid=1020269中84楼贴的图,大小2.28TB,占用670GB,实际上肯定是有600多G文件还未dedup(未转换为数据块),真正完成后占用应该是不到1G的。压缩率不是从这儿看的,而应该用“卷属性的已用空间”除以“全选、属性的总文件大小”。(无法查看特定文件或文件夹的压缩率,只能看整个卷的)
例如,我有个卷放的系统备份、Windows安装iso、Onenote备份等等杂物仓库,全选其中文件大小是40.5GB,占用空间是22.3MB;卷的已用空间是31.0GB,则去重率=(40.5-31)/40.5=23.5%
[*]对视频文件效果很差(我对160G的电影、动画片视频试了下,只删去了0.5G),http://bbs.saraba1st.com/2b/forum.php?mod=viewthread&tid=1020269这帖子里14楼说3.Dedup对ISO,VHD这种重复性比较高的文件去重率可以到90%,各种番各种老师也可以到50%。3T存储池实际可用空间超过10T。
有误不可信。iso、vhd去重率高是真,但是“各种番各种老师到50%”,我觉得99%的可能性是他存了两份文件(比如文件名不一样)自己不知道或者去重率计算方法不对。
[*]win8.1可以用这个方法开启2012的dedup:http://wenzhongxiang.blog.51cto.com/6370734/1636286
[*]win10有人用这个方法开启了2016的dedup,但是我照做失败了:http://arthurremy.com/index.php/ ... ation-on-windows-10
[*]2012的dedup无法在win10中识别,2016的dedup无法在win10、2012中识别。
[*]2012、2016的dedup卷共享给win10是可以正常识别使用的。
——————————————————以下是2017.02.11更新——————————————————
之后不久就有个哥们也写了篇类似的:http://blog.sina.com.cn/s/blog_6a975f1d0102woe1.html,也挺详细,可以和我的互为补充。
他里面提到的很重要的一点:
1607的存储池不兼容1511,切记,切记。
即win10_1511的存储池可识别且升级为1607的,但1607的不能被1511识别。
http://bbs.saraba1st.com/2b/static/image/hrline/5.gif
之前有一个可以评估开启dedup可节约空间的小软件忘记介绍了:DDPEVAL ,
DDPEVAL D:评估对D盘Deduplication的效果(开启后能节省多少空间等),方便我们选择是否应该开启Deduplication
http://bbs.saraba1st.com/2b/static/image/hrline/5.gif
另外,我一直觉得3个机械盘组成的奇偶校验的虚拟磁盘连续写入能力太差,经我后续折腾,发现了一个能提升3-5倍连续写入速度(从原先的35MB/s狂涨至165MB/s以上)的方法,代价是约1G内存。方法如下:
[*]不要把物理磁盘直接加入存储池,而是在这些物理磁盘上分别各建一个VHDX文件(一般是和所在物理磁盘容量一样大或稍小一些,动态、静态的随便,我是懒就选的动态,反正速度只差一点),再把这个VHDX挂载、加入存储池。
[*]安装PrimoCache软件,对VHDX文件所在的卷开启256MB以上(推荐1GB及以上)的一级缓存,缓存策略选“仅写”或“读写”(我选读写),延时写入选10秒或更长(我选10秒);高级设置中写入模式选“均衡”(非常重要!),勾上“写入后释放相应缓存”、“待机时刷入所有缓写数据”。
这样得到的奇偶校验虚拟磁盘,连续写入速度从原先的35MB/s狂涨至165MB/s以上,从SSD拷大文件到奇偶校验盘速度如图
http://ww1.sinaimg.cn/large/7133a6f7gy1fcmn75hrx2j20cc0853zo.jpg
代价就是“第2步中设置的一级缓存+额外的约500MB=起码750MB”内存、一点CPU性能(写入时CPU总使用率升到了38%,静止时是10%,即i5-4590约28%的使用率)以及内存缓写的断电风险(所以前面我只选了10秒延时,这个就不多展开讲了)。
注意,这是真正的连续写入速度,不是仅在内存缓存中写入,因为上面这图里已经拷了10多个G的数据、早已超出我设定的2G内存缓存了,开头那一段高速才是因为写入内存缓存造成的。
感谢分享~
我个人用server2012的感受,dedup率很低,7T多的资源,只减少了10%不到……没有吹得那么美好 block-level的dedup去重能力这么强?
分块不固定并且不一定是2^n? 普通家用组raid10,硬raid卡、intel主板芯片raid、win存储池,有没有优缺点比较? 存储池对我最大的意义就是所有文件都在一起
以及可以做镜像 感谢分享 有空研究一下这个 存储池的重建速度如何 存储池对我最大作用在于重要数据(小说漫画游戏照片视频)镜像模式,不重要数据(没错就是bdmv)不用看那么多盘符。全电脑就三个盘看起来省心,也好找资源。 马克。
记得说dedup对视频没什么效果。没具体操作过。
16什么时候有正式版呢。 有没有类似winrar恢复记录那样的功能?即使出现个别坏道也能恢复出来文件 dedup对视频去重几乎没有的,浪费一大堆CPU和内存资源,建议只在文档的卷上启用 低商体 发表于 2016-7-6 16:26
有没有类似winrar恢复记录那样的功能?即使出现个别坏道也能恢复出来文件
这个在奇偶校验就有了的啊,允许挂一块硬盘不影响数据,自然可以个别坏道也恢复出来 最好还是别跨物理硬盘建池... dedup最大的用处是备份啊,例如以前一个excel文件更新了,备份的存储周期内就要存新旧两个文件,现在在周期内只要存一个文件和更新的文件块。
而且备份可以做到天天是全备份,差异后台自动计算。
存储本身使用dedup这类技术意义真的不大,除非你有大量文件有大量版本,例如项目的版本管理系统
—— 来自 ONEPLUS A0001, Android 4.3 mark 谢谢楼主做出的说明,让我再重新安装win10的时候更有信心了!
不过还有三个疑问,还望解惑,谢谢!
1.dedup是否会降低文件的安全性?
我现在组的双向镜像,然后又把重要文件再复制了一遍放在_backup文件夹里面
如果使用去重之后,原始文件和_backup里面的副本是完全相同的,在磁盘上的物理储存应该会被完完全全的抹掉一份,所以文件安全性下降一半,这样理解对么?
2.如何更新储存池里面的物理驱动器?
现在是5个硬盘,2T 2T 1.5T 250G 250G,最近想把两块250G的从储存池中拆出来,做离线备份用,然后再添加一些大硬盘到储存池中去
但是在管理储存空间里面只看到 添加驱动器,没有看到移除驱动器。。。应该如何操作呢?
3.据说在储存池中添加SSD会增强文件读写性能?
是这样的么?有个闲置的120G intel530,不知道加进去有效果没有,还是说需要大容量的SSD加进去才有效果? jose015 发表于 2016-7-6 14:12
马克。
记得说dedup对视频没什么效果。没具体操作过。
16什么时候有正式版呢。 ...
见主楼dedup第2点 Microsoft 发表于 2016-7-6 16:57
最好还是别跨物理硬盘建池...
愿闻其详 shizitou50 发表于 2016-7-7 00:58
见主楼dedup第2点
嗯。看到了。
那楼很久以前爬过一遍,现在有点印象不清了。
隔壁坛经常逛导致两边有点错乱。 本帖最后由 shizitou50 于 2016-7-7 01:11 编辑
mgl 发表于 2016-7-6 22:46
谢谢楼主做出的说明,让我再重新安装win10的时候更有信心了!
不过还有三个疑问,还望解惑,谢谢!
1.是的,重要文件在dedup卷存完全一样的两份在安全性上没啥意义。不过你可以当作是定期备份,然后放心大胆地改其中一个嘛
2.管理存储空间→物理驱动器→为删除作准备→准备中……→准备完成!→删除
3.如果是指分层功能的话,补充下主楼第6点:2012和2016可以增强,产生类似混合硬盘的效果,但需要进行一定的设置,不是加进去就行。120G足够了。win10没有分层功能。能否折腾把2016的移植过来也不详。
如果不是指分层,而是指直接加进的话我倒是不知道会发生什么……
想用ssd作缓存的话,我另外推荐一个软件:http://www.romexsoftware.com/zh-cn/primo-cache/index.html shizitou50 发表于 2016-7-7 01:09
1.是的,重要文件在dedup卷存完全一样的两份在安全性上没啥意义。不过你可以当作是定期备份,然后放心大胆 ...
偶记得这软件不错,就是贵。而且ssd不能做写入缓存,只能拿内存,那样很不安全。
mgl 发表于 2016-7-6 22:46
谢谢楼主做出的说明,让我再重新安装win10的时候更有信心了!
不过还有三个疑问,还望解惑,谢谢!
其实最大的安全隐患是对老软件的支持。
偶当时也玩了很久win8.1的dedup,但在有一次转移数据的时候,由于用的是老软件转移数据,无法识别整个对应,只拷贝了那些0kb或残缺数据的文件到指定文件夹,而没有把这些文件对真正数据位置的链接弄上,然后偶就删除了原文件,造成了1tb的数据损失。而且那时候对6tb的gal做完也只能省掉200g而已,还不如储存池raid5形式下对空间损耗的多,所以后来偶就直接上硬件raid了。 shizitou50 发表于 2016-7-7 01:09
1.是的,重要文件在dedup卷存完全一样的两份在安全性上没啥意义。不过你可以当作是定期备份,然后放心大胆 ...
谢谢解答!
关于删除磁盘,还是没有找到呢。。。是不是因为磁盘空间紧张所以不让删?
osk666neo 发表于 2016-7-7 06:20
偶记得这软件不错,就是贵。而且ssd不能做写入缓存,只能拿内存,那样很不安全。
...
SSD可以的 mgl 发表于 2016-7-7 07:44
谢谢解答!
关于删除磁盘,还是没有找到呢。。。是不是因为磁盘空间紧张所以不让删?
是的 我问下,LZ有没有试过对ISCSI磁盘做储存池有效不? shizitou50 发表于 2016-7-7 08:51
是的
但是我已经没有多余的SATA接口了。。。
那是不是只能强拔一个250G,插一个新的大的上去等他修复,然后再强拔一个新的250G,再等他修复? 全物语 发表于 2016-7-7 08:52
我问下,LZ有没有试过对ISCSI磁盘做储存池有效不?
不懂iscsi… mgl 发表于 2016-7-7 09:18
但是我已经没有多余的SATA接口了。。。
那是不是只能强拔一个250G,插一个新的大的上去等他修复,然后再 ...
似乎可行。但我没试过… 全物语 发表于 2016-7-7 08:52
我问下,LZ有没有试过对ISCSI磁盘做储存池有效不?
你都已经上ISCSI了,一般在存储端已经做好了RAID
建议不要再上ISCSI了,徒增复杂度,出错概率又上升 shizitou50 发表于 2016-7-7 10:34
似乎可行。但我没试过…
嗯,回头去试试。。。
感觉拔了俩,只插一个回去,他还会嚷着让我再插一个回去补上 shizitou50 发表于 2016-7-7 08:49
SSD可以的
是写入,而不是读取哦。 全物语 发表于 2016-7-7 08:52
我问下,LZ有没有试过对ISCSI磁盘做储存池有效不?
这种池子的一个特点就是配备对硬盘的长期状态检查,时刻看着是否有问题,
iscsi虽然做池子没问题,但也丧失了对状态检查的能力。
不过以前好像看个某种直通可以做到,可以试试找找,印象中不是普通家用电脑可做到的。 osk666neo 发表于 2016-7-7 12:09
这种池子的一个特点就是配备对硬盘的长期状态检查,时刻看着是否有问题,
iscsi虽然做池子没问题,但也丧 ...
我是这样想的,如果我有个NAS,但是我又不希望通过SMB的协议的映射网络驱动器对空间进行管理
那么我用ISCSI的话,这个WINDOWS的储存池有用吗?有用的话,那么里面各种功能能不能发挥作用? win10能不能整个储存池做内网共享 存储池只支持SATA、SAS和NVME。明确不支持ISCSI和FC
2016还可以做分布式存储池,类似于vmware VSAN osk666neo 发表于 2016-7-7 12:07
是写入,而不是读取哦。
试了下,真的不行耶…之前都没注意到,本来以为肯定也可以写入的 outel 发表于 2016-7-7 13:07
win10能不能整个储存池做内网共享
存储池的虚拟硬盘的卷可以共享 比较关心奇偶3列写入时CPU占用率,楼主可以说明一下么 kulanyee 发表于 2016-7-7 17:08
比较关心奇偶3列写入时CPU占用率,楼主可以说明一下么
资源管理器的CPU占用率3%-30%不等,我不知道你说的是不是这个