很多人都知道可以在电脑建立 Ramdisk , 把不太重要但读写频繁的档案改存到 Ramdisk ; 不过有些软体并不能更动目录, 就可以再使用 junction 来强化; 以下就是以 Java 来当範例.
很多人都知道可以在 Windows 环境建立 Ramdisk , 再把 Windows 的 TEMP , IE 的 Temporary Internet Files 搬到 Ramdisk , 由于 Ram 存取及搜寻速度远超过硬碟, 可以减少软体读写档案的延迟, 又可以降低硬碟读写次数.
可是有些软体本身有固定的档案写入位址, 例如大部份的人电脑都有安装 Java , 而 Java 会把档案暂存在 使用者的 Application Data\Sun\Java\Deployment\cache 与 SystemCache 目录下, 或是 IE 的历史记录是在 Local Settings\History 等等, 如果想把这些目录, 改到 Ramdisk , 虽然很多网站有教怎么改 Registry 把目录移到 Ramdisk , 可是如果升级或重新安装, 有时担心程式出问题, 好像又有点不顺手.
其实 NTFS 已经有支援 junction 功能, 也就是在 Linux 的 ext FS 已经普遍使用的 Soft Link , 在 Windows 的磁碟管理画面, 其实就有"把磁碟加在空的 NTFS 目录", 也就是 junction 的应用, 只是 XP/2003 以前没有一个专用的程式.
所以在应用上, 只要发现程式有大量读写硬碟, 再确认这些频繁读写的资料并没有很重要, 就可以透过 junction 这小程式, 把暂存的目录, 改成在 Ramdisk 建立的目录, 这样不必异动程式设定, 又可以提高速度.
例如刚刚举 Java 为例, 第一次搬移时:
rem 第一次先把档案 copy 到 Ramdiskfor %%f in ("Documents and Settings\使用者\Application Data\Sun\Java\Deployment\cache") do xcopy /c /d /e /h /y "C:\%%~f" "R:\%%~f\"rem 把目录改名, 如果遇到问题可以救, 没问题再删.for %%f in ("Documents and Settings\使用者\Application Data\Sun\Java\Deployment\cache") do move "C:\%%~f" "C:\%%~f_old"rem 实际建立连结, 注意用法是"新连结"在前, 对应的目录在后.for %%f in ("Documents and Settings\使用者\Application Data\Sun\Java\Deployment\cache") do junction /s "C:\%%~f" "R:\%%~f"
以后开机时, 或由 Ramdisk 建立后再接着执行
for %%f in ("Documents and Settings\使用者\Application Data\Sun\Java\Deployment\cache") do md "R:\%%~f"
由于 C: 底下的连结已经建好了, 所以之后不必再连结, 只要确保对应的目录存在, 以后跑 Java 时就会把暂存档放在 Ramdisk 了.
而相同的应用, 也可以用在如 P2P 软体的索引, 如 aMule 是放在 C:\Documents and Settings\使用者\Application Data\aMule , 只是要记得关机前找地分备份.
当然还有其他方式, 例如单一 folder cache 软体等, 只是个人偏好系统内不要装太多软体, 所以有 junction 这样简便的软体, 就先测这套, 也想应用如: 以后装完系统, 整个 Documents and Settings 就搬到另一个磁碟, 在系统碟是建立 junction , 备份就相对轻鬆了.
junction 档案下载: http://technet.microsoft.com/en-us/sysinternals/bb896768.aspx