ImDisk,嚴格來說並不是完整的 Ramdisk 工具軟件,它其實只是一種虛擬磁碟 (virtual disk)類型的驅動程式 (driver)。它可以利用映像檔案 (image file)或系統記憶體 (system memory),來創建虛擬硬碟、軟碟、光碟 (CD/DVD)等。

因為 ImDisk 極為輕巧,且適用各類型 Windows 系統,包括 32/64 位元版本,更重要的是,它的 I/O 效能極佳,所以許多玩家把它當成 Ramdisk 來使用,可以參考這邊-ImDisk 論壇。
不過前述提及,ImDisk 並非是專用的 Ramdisk 軟件,所以它可沒有簡易的 GUI 供設定,需要透過命令列模式 (console mode)才能作完整設計。再則,它也沒有提供回存功能,所以也需要自行寫批次指令來達成在系統的開/關機時的自動回存。還有個更大的問題是,由於 Windows 7 有「使用者帳戶控制 (UAC, User Account Control)」機制,使得啟動與設定 ImDisk 服務,也麻煩許多。
但是 ImDisk 真的相當輕巧,它就只是個驅動程式一般,並不會造成系統多大的負荷,且佔用記憶體極小。再則,它的 I/O 效能極佳,不只在平常的暫存檔案讀寫效能而已,更可以在自動回存時,大幅降低系統開關機時的檔案讀寫 I/O 時間。
=====================================================
作為虛擬磁碟的驅動程式,ImDisk 最主要的作用就是在於將某一個映像檔案 (Image file),給掛載 (mount)到任一特定的虛擬硬碟上 (可自行指定硬碟代號)。
所以如何將 ImDisk 當成 Ramdisk,基本的原理就是:
- 1. 創建一個新的映像檔案。
- 2. 將該映像檔案掛載到特定的虛擬硬碟上。
再來就是考慮如何在系統開關機時自動回存的功能了。
- o 既然 ImDisk 可以將映像檔案掛載到虛擬硬碟上,所以只要在系統開機時執行掛載的指令即可。
- o 但 ImDisk (至目前版本, 1.4.1)並沒有提供如何將虛擬硬碟內變更後的資料寫回至映像檔,所以就必須找一個具有「磁碟複製 (disk clone)」功能的工具程式,來達成寫回實體硬碟映像檔的功能。這邊目前我是採用同一作者撰寫超小巧的工具程式-rawcopy,來完成這一功能。(也可以使用如 dd for windows 工具)
- o 將上述掛載與寫回作成批次指令 (batch file),然後在系統開關機時自動執行批次指令。
以下就把我安裝與設定 ImDisk 的心得整理成步驟實行的導引,我的環境為 Windows 7 x64。
- 1. 下載並安裝 ImDisk。
- 2. 將 ImDisk 服務設定為自動啟動。
[控制台]→[系統管理工具]→[服務],找到 [Helper service for ImDisk Virtual Disk Driver],並將其啟動類型設定為「自動」。 - 3. 先暫時關閉 UAC 功能。
[控制台]→[使用者帳戶]→[變更使用者帳戶控制設定]→將拉條調到最下。設定後需要重新開機。 - 4. 在[命令提示字元]捷徑,滑鼠右鍵,選擇「以系統管理員身份執行」點擊執行。
- 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」。
好啦,這樣是告第一段落,其實目的只有一個:創建一個已包含虛擬硬碟 (本例為 R 磁碟)磁區內容的映像檔。搞這麼麻煩的原因實在是因為 ImDisk Control Panel 對於 UAC 啟動後總會有權限無法存取等問題,所以必須先暫時關閉 UAC,先創建出映像檔再說,成功後再啟動回覆 UAC 原先等級即可。 - 8. 下載 rowcopy.zip,解壓縮放至 C:\Bootimg 內。
- 9. 新增並編輯兩個檔案: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)。 - 10. 利用 [Win] +R 快速鍵,啟動「執行 (Run)」對話框,輸入 gpedit.msc,可打開「本機群組原則編輯器 (Group Policy)」視窗。
在 [本機原則]→[電腦設定]→[Windows 設定]→[指令碼 - (啟動/關機)],在「啟動」與「關機」對話框內的[指令碼]標籤,各自新增 Startup.cmd 與 Shutdown.cmd。
大功告成! 如此即可在 Windows 系統開機與關機時,會自動掛載與寫回映像檔。而且利用 ImDisk 達成這樣的回存功能,效能比 Dataram 快上太多了。後者我啟動 Dataram 回存,開機時間要耗上兩分多鐘之久,而前者這樣的客製化回存功能只需要約 40 秒左右,差很大。
再來就是端賴你如何運用 Ramdisk 特性了。最基本的運用,就是把系統暫存的環境變數,以及瀏覽器 (browser)的 Cache 檔案儲存位置,給全設定到 Ramdisk 磁碟上。關機時將虛擬硬碟整個磁區寫回映像檔、開機時再把映像檔掛載到虛擬硬碟上,一切都沒有問題,只稍微影響到系統的開關機時間。

利用 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分鐘。
※ 關於 Batch 檔案內容與 rawcopy 工具,可下載本壓縮檔。
附加壓縮檔: 201103/mobile01-cf9d09be3080e430c3b67dcc272e0e79.zip