超小巧效能強悍的窮人版 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分鐘

文章導覽

   

共有 19 則迴響

  1. 不好意思,我在明確一下我的問題,
    若不需要回存的功能,安裝、設定的步驟該如何?

    1. 下載並安裝 ImDisk。
    2. 將 ImDisk 服務設定為自動啟動。
    3. 先暫時關閉 UAC 功能。
    接下來該如何設定?
    繼續進行第4、第5,6、7、8跳過?
    第9要修改成?
    第10也要修改?

    萬分感激,拜謝!

  2. 大大您好,若不需開關機的載入及回存動作,該如何設定?
    感謝您

  3. Kenming Wang 大您好
    依您的設定方式只更動了 8g 及磁碟 H:如下
    imdisk -a -t vm -s 8G -m H: -p “/fs:fat32 /v:MemDisk /q /y”
    設定完是正常的狀態
    但重新啟動後H:碟卻又不見了 請問這是每次重啟都要執行一次嗎?

    您步驟中的”將 ImDisk 服務設定為自動啟動” 我的服務是預設就是”自動”的

  4. 這個讚,回存真的很快

    不過我很好奇經過 imdisk 虛擬層,讀寫效能會不會差點,所以用磁碟測速軟體 CrystalDiskMark 去測(HD Tune 不認識 imdisk 無法測)。

    SuperSpeed RamDisk vs Imdisk
    連續讀取部份:3133 vs 1304 (MB/s)
    4k 小檔寫入部份:813 vs 162(MB/s)

    結果很意外,imdisk 的效能是很慘的….
    經過虛擬層,果然效能大打折扣

    但還是比真實硬碟快就是了,畢竟是 RAM

    我覺得這方法最大的用處,是將遊戲封裝成 img 檔掛載,若 RAM 夠大,直接整個遊戲 img 檔案掛載到 RAM 裡面,換關讀取速度就會很快。^^b

  5. win7 home premium 沒有gpedit.msc的話,
    想設定讀取與回存可有其他方法?

  6. 非常實用的教學,
    因最近記憶體價格下跌,
    趁著便宜時購入兩條4G,
    加上原本的總共12G記憶體,

    原本計畫在WIN7 X64系統下加上RAMDISK,
    處理影像與網路瀏覽時的速度應該都會有所提昇,
    在試了幾個免費的RAMDISK軟體後,
    不是存在設定的4G上限,
    就是格式只能設定FAT32,

    幾個問題讓想設定8G NTFS RAMDISK的我始終不得要領,
    直到看到您分享的這幾篇介紹與教學,
    終於有個方法可以完成我的目標了,
    今晚回家之後再來試看看,
    真的非常感謝您寫下這篇文章!

  7. 您好,
    感謝您的分享,請教您,我用的是 XP,除了 UAC 跳過沒設定,其餘都按照您的步驟完成了,但重開機之後,似乎沒有改變,control panel 裡的imdisk 中也沒看見所設的 ramdisk,請教您該從何處著手修正?
    再次感謝!

    • 1. 檢查 Service 是否有啟動。
      2. 可能是 Batch 檔沒有被執行到。
      3. 這類設定 How-to 議題,多 Try-and-Error 就可囉~

  8. 問一下
    若設定1.5g這樣開關機回存大概會各增加多少秒阿?(7200轉硬碟)
    若使用不超過2g有推薦其他回存快的免費ramdisk嗎?
    感謝

發佈回覆給「Kenming Wang」的留言 取消回覆

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *