Dynamic memory allocation 的偽 RamDisk !!

本帖最後由 mydaniel 於 2011-4-29 10:07 編輯

前言=====
  唔少人都有用 RAMDISK ,相信大家都有一個問題 ,幾GB RAM 割黎做 RAMDISK ,有用就算了 ,最慘係放晌到唔係成日用 ,而自己本身 RAM 又唔多 ,可能得 2~4GB ,搞到要就住就住
  但係坊間既 RAMDISK 有動態記憶體分配既RAMDISK 得兩個 ,一個冇開心版 ,而且要手動放RAM (好耐冇用過 ,唔知有冇UPDATE到) ,另一個係唔會開機自動MOUNT亦唔識放返出黎的 .但就無意中比我發現一個 RAMDISK 既代替品 , fbwf - file base write filter
  乜野係 file base write filter 呢? 本來係 mircosoft 為左Windows embedded 做既一個防寫系統 ,你可能會奇怪 ,防寫點做 RAMDISK? 我只係話代替品 ,如果你需要回寫功能 ,請就此略過 . ..|| 因為 fbwf 唔似 ewf 有 commit 功能 ,雖然有人寫過一個 script . ..但係呢到唔講住 ..
安裝=====
  廢話講左咁多 ,以下用 win7 黎做實例 ,首先你需要一隻 wes2011 既光碟 ,然後搜尋 file base write filter ,你會搵到一個叫做 WinEmb-File-Based-Write-Filter.cab 既東東 ,用 winrar 解壓會得到四個需要用到既檔案

  將 fbwf.sys 放入C:\Windows\System32\drivers ,然後將 fbwfcfg.exe ,fbwflib.dll ,fbwfMgr.exe 放入 C:\Windows\System32 ,呢個時候我地仲需要一樣野 ,就係註冊檔 ,我用左一個好蠢既方法 . ..如果你係高手千其唔好用   就係安一次 WES2011 再將所有相關註冊碼抽出黎 . ..登錄註冊檔既時候你可能需要修改HKEY_LOCAL_MACHINE\SYSTEM\*ControlSet*\Enum\Root 既權限 ,可以參考下圖


  fbwf 咁簡單就安裝好了 ,但係仲未完的 ,你先分割一個8mb 既硬碟分區 ,符盤 set 做 R: ,重啟一次電腦然後入 cmd 打指令

fbwfmgr /enable  <-- 啟動
fbwfmgr /addvolume R:  <-- 目標磁碟機 ,我呢到係 R:
fbwfmgr /setthreshold 1024  <--分配大細 ,1024MB 即係 1GB
fbwfmgr /setpreallocation 0  <--preallocation 係預先分配空間 ,SET 做 0 即係動態分配 ,刪檔案會即時放返出黎 ,全自動
fbwfmgr /setsizedisplay 1  <--用虛擬大小代替實際大小 ,求先叫你割 8mb 就係咁解 ,8MB 分區會變成 1GB
fbwfmgr /setcompression 1  <--實時壓縮 ,用左 fbwf 係用唔到 ntfs 壓縮 ,可以用呢個代替 ,不過寫入速度會好慢

測試參考=====
1gb ramdisk ,完全冇佔空間

除左跑分唔知有乜可以測

裝埋個 superseed ,咁就比佢食左 1gb

速度各有勝負

備註=====
#因為就算只係果四個檔案都一樣係版權物 ,所以網上基本冇乜載點 . ..但你總會搵到的 ,我就晌某 PCEVA 論壇 DL 過
#安裝前請先關閉 UAC . ..
#唔同系統要用返對應既檔案 ,比如 X64請搵返 X64 . ..
#fbwf 本身有記憶體上限 ,以我所知 XP 32BIT 係 320MB , WIN7 係 1GB ,WIN7 X64 係 128GB <--64BIT比較實用
#底果個分區 format 做乜都冇所謂的 ,如果你 format 做 ntfs ,勉強叫做可以用 symbolic link (但其他功能係全部都用唔到的)
#千奇唔好放 pagefile ,因為係動態分配 ,唔夠 ram 果時系統會直接崩潰 ,如果你真係要放 ,晌 enable之前先創好一個 pagefile.sys
#呢篇唔係教學文 ,有咩事死左唔好搵我 ,冇命賠的
#暫時淨係知咁多 ,仲有就係如果你SET左 C: 會比 Bootstat.dat 搞到入唔到window 諸如此類 ,呢到淨係用黎當 ramdisk 用 ,唔講了
#如果你有無限咁多RAM ,呢篇野可能唔岩你 次次講親 RAM 都會有人出黎話 RAM 平自己加爆佢 ,其實我好反感
附件: 您需要登錄才可以下載或查看附件。沒有帳號?註冊

Daniel 兄寫得詳盡,要忠告用 fbwf 的事都給你說明了;設置了動態記憶體分配,我可以指 temp/tmp 去有 fbwf 保護的 drive 了;

你的 fbwf.sys ... 是哪個 WES7?我的 fbwf.sys ... 版本是 1.0.299.0 (4/2/2010)
附件: 您需要登錄才可以下載或查看附件。沒有帳號?註冊

TOP

相信你也知道 WES2011 正式版改名 WES7 了 ,我用的正正就是 WES2011CTP2
檔案版本是 233 ,比你的舊 ,我曾經嘗試使用 299的版本 ,無奈失敗告終
CHING 是 X86 還是 X64?

