萬盛學電腦網

 萬盛學電腦網 >> Linux教程 >> Ramdisk:在linux下如何使用 RAM 作為虛擬硬盤?

Ramdisk:在linux下如何使用 RAM 作為虛擬硬盤?

class="22197"> RamDisk簡介
--------------------------------------------------------------------------------

這是一個關於在RedHat;6.0系統上如何建立一個RamDisk的文章。對於其他的發行版本這個過程也應該是相識的。;

什麼是RamDisk?;一個A;RamDisk;是你用作一個硬盤分區的一部分內存空間。或者換句話說,你是把內存假設為一個硬盤驅動器,並且你在它的上面存儲文件。為什麼我們要使用;RamDisk?;好的,如果你知道通常將要使用的文件是被調入內存以提高計算機的性能,因為內存的存儲速度要快於硬盤。;這樣類似於web服務器上的數據就可以用這個方法提高訪問速度。或是有點愚蠢的,假如你有一台PII550計算機並且有1G的內存空間和500M的硬盤,你也可以用這種方法來增加你的你的硬盤空間。;或者,你也可以做一個無盤的機器,,沒有比這個更為瘋狂的了。;

以下是一些可以得到幫助的資源。;

http://metalab.unc.edu/LDP/HOWTO/Kernel-HOWTO.html;
http://metalab.unc.edu/LDP/HOWTO/mini/LILO.html;
--------------------------------------------------------------------------------
如何使用RamDisk
--------------------------------------------------------------------------------

OK,使用ramdisk是一件很簡單的事。首先,RedHat6.0的默認安裝就支持ramdisk。你所需要做的就是格式化一個ramdisk並且把他家在到一個目錄上。列出所有可用的ramdisk用“ls;-al;/dev/ram*”。這就會列出你現有可用的ramdisk。這些ramdisk並不搶奪內存,除非進行格式化的一類操作。這裡有一個使用ramdisk的例子。

#;create;a;mount;point:
mkdir;/tmp/ramdisk0
#;create;a;filesystem:
mke2fs;/dev/ram0
#;mount;the;ramdisk:
mount;/dev/ram0;/tmp/ramdisk0

這三個命令將為ramdisk創建一個目錄,格式化ramdisk(創建文件系統),並且加載這個ramdisk到"/tmp/ramdisk0".;現在你可以將這個目錄看成一個虛擬的分區。使用它就象使用其它的目錄一樣。
如果對ramdisk的格式化失敗,那就是你的內核不支持ramdisk。其內核配置選項是;CONFIG_BLK_DEV_RAM;.;

ramdisk的默認大小是;4Mb=4096;blocks.;在你進行mke2fs的時候你可以看到你的ramdisk的大小。mke2fs;/dev/ram0;將產生類適於以下的信息:;

mke2fs;1.14,;9-Jan-1999;for;EXT2;FS;0.5b,;95/08/09
Linux;ext2;filesystem;format
Filesystem;label=
1024;inodes,;4096;blocks
204;blocks;(4.98%);reserved;for;the;super;user
First;data;block=1
Block;size=1024;(log=0)
Fragment;size=1024;(log=0)
1;block;group
8192;blocks;per;group,;8192;fragments;per;group
1024;inodes;per;group

執行df;-k;/dev/ram0;你實際用了多少空間:


>df;-k;/dev/ram0
Filesystem;;1k-blocks;;Used;Available;Use%;Mounted;on
/dev/ram03963;;;;13;;;;;;3746;;;0%;/tmp/ramdisk0

那麼麻煩是什麼呢?在系統重新啟動的時候,將刷新這個區域。不要將任何沒有拷貝的數據放在這個區域。如果你對這個目錄進行了修改,並且需要保留這些修改,采取一些辦法進行備份。

--------------------------------------------------------------------------------
改變;ramdisks;的大小
--------------------------------------------------------------------------------

