把整個作業系統放進記憶體裡,RAM OS 讓讀寫效能快10倍

ADVERTISEMENT

Boot in RAM:直接從記憶體開機

因為虛擬機器有不少限制,即使是載入RAM Disk執行也不太爽快。如果我們能夠開機時就把系統碟載入記憶體、然後用它來進入作業系統,不就可以脫離這些限制了嗎?沒錯!除了無法隨時掛載或卸除外,跟一般從硬碟開機原生執行的作業系統沒兩樣,也是最名副其實的RAM OS。

記憶體請先備足

乾淨的Windows XP SP3安裝完成後約佔2GB硬碟空間,Windows Vista/7/8則是約8GB,再加上一些緩衝空間就是要放進記憶體裡的系統碟大小。至於是多大就見仁見智了,總之記憶體的容量愈小、要做的設定就愈多,建議有能力就單條直上8GB、並且把插槽擠滿最無後顧之憂。

那麼,至少要多大呢?除了作業系統本身外,總得留一些給其它應用程式及置換檔存放的空間。而且RAM OS本身執行時也需要記憶體,假設電腦的總記憶體容量是16GB,理想的作法是將RAM Disk劃成12GB,留4GB當作純記憶體用。

若要節省空間可以嘗試處理WinSxS資料夾,或許還能減上3、4GB的體積。更極端的作法是使用Junction或Soft Link把一些資料夾指向到實體硬碟上(比如Program Files),不過這麼做就失去了設置RAM OS的原始意義了。

WinSxS

在Windows Vista(含)之後的Windows目錄底下,有個名為「WinSxS」的資料夾,它是目錄中體積最大的資料夾。因為這個資料夾裡的檔案都是非常重要的、維持系統正常運作的必要元件,所以不能夠直接刪除它。

不少教學可能會這麼寫:執行磁碟清理命令,就能夠縮減該目錄的體積,尤其是在剛升級完大型系統套件之後,比如Service Pack之類,或是系統從安裝後已經有好一段時間未清理,這個目錄也會愈變愈大。

這種說法是正確的,但對於剛安裝好的系統來說,幾乎無用,因為WinSxS裡可供清理的檔案多是一些用來回復系統的參考檔,像是安裝SP1之後反悔時,這些參考檔便能順利讓系統移除SP1。

如果本來的作業系統是Windows 7,再加裝SP1,那麼這個方法可能有效;反之,使用已經整合了SP1的Windows 7光碟來安裝的系統是無法有好處的。

很奇怪吧!以上敘述有邏輯上的瑕疵。Windows 7加裝SP1後可以藉由瘦身來縮減系統目錄體積,為何Windows 7 SP1就不行?兩者還不是一樣的系統嗎?哪有Windows 7裝了SP1後、體積還比Windows 7 SP1小的道理?

原來,WinSxS目錄底下的檔案,有大部分都是「Hard Link」,也就是實際上不佔空間的硬連結。雖然實際上不佔空間,但檔案總管還是會計算它們的體積,所以最準的容量估算方式是看硬碟的剩餘容量、而不是Windows目錄的佔用容量。

把整個作業系統放進記憶體裡,RAM OS 讓讀寫效能快10倍

載入器與驅動是關鍵

要怎麼在進入作業系統前就創建出RAM Disk、把系統碟放進去、以及讓作業系統存取是RAM OS的設定關鍵。其實Windows的開機載入器(Bootloader,不過這裡的角色更類似Boot Manager)本身就帶有RAM Disk的掛載功能,加上Windows內建RAM Disk驅動程式,只要在開機組態裡加上幾行指令就能用來執行WinPE之類的迷你作業系統。

然而,Windows內建的RAM Disk有1.5GB容量限制,對完整的作業系統來說跟本不夠用。雖然網路上可以找到破解版的核心元件來突破此屏障,不過在使用時仍有不少但書,對於RAM OS的開機管理機能也太過陽春。

因此,請先忘記Windows原生的解決方案。我們來看一下RAM OS的核心元件是如何分工的,同時也了解RAM OS是如何開機並執行:

