首页
社区
课程
招聘
[讨论]用固态硬盘做缓存区利用磁盘还原实现读写效率提升
发表于: 2014-5-15 13:44 10650

[讨论]用固态硬盘做缓存区利用磁盘还原实现读写效率提升

2014-5-15 13:44
10650
*在开启还原之后,所有对还原卷的写操作将被写到另一个地方,而不会真正写在磁盘上。这里所说的另一个地方可以称为转存处。
*在开启还原之后,所有对还原卷的读操作将分为两种情况处理:一种情况是读了开启还原之前就存在的内容,这种情况就按照正常的读取方式从还原卷上读取。另一种情况是读了开启还原之后写到还原卷上的内容,这种情况将会从转存处把之前写过来的内容读取出来。
*重启之后转存处的数据清零,所有在还原开始后被写过的数据也就不复存在了。
----------以上是寒江独钓关于利用磁盘还原驱动为了实现还原,一种简单的思想。

前段时间讨论的时候,有人提出利用这样一个磁盘还原驱动,实现一个读写操作重定向,把转存缓冲区用SSD固态硬盘代替机械硬盘,这样可以提高效率。

有人说,我可以直接把我要使用的文件复制到固态硬盘,不过如果使用一个磁盘还原转存机制这样一个驱动,可以动态将文件放入固态硬盘,而且反复写入的话,可以已最后一个版本为准,读取的话如果已经写入过一次可以直接来固态硬盘缓存区读取,都不必直接去硬盘读写。
有人又说,内存有类似的缓存机制,但是遇到体积很大的文件,如果一直划个内存做缓存区,是不划算的。
所以可以利用固态硬盘来折中一下,做到像内存一样的缓存机制。

理论上这样对于一个经常反复读写的文件,会有效率提升,经过我自己探索,我发现这样的办法只能对于那种文件很大,反复读写才有效果,一般像游戏程序这样的是直接装入内存,而平时我们反复编辑的都是一些零散的小文件,直接到硬盘读写也不会太耗时。真正一个很大的整个文件反复读写的情况还是很少见。
又有人说了这个方法目的是在服务器上用的,服务器的数据IO应该不是内存能承载的,以上讨论的内容为背景,希望大家讨论一下,怎么证明使用SSD做为缓存提高了读写速率。这个方案有实用价值吗? 有什么指正,提议,建议都可以。。 谢谢哈

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (17)
雪    币: 468
活跃值: (52)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
现在都用RAMOS了。也有用内存做缓冲区的还原软件如shadowdefender等。
2014-5-15 15:47
0
雪    币: 53
活跃值: (42)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
shadowdefender是类似网吧的还原,和我上面说的那个磁盘还原是一个意思吧?

我的意思是,利用这个转存的方式,把对大数据的读写操作,用一个固态硬盘做缓存区代替直接对机械硬盘的读写。

RAMOS能装进系统,但不能装进一两百G的数据,比如说一个服务器频繁处理几十G的数据,你不能全部都一直放在内存缓存,直接读写机械硬盘又太慢,利磁盘还原做重定向,动态的把数据划入固态硬盘而不直接读写机械硬盘来提高读写速度。

当然我自己也没完全想明白,也有些概念不清楚,也在找这样做有什么好处的理由,所以讨论讨论
2014-5-15 16:05
0
雪    币: 2161
活跃值: (750)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
4
磁盘阵列可以么?
单硬盘始终有瓶颈,SSD也是如此,不如把串行扩展成并行
正如现在的CPU,主频是瓶颈,向多核发展

当然做研究的话我说的就没意义了。
2014-5-15 16:09
0
雪    币: 468
活跃值: (52)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
shadowdefender可以使用一部分内存,然后更多的数据再缓冲到硬盘,形成内存+硬盘的缓冲。现在的还原软件都是这个趋势,不仅光是缓冲到硬盘,也可以部分缓冲到内存。
ramos支持操作系统放入ramdisk,你可以再生成一个更大的ramdisk,设为D盘,把数据库放在D盘上面。现在内存都是往大里安装的趋势,据说128GB的内存条已经出来了。
你说的设想是在本来是机械硬盘的数据库,新开发一个还原软件把其缓冲到SSD上面,这种思路可以。但是现在可以使用已有的软件来实现。可以直接把数据库放在SSD上面,而不是放在机械硬盘上面,然后用shadowdefender保护该分区,因为该分区本身就是SSD,所以达到SSD的极快速的读写。
RAID方式对于4K读写没有提高。
2014-5-15 16:16
0
雪    币: 608
活跃值: (648)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
6
理论可行啊
但是要考虑一点 成本
2014-5-15 16:50
0
雪    币: 53
活跃值: (42)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
确实,我觉得有很多成熟的方案可以解决这些问题,经过我探索,我觉得这个利用磁盘还原实用价值有待考量。暂时就这样结贴了,如果其他朋友有想说的,建议的,指正的,都可以补充。

