本帖最后由 阿伯才的风格 于 2012-6-12 07:09 编辑
然后,我开始讲一下为什么要去了解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出现故前的状态了。
这种映射的方式在我看来,是最能保证系统稳定高效工作的一种方案,可以很好的避免因内存盘故障而出现不必要的系统崩溃。
|