開機載入器

開機時,它要負責創建RAM Disk,並且將系統碟的映象檔放進去,簡單的說就是把映象檔掛載到記憶體裡。然後再去啟動RAM Disk裡的作業系統,或是把啟動權交由RAM Disk裡的作業系統內建的載入器處理。

RAM Disk驅動

開機流程交給作業系統後,作業系統也要認得RAM Disk、並銜接完成開機任務啊。所以這裡的RAM Disk驅動是指Boot-class等級的元件,跟一般在桌面上執行的RAM Disk軟體是兩回事。

VHD映象檔

要載入的系統碟最好包裝成VHD,理由跟虛擬機器相同,因為它是受支援程度最廣泛的系統映象檔,不管是要存取它或引導它開機都很容易。

GRUB4DOS引導開機

開機管理程式有很多種,重點是要支援「把VHD映象檔載入至記憶體」,GRUB4DOS是最好的選擇。因為它原生就可以掛載VHD映象檔,安裝上也最為簡易。

GRUB4DOS有不少分支版本,建議使用「Chenall」,它更新最為頻繁、而且有針對RAM OS最佳化。至於最原始的正宗版本已經停止釋出更新很久了,記憶體管理機能落後,對於RAM OS應用來說當然不友善。

如果讀者習慣使用其它的載入器,也能試試,不過考量到載入器所建立的RAM Disk還要能跟作業系統的RAM Disk驅動相對應,使用GRUB4DOS還是比較穩當。

虛擬機的系統碟存取架構

開機時,GRUB4DOS將映象檔載入記憶體形成RAM Disk,然後將流程交給映象檔裡的作業系統。作業系統在低階的初始化時就要載入Firadisk來註冊這塊RAM Disk,不然在接手管理記憶體時RAM Disk會流失。

圖中的括弧是在開機流程中,每個步驟所需管理或耗用的記憶體總量。Firadisk所使用的這塊記憶體到最後當然還是由Windows所管理,在必要時仍有可能置換它。

把整個作業系統放進記憶體裡,RAM OS 讓讀寫效能快10倍

Firadisk銜接虛擬硬碟

GRUB4DOS把開機流程交給RAM Disk裡的Windows之後,Windows會接手記憶體的管理,所以在載入底層系統元件時就先啟用驅動來銜接GRUB4DOS建立的RAM Disk。不然的話,在進入更頂層的開機程序時,Windows會不認識這塊RAM Disk、無法存取RAM Disk、找不到系統碟在哪裡而無法繼續載入自己,開機流程會被迫中斷。

擔當此重任的色角是Firadisk,它讓Windows可以順利接手RAM Disk,並且把RAM Disk當作紮紮實實的本機硬碟來使用。

把整個作業系統放進記憶體裡,RAM OS 讓讀寫效能快10倍

▲安裝完Firadisk後,裝置管理員裡會多出一個Firadisk元件。如果沒有出現這個元件、或是該元件上有問號或驚嘆號,就是安裝不完整,將無法順利進入RAM OS。

用Windows建立VHD

好了,需要具備的基本概念及工具都已經湊齊,接下來就是上機實作時間。一開始我們要先建立乾淨的VHD檔,在建立VHD時得注意幾點:

一、請固定尺寸

VHD可分為動態尺寸與固定尺寸兩種模式,前者會依使用量動態擴展尺寸,後者則是一開始就固定映象檔的尺寸,GRUB4DOS不支援前者。

二、請注意尺寸

VHD有多大,創建的RAM Disk就有多大。還好即使是固定尺寸的VHD,日後還是能透過工具調整容量,所以一開始設置時不必太緊張。

三、請用Windows原生工具處理

虛擬機器如VMware、VirtualBOX也能建立VHD,但過程不太乾脆,還是用Windows自己提供的工具最實在。

VHD能透過電腦管理工具的磁碟管理介面來建立,下指令用批次檔也有同樣效果:

C:\>Diskpart

Diskpart> create vdisk file="C:\VHDs\VHD_Win7.vhd" maximum=16000 type=fixed