回复5楼aait   举个例子:数据库太大了,固态硬盘也装不下,而且不一定所有文件都是经常访问的,我最好动态的把部分访问的文件放入缓存,但是发现放内存也放不下,那折中一点,放到一个小的固态硬盘。
当然我对服务器、数据库不熟悉,实际情况是怎么样的我也不是很清楚。
2014-5-15 16:59
0
雪    币: 53
活跃值: (42)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
回复6楼Morgion: 这个是降低成本的一个方法啊,不用买大容量内存,也不用买大容量固态硬盘,用比较便宜的大容量机械硬盘存储,用小点的固态硬盘缓存,让读写速度提升。
2014-5-15 17:02
0
雪    币: 608
活跃值: (648)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
9
成本是一方面 再一个就是 方便性
假如一个单位机房需要安装还原,500台电脑。如果要是不考虑成本,你也得机房管理员挨个拆开机箱再安装一个SSD?
再一个,SSD的寿命问题。磁性介质存储数据的原理是磁化磁性介质,而SSD是改写闪存芯片。这就带来一个问题,闪存芯片的寿命。FLASH闪存写入数据之前是要先擦除以后才能写入,你如果把SSD闪存芯片作为缓冲盘,那SSD的擦写次数就太多了。FLASH闪存的擦写次数是有限的。
2014-5-15 17:10
0
雪    币: 53
活跃值: (42)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
回复 9楼Morgion:具体固态硬盘寿命怎么样我不是很熟悉,但我最近浏览收集这些资料来看,我觉得其寿命应该能坚持到在其被淘汰之前。

摘自其他地方:
当我们对所选择的SSD进行测试时,软件会自动在磁盘的根目录下用具有一定规则的顺序代码创建文件,并对所写入的文件进行读取验证,文件的大小是我们所设定的磁盘容量大小的百分比(如我们设置的29.81GB的15%,数据文件大小是4.4715GB),文件会自动填充磁盘的空白区域,直到SSD空间使用94%时,软件会自动删除所有文件,然后重新开始填充。
    那么,我们很容易的计算出,29.81GB的SSD,填充数据达到SSD容量94%,填充的数据总量为28.0214GB时才会进行一次删除操作, 每次填充4.4715GB的文件,软件需要进行6.266次的写入才会有一次的删除操作,那么,我们进行4471.5GB的写入,实际上只进行了159.59次擦除操作,小编认为,这才是这款SSD虽然经过这么多数据的写入后依然毫发无损的真正原因。
    既然MLC的寿命是擦除1万次,究竟这款SSD需要经过多少次的写入以及总的写入量是多少时才会产生1万次的擦除呢?
    我们很容易可以倒推出,当进行1万次擦除操作时,我们需要进行62660次写入操作,那么我们写入的数据总量是280184.19GB,即使对于每天写入数据量很大的程序员而言,这个数据量也需要他们使用147.62年才能完成,而普通办公用户需要548.3年
    至此,一些读者可能会有疑问,事实上,我们每天在办公过程中是不停的进行创建文件、下载文件然后删除文件等操作,而不是当数据达到磁盘容量的94%时才会进行删除,这样的测试有意义吗?

普通用户平均每天的写入操作是1.4GB,那么4471.5GB的写入操作就相当于用户使用3193.9天的写入量,折合  8.75年。
对于程序员用户而言,每天的写入操作是5.2GB,那么,4471.5GB的写入操作就相当于用户使用859.9天写入量,折合    2.35年。
然后,我们再来看看这款硬盘的健康状况吧。
小编吃惊的发现,经过近4471.5GB文件的写入操作竟然没有产生一个坏块!主控的强大功能令人震惊。
    换句话说,即使我们使用5年,这款SSD的寿命依然是值得信赖的,相比较机械硬盘而言,考虑到其抗震动等特点,在开机情况下移动电脑过程中SSD不会导致物理损伤,其可靠性不是降低了,而是增强了。

一款120G的固态硬盘,要写入120G的文件才算做一次P/E。34nm的闪存芯片寿命约是5000次P/E,而25nm的寿命约是3000次P/E。
2014-5-15 17:20
0
雪    币: 11
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
ssd坏块是很快的,而且是越用越慢……而且成本远高于传统硬盘
2014-5-15 17:56
0
雪    币: 8835
活跃值: (2404)
能力值: ( LV12,RANK:760 )
在线值:
发帖
回帖
粉丝
12
稳定性问题让人担忧~
2014-5-15 19:59
0
雪    币: 11
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
我倒是一直想写个软件级RAID
把内存盘和机械硬盘穿透起来
2014-5-15 20:01
0
雪    币: 8835
活跃值: (2404)
能力值: ( LV12,RANK:760 )
在线值:
发帖
回帖
粉丝
14
写过,但是稳定性灾难。
2014-5-15 20:17
0
雪    币: 608
活跃值: (648)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
15
理论计算如此
但是 我从2011年开始用SSD至今 已经坏掉3块SSD盘

三星 镁光 INTEL 都是MLC的盘

都是使用过程中 突然数据出错 检查发现 是有大面积坏块
2014-5-15 20:48
0
雪    币: 11
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
Samsung Magician非常稳定的实现了这个功能……
而且我测试过,异常断电几乎不会损失数据(实际上还是会有的,但是几率小,覆盖面小)
他是通过小端口驱动和附加ACPI实现的……
不知道你当时是采取的什么思路,能否拿出来借鉴下,谢谢哈
2014-5-15 21:17
0
雪    币: 8835
活跃值: (2404)
能力值: ( LV12,RANK:760 )
在线值:
发帖
回帖
粉丝
17
Samsung Magician 蓝屏情况下各种丢失数据的说。

我的方法非常奇葩,我挂个钩子创建一个虚拟scsi阵列挂接磁盘和内存然后让Windows自己跑RAID~
2014-5-15 21:46
0
雪    币: 11
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
如果单纯为了提高小文件读写性能……
直接自己判断小于多少mb的文件就直接重定向到内存盘应该也可行吧?(然后专门开个线程再把内存盘的数据挪回实体硬盘……)这样应该安全性会提高?
2014-5-17 17:05
0
游客
登录 | 注册 方可回帖
返回
//