TOP

咁樣動態分配記憶體幾好, 但WIN7 32bit 上限只可以用到 1GB???
實在太少了

TOP

我用 Windows 7 x64 fbwf.sys 是 1.0.299.0,用以下的 registry:
  1. Windows Registry Editor Version 5.00

  2. [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\Fbwf]
  3. "Start"=dword:00000000
  4. "Tag"=dword:00000002
  5. "Type"=dword:00000002
  6. "ErrorControl"=dword:00000001
  7. "ImagePath"="system32\\drivers\\fbwf.sys"
  8. "EnabledOnAllSkus"=dword:00000001
  9. "DebugFlags"=dword:00000000
  10. "DisplayName"=""
  11. "Group"="FSFilter System Recovery"
  12. "DependOnService"=hex(7):46,00,6c,00,74,00,4d,00,67,00,72,00,00,00,00,00

  13. [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\Fbwf\Instances]
  14. "DefaultInstance"="Fbwf Instance"

  15. [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\Fbwf\Instances\Fbwf Instance]
  16. "Altitude"="226000"
  17. "Flags"=dword:00000000
複製代碼

TOP

本帖最後由 mydaniel 於 2011-4-22 10:02 編輯
我用 Windows 7 x64 fbwf.sys 是 1.0.299.0,用以下的 registry:
rkkc 發表於 2011-4-22 01:31


如果你沒有把wow64 給遺忘了可以試試看這個
  1. Windows Registry Editor Version 5.00

  2. [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\FBWF]
  3. "Start"=dword:00000000
  4. "Type"=dword:00000002
  5. "ErrorControl"=dword:00000001
  6. "ImagePath"=hex(2):73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,64,00,\
  7.   72,00,69,00,76,00,65,00,72,00,73,00,5c,00,46,00,62,00,77,00,66,00,2e,00,73,\
  8.   00,79,00,73,00,00,00
  9. "Group"="FSFilter System Recovery"
  10. "DisplayName"="File-Based Write Filter"
  11. "Description"="File-Based Write Filter driver"
  12. "DependOnService"=hex(7):46,00,6c,00,74,00,4d,00,67,00,72,00,00,00,00,00
  13. "DebugFlags"=dword:00000000
  14. "EnabledOnAllSkus"=dword:00000001

  15. [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\FBWF\FBA]
  16. "ProtectRegistryRamdisk"="\\RegfData"
  17. "EnablePostFBA"=dword:00000000
  18. "ThresholdSize"=dword:00000000
  19. "CacheType"=dword:00000003
  20. "VirtualSizeDisplay"=dword:00000001

  21. [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\FBWF\FBA\Exclusion]
  22. "Protection1"=hex(7):

  23. [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\FBWF\Instances]
  24. "DefaultInstance"="Fbwf Instance"

  25. [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\FBWF\Instances\Fbwf Instance]
  26. "Flags"=dword:00000000
  27. "Altitude"="226000"

  28. [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\FBWF\Enum]
  29. "0"="Root\\LEGACY_FBWF\\0000"
  30. "Count"=dword:00000001
  31. "NextInstance"=dword:00000001

  32. [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\Root\LEGACY_FBWF]
  33. "NextInstance"=dword:00000001

  34. [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\Root\LEGACY_FBWF\0000]
  35. "Service"="FBWF"
  36. "Legacy"=dword:00000001
  37. "ConfigFlags"=dword:00000000
  38. "Class"="LegacyDriver"
  39. "ClassGUID"="{8ECC055D-047F-11D1-A537-0000F8753ED1}"
  40. "DeviceDesc"="File-Based Write Filter"

  41. [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\Root\LEGACY_FBWF\0000\Control]
  42. "ActiveService"="FBWF"
複製代碼

TOP

如果你沒有把wow64 給遺忘了可以試試看這個
mydaniel 發表於 2011-4-22 10:00


我用短版 registry,restart 後就會自動產生其他 reg key (e.g. LEGACY_FBWF),只是沒有 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\FBWF\FBA,但一切正常,FBA 的 setting 似是 WinPE 用。
附件: 您需要登錄才可以下載或查看附件。沒有帳號?註冊

TOP

我用短版 registry,restart 後就會自動產生其他 reg key (e.g. LEGACY_FBWF),只是沒有 HKEY_LOCAL_MACH ...
rkkc 發表於 2011-4-22 10:22



ching 不是用不了嗎
如果一切正常有什麼問題呢

TOP

XPE 時代見 ewf/fbwf 問題多 (e.g. page allocation error ...) 便丟下來,見 ching 的 fbwf 靈活用法,便找來新版 (299) 的 files,因為一試即得,所以想交流 registry,再多謝你的努力。

TOP

XPE 時代見 ewf/fbwf 問題多 (e.g. page allocation error ...) 便丟下來,見 ching 的 fbwf 靈活用法,便 ...
rkkc 發表於 2011-4-22 10:43



原來如此 ,那就是我誤會了
我還特地用 vmware 安裝 299的版本 ,發覺一切如常
看來是我以前用註冊檔的時候出問題 ,讓 ching 見笑了
xpe 時代的問題是用在 vista/win7 身上嗎?
我的 xp 有安裝 ewf ,用的好好的 @@ 雖然很久沒開了

TOP