Diskpart> attach vdisk

Diskpart> create partition primary

Diskpart> assign letter=g

Diskpart> format

因為VHD的應用不是本文重點,這裡就不解釋詳細指令涵義,熟習的玩家可自行利用更簡便的工具優化建立或掛載過程。總之上述指令碼建立了一個16GB的VHD檔案,並將其掛載成G槽。

記得裝64位元系統

接下來要把Windows佈署到VHD裡。過程不外乎將Windows安裝檔案拷貝至VHD,再以VHD開機來完成安裝Windows,作法可參考附錄網址。

唯需留意的一樣有幾點。首先,請選用64位元作業系統,因為管理4GB以上記憶體,32位元會很麻煩,也請別想透過PAE之類的技巧來彌補,絕對沒有安裝64位元Windows來的一勞永逸。

再來是作業系統版本,因為Windows Boot Manager只支援啟動Windows Ultimate以上等級的Windows 7/8,在佈署時的版本號要設對才行,請在佈署Windows到VHD時修改此行:

Imagex /apply install.wim 4 g:

「4」代表Windows Ultimate。佈署完後,G槽「4」代表Windows Ultimate。佈署完後,G槽裡就是乾淨的Windows目錄,這時修改一下C槽的開機組態,加入VHD的開機選項,用它開機,就能完成VHD內Windows的安裝程序。

(後面還有更多步驟教學詳解)

魯蛇實驗室
作者

戶田惠梨香 新垣結衣 長澤雅美 吉高由里子 志田未來 北川景子 香里奈 竹內結子 北乃紀伊 菅野美穗 黑川智花 宮崎葵 夏帆 貫地谷詩穗梨 石原里美 有村架純 井上真央 真野恵里菜 能年玲奈 深田恭子

使用 Facebook 留言
魯蛇實驗室
2人給推

2.  魯蛇實驗室 (發表於 2013年5月07日 10:53)
因為還要回寫入硬碟當然會很慢,最簡單的解決方案還是用SSD,效果差不多而且又方便。
Allen Huang
3.  Allen Huang (發表於 2013年5月07日 11:44)
「...Windows內建的RAM Disk有1.5TB容量限制,對完整的作業系統來說跟本不夠用...」
摁... 1.5TB??
SeeingSky
2人給推

4.  SeeingSky (發表於 2013年5月07日 16:13)
早知道早些時候SSD跟RAM便宜的時候買些來用
現在價格...回不去了 囧rz
魯蛇實驗室
1人給推

5.  魯蛇實驗室 (發表於 2013年5月07日 16:43)
※ 引述《SeeingSky》的留言:
> 早知道早些時候SSD跟RAM便宜的時候買些來用
> 現在價格...回不去了 囧rz
長期來看,記憶體價格還是會越來越便宜的(希望啦)
SeeingSky
6.  SeeingSky (發表於 2013年5月07日 16:55)
現在幫別人組電腦都會被問說怎麼記憶體越來越貴...
還問我說是不是有偷收錢= =|||
Neil
7.  Neil (發表於 2013年5月07日 22:28)
「應用程式透過作業系統創造的虛擬位址來存取實體與虛擬記憶體(Pagefile/Swapfile.sys)」

請問一下,那虛擬位址(Virtual Address)是存在哪裡?實體記憶體?虛擬記憶體(硬碟、pagefile)?還是cache?
無痕
8.  無痕 (發表於 2013年7月30日 07:03)
虛擬位址是給軟體的記憶體管理機制位址。
如果要說存在哪我想是存在處理器暫存器。
因為虛擬位址是通往實體位址的橋樑...。
hewatika
9.  hewatika (發表於 2016年12月20日 04:49)
整篇看得很燃!!!

RAM OS 是多少年前的宅夢哪!!!

無奈現在 SSD 這麼便宜,以至於這篇文章也只能看乾爽的...

文末沒有測 IOPS,實在是破壞了這篇文章的整體感~

殘念
發表回應
謹慎發言,尊重彼此。按此展開留言規則