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

15 條留言

  • Jiokmoo

    您好 小弟我的win7為home premium版 無法使用gpedit.msc

    所以上網找了利用taskschd.msc的方式的做法
    以下為連結
    http://forums.guru3d.com/showthread.php?t=356046

    希望對各位有所幫助

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

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

    萬分感激,拜謝!

    • 我記得在 Mobile01 有人整理了更具體的 ImDisk 的使用與設定方法。

      個人已許久沒弄這個工具囉~

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

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

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

  • 這個讚,回存真的很快

    不過我很好奇經過 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

    • 非常棒的心得與測試。 ^^

      最後包成 img 掛載的確是 Imdisk 很佳的應用,真是感謝您的分享。~

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

  • EZWIND

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

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

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

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

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

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

  • 超級實用
    若只想要有一個放暫存檔的空間這個就夠用了

發表留言