给折腾ramdisk的朋友们一点建议

Ramdisk是什么,恐怕不需要我多说大家都知道。至于ramdisk有什么优点,百度一下你能看到因为ramsik有着很快的读写速度所以“放临时文件能加快速度”,“装软件可以秒开”等等各种优化的方法,比较犀利的言论还认为使用ramdisk可以延长续航时间,保护硬盘等等“高阶应用”

在此我觉得第一个想出延长续航时间,用于bt下载来保护硬盘的人实在是碉堡了,连这么神奇的功能都能开发出来。我对您的敬佩犹如滔滔江水,连绵不绝……


我也曾是一个热衷于折腾ramdisk的人,而且这一折腾,就是好几年(我会告诉你我从ramdisk7就开始折腾了么~)也有了不少经验,所以现在写出来和大家分享一下~


首先,也是终极建议,如果采纳,那么你就可以离开这个页面了。那就是,如果你不是富二代而且闲得慌想烧钱玩又或者是想要体验秒开的快感来自high的人,那么我建议您,不管你装的是什么ramdisk,卸了吧!

什么?你说你是32位系统,用不了高位内存?那你为什么不升级64位呢……


然后我来说一说我的理由吧。
其实ramdisk无非就是两种主流用法
一种是放临时文件,这类方法的使用思路就是避免上网、日常使用的软件临时文件读写,将其置于ramdisk,以减少物理磁盘IO,同时加速文件写入的作用
另一种就是秒开,也就是把软件,还有软件常用目录放到ramdisk之中。目的是大幅提升软件打开的速度。
虽然两者都可以见到立竿见影的效果,但是秒开除了提高打开速度,却做不到提高实际使用的性能的。不过如果你喜欢这种沉浸于秒开的快感也未尝不可,但这就和所谓的“开机速度”一样,没什么太大的意义,而且superfetch本身就能在内存充足的时候大幅提升常用软件的启动速度,内存盘的设定反而显得多此一举。而放临时文件,这是个见仁见智的问题,我觉得放临时文件并不值得,一来效果并没有秒开来的显而易见,二来放临时的盘太小容易出问题,太大则会使可用内存减小,反而会使实际性能下降,三来实际使用的时候临时文件往往没那么多,大部分时候内存盘还是空闲的,这部分空闲还不如给系统superfetch来的划算。再说你觉得系统的回写式缓存机制用来干嘛的?

而且,不过现在内存的价格有多白菜,你觉得是SSD便宜呢?还是内存便宜呢?

至于ramdisk可以通过减少访问硬盘来减少耗电量来延长续航,敢问阁下到底测试过没有这做法到底靠不靠谱,能延长多久?
还有那个什么给bt下载保护硬盘,我就懒得吐槽了,各位自己看着办吧……

如果你坚决不采纳这个建议,非要用ramdisk不可,那么请看下文

在觉得非要用ramdisk不可的话,我就建议你熟练掌握使用mklink来建立文件之间的连接符,那会在使用ramdisk的时候起到巨大的作用。当然,如果你懒得去记那些命令,可以考虑使用“Link Shell Extension”这个软件,他也能做到相同的内容。至于这个命令有什么用,我会慢慢说明清楚(详见3l)。

然后,我来谈一谈我对常见的ramdisk的看法吧。
Primo ramdisk
如果你打算短时间内拿ramdisk试一把玩玩,那么我相当推荐你使用他。原因在于1.默认试用30日,拿来玩正好。2.功能出众,动态内存分配特别合适做临时文件盘使用,多种关机写入方式不但保证秒开应用正常使用,还不会造成过长的关机时间,延时加载更可以避免开机时间因读取ramdisk储存在硬盘中的数据而减慢……剩下的我就不说了,省得被当作广告,反正如果真的只是拿ramsisk尝尝鲜,绝对是最佳选择没有之一

Superspeed ramdisk plus
说了这个就不说同公司阉割版ramdisk了,反正只是个阉割产物。这家的ramdisk个人认为是最值得信赖的(不是绝对可信,绝对可信的只有你的第二块硬盘!)功能并不出众,但是经典稳定,可以说是稳定性最好的ramdisk,所以如果选择长期使用,那么Superspeed的是最佳选择,一来有完美破解(10.0版)虽然老了点,但其实也没什么问题,而且绝对满足各类强迫症患者的需求。而来该有的功能都有了,没加上的功能几乎都是为了保证稳定而不加上的。(你真的以为动态内存没问题吗,一个最显而易见的情况就是,内存负载大的情况下如果有新的临时文件写入,那么……)

buffalo ramdisk
可以说也是一个功能很出众的ramdisk,但是两大缺点让我觉得他不值得推荐。最显著的缺点是不支持ntfs格式,所以,根据我之前的建议,也就是不支持junction的特性,那么光是这个理由,就足以让我不推荐使用了。另一个比较糟糕的情况就是,只能建立一个磁盘(或许我out了,因为其实已经不折腾这个很久了,如果错了,还请拍砖)……不过他也有优点,就是建立的ramdisk部分的内存会被“硬件保留”让系统可用最大内存减少,避免了系统在内存不足时的意外行为

qsoft ramdisk
另一个功能强大,稳定性也不错的ramdisk,但是你界面就做的友好一点会死啊?!要完全看明白那些设置还得专门去读那些长长的说明文档,伤不起啊伤不起!除此之外倒也没什么特别的缺点。如果你对自己的理解力,耐心,技术有足够的信心,那么不妨使用这个版本的ramdisk

Gavotte ramdisk
缺点和buffalo类似,默认不支持ntfs(没记错的话好像可以用特殊方法强行建立),至于优点……他有什么优点?

其他的ramdisk还有很多,我就不一一说过来了,反正都差不多,没什么特别的特色。
至于性能,除了某几个设计特别失败的不知名的作品,其实意义都不大,莫非你觉得内存盘这种连续读写500m起版,4k随机200m以上的读写速度有那么点变化(哪怕快上一倍)你能感觉得出?

然后,我开始讲一下为什么要去了解mklink命令了。这个命令能干什么我就懒得从网上复制了,可自行百度相关内容了解,使用ntfs文件系统的junction特性可以很好的避免修改环境变量导致的潜在不稳定因素(一个典型的例子是在修改user temp变量后,office系列软件可能在特殊情况下出现环境变量错误,虽然可以通过注册表修改来修复,但是比较麻烦),也可以避免装秒开软件时因为掉电等特殊原因造成内存盘信息丢失而无法使用软件(如果放秒开软件,一般都是最常用的软件,如果发生这种情况,那么后果……)。另外,一个软件无论使用频率多高,总有一部分内容并不常用或并不需要ramdisk来加速,此时可以使用该特性将这部分文件转移到物理磁盘上用来减少内存盘占用,把好钢用在刀刃上。

 

无论你是准备用来放临时文件,还是准备安装软件,把目录直接指向ramdisk绝对是最差的选择了,没有之一,因为ramdisk的易失性决定了一旦发生意外,那么所有的数据一定是不可逆的丢失,这和硬盘的数据丢失不同,不管是软件,还是专业公司,哪怕是上帝都恢复不了。所以这种方式虽然可能在一般使用时用的很好很流畅,但是存在的一次性的灾难性的风险。当然你可以通过备份手段来减少数据丢失的风险(仅仅是丢失确实可以用数据恢复来修复)但是纵然如此,一旦发生故障,那么快速回复工作状态肯定是不可能的了。而且,万一是内存盘的软件本身出现故障(指不定你的杀毒软件那天就抽了呢)。那么仅仅靠备份数据是远远不够的。

但是如果使用junction特性,通过备份和建立两层连接,那么就可以在已有备份的情况下,迅速恢复工作状态(最简单的方法就是删除原有连接符,建立一个新的连接符指向备份目录重启即可)另一方面,使用目录连接符安装在ramdisk上的软件,一般情况下任何时候都可以完美移动到物理磁盘上而不会出现目录变更的故障(少数直接使用目标地址的软件除外)。建立链接符的方式不多说,建立为这样一种方式的映射

即整个ramdisk映射为处在物理磁盘上的一个过渡目录,如将ramdisk(Z:)映射为"C:\Ramdisk"的一个文件夹,此时处在“Z:\”的目录由于连接符的关系映射为了"C:\Ramdisk"中的目录(如“Z:\Firefox”映射为"C:\Ramdisk\Firefox"此时访问"C:\Ramdisk\Firefox"即访问“Z:\Firefox”)然后再将过渡目录中的文件夹映射为“C:\Program Files\Firefox”此时运行firefox会读取处于“C:\Program Files\Firefox”,再由目录连接符的关系跳转为"C:\Ramdisk\Firefox",最后回到“Z:\Firefox”

尤其推荐不修改环境变量而是通过映射的方式来更改临时文件目录,这样可以避免因临时环境变量多次变化(或是特殊情况)导致临时环境变量出错。

这样,在正常使用的情况下,访问program files中的处于ramdisk的文件可以通过两个连接符跳转到内存盘上,而当ramdisk发生故障时通过改变过渡目录的指向(完全生效需重启
即当ramdisk发生故障,无法访问其中数据,此时有处在C盘的ramdisk的备份目录(如“C:\Ramdisk Backup”),删除"C:\Ramdisk"的目录连接符,建立一个新的"C:\Ramdisk"连接符指向“C:\Ramdisk Backup”,此时此时运行firefox会读取处于“C:\Program Files\Firefox”,再由目录连接符跳转为"C:\Ramdisk\Firefox",最后回到“C:\Ramdisk Backup”而不是“Z:\Firefox”避免了ramdisk发生故障导致放在ramdisk内的秒开软件无法启动

(当然你也可以不用过渡目录,但是那样的话需要一个一个子目录改过来,操作比较复杂
此时虽然备份目录中的文件访问速度远远不如ramdisk,但是可以最快的恢复正常使用的状态,然后你需要做的,就是恢复ramdisk中的文件,再更改过渡目录的指向为ramdisk即可快速恢复为ramdisk出现故前的状态了。

这种映射的方式在我看来,是最能保证系统稳定高效工作的一种方案,可以很好的避免因内存盘故障而出现不必要的系统崩溃。

 

posted @ 2018-10-08 15:25 ox_fly 阅读(...) 评论(...) 编辑 收藏