超小巧效能強悍的窮人版 Ramdisk-ImDisk (設定篇)

作為虛擬磁碟的驅動程式,ImDisk 最主要的作用就是在於將某一個映像檔案 (Image file),給掛載 (mount)到任一特定的虛擬硬碟上 (可自行指定硬碟代號)。

所以如何將 ImDisk 當成 Ramdisk,基本的原理就是:

  1. 創建一個新的映像檔案。
  2. 將該映像檔案掛載到特定的虛擬硬碟上。

再來就是考慮如何在系統開關機時自動回存的功能了。

  • 既然 ImDisk 可以將映像檔案掛載到虛擬硬碟上,所以只要在系統開機時執行掛載的指令即可。
  • 但 ImDisk (至目前版本, 1.4.1)並沒有提供如何將虛擬硬碟內變更後的資料寫回至映像檔,所以就必須找一個具有「磁碟複製 (disk clone)」功能的工具程式,來達成寫回實體硬碟映像檔的功能。這邊目前我是採用同一作者撰寫超小巧的工具程式-rawcopy,來完成這一功能。(也可以使用如 dd for windows 工具)
  • 將上述掛載與寫回作成批次指令 (batch file),然後在系統開關機時自動執行批次指令。

以下就把我安裝與設定 ImDisk 的心得整理成步驟實行的導引,我的環境為 Windows 7 x64。

  1. 下載並安裝 ImDisk
  2. 將 ImDisk 服務設定為自動啟動。
    [控制台]→[系統管理工具]→[服務],找到 [Helper service for ImDisk Virtual Disk Driver],並將其啟動類型設定為「自動」。
    ImDisk Setup Guide -01
  3. 先暫時關閉 UAC 功能。
    [控制台]→[使用者帳戶]→[變更使用者帳戶控制設定]→將拉條調到最下。設定後需要重新開機。
    ImDisk Setup Guide -02
  4. 在[命令提示字元]捷徑,滑鼠右鍵,選擇「以系統管理員身份執行」點擊執行。
    ImDisk Setup Guide -03
  5. 執行創建虛擬硬碟的指令 (只要執行一次即可)。
    imdisk -a -t vm -s 2G -m R: -p "/fs:fat32 /v:MemDisk /q /y"

    -s 指定虛擬硬碟大小;-m 指定硬碟代號;-p 設定格式化參數。
    這邊我設定的就是 2GB 大小、硬碟代號為 R:、格式化為 fat32 檔案系統 (也可設定為 ntfs)。

  6. 在 [控制台] 首頁,將[檢視方式]改為「小圖示」,可以看到 [ImDisk Virtual Disk Driver] (原作者可能沒有分類好,我在分類主項目都找不到),點擊執行後即會出現 ImDisk Control Panel 視窗。
  7. 在 ImDisk Control Panel 視窗,可以看到已掛載的虛擬硬碟,點選以後點擊下列的 [Save Image] 按鈕,會出現一個對話框,選預設即可,將映像檔指定檔名與位置儲存。
    我是指定 C:\Bootimg 為 Ramdisk 的儲存位置 (包括 rawcopy, Batch 指令檔等也是在該位置),檔名為「Ramdisk.img」。
    ImDisk Setup Guide -04
  8. 好啦,這樣是告第一段落,其實目的只有一個:創建一個已包含虛擬硬碟 (本例為 R 磁碟)磁區內容的映像檔。搞這麼麻煩的原因實在是因為 ImDisk Control Panel 對於 UAC 啟動後總會有權限無法存取等問題,所以必須先暫時關閉 UAC,先創建出映像檔再說,成功後再啟動回覆 UAC 原先等級即可。

  9. 下載 rowcopy.zip,解壓縮放至 C:\Bootimg 內。
  10. 新增並編輯兩個檔案:Startup.cmd , Shutdown.cmd,將此兩個批次檔儲存至 C:\Bootimg 內。
    Startup.cmd

    imdisk -a -t vm -f C:\Bootimg\Ramdisk.img -m R:

    Shutdown.cmd

    C:\Bootimg\rawcopy.exe -m \\.\R: C:\Bootimg\RamDisk.img
    imdisk -D -m R:

    -D 必須為大寫,亦即無論是否已 lock 住都強制卸載 (dis-mount)。

  11. 利用 [Win] +R 快速鍵,啟動「執行 (Run)」對話框,輸入 gpedit.msc,可打開「本機群組原則編輯器 (Group Policy)」視窗。
    在 [本機原則]→[電腦設定]→[Windows 設定]→[指令碼 - (啟動/關機)],在「啟動」與「關機」對話框內的[指令碼]標籤,各自新增 Startup.cmd 與 Shutdown.cmd。
    ImDisk Setup Guide -05

大功告成! 如此即可在 Windows 系統開機與關機時,會自動掛載與寫回映像檔。而且利用 ImDisk 達成這樣的回存功能,效能比 Dataram 快上太多了。後者我啟動 Dataram 回存,開機時間要耗上兩分多鐘之久,而前者這樣的客製化回存功能只需要約 40 秒左右,差很大。

再來就是端賴你如何運用 Ramdisk 特性了。最基本的運用,就是把系統暫存的環境變數,以及瀏覽器 (browser)的 Cache 檔案儲存位置,給全設定到 Ramdisk 磁碟上。關機時將虛擬硬碟整個磁區寫回映像檔、開機時再把映像檔掛載到虛擬硬碟上,一切都沒有問題,只稍微影響到系統的開關機時間。
ImDisk Setup Guide -06

利用 ImDisk 作為 Ramdisk 機制,我是覺得比較屬於克難式的窮人版做法,因為設定繁瑣,且穩定度仍有待商榷 (雖然我還沒遇到問題過)。如果有打算認真運用 Ramdisk 且會切割 4G 以上空間,我還是建議購買商業性的軟件,例如 VSuite Ramdisk 或 Superspeed Ramdisk,就不用搞得這麼複雜。

P.S. 關於上述開機用批次指令的載入方式,也可以使用「註冊表 (registry)」的方式,可參考下表:

Windows Registry Editor Version 5.00
 
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\ImDisk\Parameters]
"LoadDevices"=dword:00000001
"FileName0"="\\DosDevices\\C:\\Bootimg\Ramdisk.img"
"DriveLetter0"="R"
"Flags0"=dword:00000200

關於上述參數的說明,可參考:IMDISK by Olof Lagerkvist

※ 延伸參考
 o ImDisk 功能簡單介紹
 o [分享] 安裝上百套軟體,只須1分鐘