要想使用ramdisk你必須或是得到內核的支持或是以模塊的形式將他加載到系統中。其中內核的配置選項是;CONFIG_BLK_DEV_RAM;.;把ramdisk編譯成一個可加載的模塊的好處是你可以在加載是重新確定ramdisk的大小。


Okay,;第一個辦法。在lilo.conf文件中加入這一行:
ramdisk_size=10000;(or;ramdisk=10000;for;old;kernels);
這樣在你使用lilo命令和重新啟動計算機之後,ramdisk的默認大小將會是10M。這是一個/etc/lilo.conf文件的例子:

boot=/dev/hda
map=/boot/map
install=/boot/boot.b
prompt
timeout=50
image=/boot/vmlinuz
label=linux
root=/dev/hda2
read-only
ramdisk_size=10000

確切的說,我只是使用了9M多的空間,文件系統也將占用一定空間。

當你以模塊的形式編譯ramdisk時,你可以在加載的時候決定ramdisk的大小。這也可以通過修改/etc/conf.modules;的選項設置來做到。;

options;rd;rd_size=10000

或是在命令行中指定參數給ismod:

insmod;rd;rd_size=10000

以下是介紹如何使用這樣的模塊的例子:;

卸載ramdisk,umount;/tmp/ramdisk0;.;
卸載模塊(再上一節所提到的過程中自動加載),;rmmod;rd;
加載ramdisk模塊並且把它的大校設為20M,insmod;rd;rd_size=20000;
創建一個文件系統,;mke2fs;/dev/ram0;
加載ramdisk,;mount;/dev/ram0;/tmp/ramdisk0;

--------------------------------------------------------------------------------
使用;RamDisk;做;webserver例子.
--------------------------------------------------------------------------------

Okay,;這是一個用3個ramdisk做webserver的例子。讓我們設想你在;RedHat;6.0;上默認安裝的;Apache;的cgi-scripts,;html,;和;icons都不超過9M。這就是如何實現這一點。
首先,利用命令將webserver的跟目錄移到另外一個地方。並且加載ramdisk。

mv;/home/httpd/;/home/httpd_real
mkdir;/home/httpd
mkdir;/home/httpd/cgi-bin
mkdir;/home/httpd/html
mkdir;/home/httpd/icons

接下來,將這些命令加到啟動進程中/etc/rc.d/init.d/httpd.init;(或者是系統啟動httpd的地方):;


###;Make;the;ramdisk;partitions
/sbin/mkfs;-t;ext2;/dev/ram0
/sbin/mkfs;-t;ext2;/dev/ram1
/sbin/mkfs;-t;ext2;/dev/ram2

###;Mount;the;ramdisks;to;their;appropriate;places

mount;/dev/ram0;/home/httpd/cgi-bin
mount;/dev/ram1;/home/httpd/icons
mount;/dev/ram2;/home/httpd/html

###;Copying;real;directory;to;ramdisks;(the
###;data;on;the;ramdisks;is;lost;after;a;reboot)
tar;-C;/home/httpd_real;-c;.;|;tar;-C;/home/httpd;-x

###;After;this;you;can;start;the;web-server.

--------------------------------------------------------------------------------
注釋
--------------------------------------------------------------------------------
請記住一件事如果你改變了數據備份你的數據。在系統重新啟動時,所有的變化將失去。
應該設置一個cron進程。使它每十分鐘時檢查一下文件是否有變動,並且備份這些改動。另一種可能是你對真實的目錄進行了改動,所以要拷貝這些變動到ramdisk。這樣做也許更安全。;
一個非常酷的做法是用一個有1G內存的計算機並且將其中的256M作為"/tmp".;如果你有很多的進程使用"/tmp",這樣做會提高你的系統速度。同時,/tmp目錄中的東西將在系統重新啟動的時候被刪除,這可是一件好事。;
Linux使用所有沒有被程序使用的內存作為一個緩存,但我的經歷告訴我ramdisk將會更多的提高速度。;

--------------------------------------------------------------------------------
copyright © 萬盛學電腦網 all rights reserved