作業系統 - 超小巧效能強悍的窮人版 Ramdisk-ImDisk (含安裝與設定圖解說明@Windows 7 x64) - 電腦

前往內容


超小巧效能強悍的窮人版 Ramdisk-ImDisk (含安裝與設定圖解說明@Windows 7 x64)

可先參考關於ImDisk 的介紹。

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. 1. 創建一個新的映像檔案。

  2. 2. 將該映像檔案掛載到特定的虛擬硬碟上。



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

  •  o 既然 ImDisk 可以將映像檔案掛載到虛擬硬碟上,所以只要在系統開機時執行掛載的指令即可。

  •  o 但 ImDisk (至目前版本, 1.4.1)並沒有提供如何將虛擬硬碟內變更後的資料寫回至映像檔,所以就必須找一個具有「磁碟複製 (disk clone)」功能的工具程式,來達成寫回實體硬碟映像檔的功能。這邊目前我是採用同一作者撰寫超小巧的工具程式-rawcopy,來完成這一功能。(也可以使用如 dd for windows 工具)

  •  o 將上述掛載與寫回作成批次指令 (batch file),然後在系統開關機時自動執行批次指令。



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

  1. 1. 下載並安裝 ImDisk

  2. 2. 將 ImDisk 服務設定為自動啟動。
    [控制台]→[系統管理工具]→[服務],找到 [Helper service for ImDisk Virtual Disk Driver],並將其啟動類型設定為「自動」。

  3. 3. 先暫時關閉 UAC 功能。
    [控制台]→[使用者帳戶]→[變更使用者帳戶控制設定]→將拉條調到最下。設定後需要重新開機。

  4. 4. 在[命令提示字元]捷徑,滑鼠右鍵,選擇「以系統管理員身份執行」點擊執行。

  5. 5. 執行創建虛擬硬碟的指令 (只要執行一次即可)。

    imdisk -a -t vm -s 2G -m R: -p "/fs:fat32 /v:MemDisk /q /y"


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

  6. 6. 在 [控制台] 首頁,將[檢視方式]改為「小圖示」,可以看到 [ImDisk Virtual Disk Driver] (原作者可能沒有分類好,我在分類主項目都找不到),點擊執行後即會出現 ImDisk Control Panel 視窗。

  7. 7. 在 ImDisk Control Panel 視窗,可以看到已掛載的虛擬硬碟,點選以後點擊下列的 [Save Image] 按鈕,會出現一個對話框,選預設即可,將映像檔指定檔名與位置儲存。
    我是指定 C:\Bootimg 為 Ramdisk 的儲存位置 (包括 rawcopy, Batch 指令檔等也是在該位置),檔名為「Ramdisk.img」。

  8. 好啦,這樣是告第一段落,其實目的只有一個:創建一個已包含虛擬硬碟 (本例為 R 磁碟)磁區內容的映像檔。搞這麼麻煩的原因實在是因為 ImDisk Control Panel 對於 UAC 啟動後總會有權限無法存取等問題,所以必須先暫時關閉 UAC,先創建出映像檔再說,成功後再啟動回覆 UAC 原先等級即可。
  9. 8. 下載 rowcopy.zip,解壓縮放至 C:\Bootimg 內。

  10. 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)。

  11. 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
Dragon-FlyingTiger~
Dave5136 wrote:
明明就不是 Ramdisk,為什麼東一句 Ramdisk,西一句 Ramdisk?把 "Ramdisk" 統統改成 "Virtual Disk" 好嗎?

這種口氣,難怪分享越來越少
六或日晨台中中正露營區或136或中興大學半馬再半馬
伍佰的一半 wrote:
這種口氣,難怪分享越...(恕刪)
「分享」是值得鼓勵的,但「錯誤觀念」是不值得鼓勵的。說得嚴重一點,如果這軟體不是 Ramdisk,也稱得上是「標題與內文不符」。

Dave5136 wrote:
明明就不是 Ramd...(恕刪)


這位仁兄,你太激動了。

它的本質是 Virtual Disk Driver,這我在我文內已有提及。

但,在 ImDisk 論壇,起碼有 2/3 以上版友均是把它視為 Randisk 在使用的。

而我也是出發點是將之當為 RamDisk 來運用。為了能讓其在 Windows 7 x64 (UAC 啟動下)能順暢運作,好歹我也花了好幾天才試出來如何運作並可自動開關機時具回存的功能。而其效能之佳,已經不遜於我在文內所介紹的商業軟件了。

最起碼我在台灣/大陸的網站上還沒看到有利用 ImDisk 運用在 Windows 7 x64 環境下 (可自動回存),所以我想就把設定心得發表分享,給同樣有類似需求的使用者。
Dragon-FlyingTiger~
再仔細看了一下你的文章,我還真搞不清楚到底是不是 RamDisk。

如果這軟體本身沒有回存功能,那麼假設該虛擬磁碟的容量設定為4G,使用者複製了3.9G的資料進入該虛擬磁碟中,由於沒有回存,那麼這些資料(3.9G大)應該還是存在 RAM 裡吧?那 RAM 裡究竟有沒有一個 "Disk" 呢?

PS. 我沒有火氣大。只是建議用詞要正確,不要誤導讀者。

Dave5136 wrote:
如果這軟體本身沒有回存功能,那麼假設該虛擬磁碟的容量設定為4G,使用者複製了3.9G的資料進入該虛擬磁碟中,由於沒有回存,那麼這些資料(3.9G大)應該還是存在 RAM 裡吧?那 RAM 裡究竟有沒有一個 "Disk" 呢?...(恕刪)


當然是有啦,就是有個 "Disk",功能與 Dataram, Superspeed Ramdisk 都是一樣的哩。

至於 Ramdisk 有無回存功能,哪可不一定會提供的喔。早些 XP 時代,Gavotte 也是沒有提供回存功能,還不是有一堆網友提供了回存客製化的設定分享,我也算是類比用此方法來提供解決方案而已。

我還真不知道該如何 "說文解字" 的哩,國外許多網友幾乎都把 ImDisk 稱之為 "RamDisk
",我也從沒看過有人反駁,包括原作者也沒意見的。

Dragon-FlyingTiger~
Dave5136 wrote:

再仔細看了一下你的文章,我還真搞不清楚到底是不是 RamDisk。


如果這軟體本身沒有回存功能,那麼假設該虛擬磁碟的容量設定為4G,
使用者複製了3.9G的資料進入該虛擬磁碟中,
由於沒有回存,那麼這些資料(3.9G大)應該還是存在 RAM 裡吧?
那 RAM 裡究竟有沒有一個 "Disk" 呢?

PS. 我沒有火氣大。只是建議用詞要正確,不要誤導讀者。





IMDisk 為什麼不是 RamDisk 呢 ??

在 DOS 時代,RamDrive.sys 是大家熟知的,應該沒人有意見,
將 RAM 取一部份出來模擬成檔案系統(FAT)成一部獨立的磁碟機.

那 IMDisk 也是同樣的做法,
為什麼不能叫作 RamDisk ??

另外,
RamDisk 有無回存功能,沒這種說法,這是 User 的事,
RamDisk 只須作好本份將 RAM 取一部份出來模擬成檔案系統.

原發文者並沒有誤導讀者.
☆ 私人訊息直接刪除不再回覆 ☆ 願望 : bovuhPPjMnEfkyhggnsJdABaLFPuhXT4

1頁 (共4頁)

前往




此文章的引用連結