一 什麼是RamDisk
Ram:記憶體,Disk:磁碟,在Linux中可以將一部分記憶體當作分區來使用,稱之為RamDisk。對於一
些經常被訪問、並且不會被更改的檔案,可以將它們通過RamDisk放在記憶體中,能夠明顯地提高系統效能。RamDisk工作於虛擬檔案系統(VFS)
層,不能格式化,但可以建立多個RamDisk。雖然現在硬碟價錢越來越便宜,但對於一些我們想讓其訪問速度很高的情況下,RamDisk還是很好用的。
如
果對計算速度要求很高,可以通過增加記憶體來實現,使用ramdisk技術。 一個A
RamDisk就是把記憶體假設為一個硬碟,並且在它的上面隱藏檔。假設有幾個檔案要頻繁的使用,如果將它們加到記憶體當中,程式運行速度會大幅度提
高,因為記憶體的讀寫速度遠高於硬碟。划出部分記憶體提高整體效能,不亞於更換新的CPU。像Web伺服器這樣的電腦,需要大量讀取和交換特定的檔案。因
此,在Web伺服器上建立RamDisk會大大提高網路讀取速度。
二 如何使用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/ram0 3963 13 3746 0% /tmp/ramdisk0
那麼麻煩是什麼呢?在系統重新啟動的時候,將重新整理這個地區。不要將任何沒有拷貝的資料放在這個地區。如果你對這個目錄進行了修改,並且需要保留這些修改,採取一些辦法進行備份。
三 改變RamDisks 的大小
要想使用RamDisk你必須或是得到核心的支援或是以模組的形式將他載入到系統中。其中核心的配置選項是 CONFIG_BLK_DEV_RAM . 把ramdisk編譯成一個可載入的模組的好處是你可以在載入是重新確定ramdisk的大小。
第一個辦法。在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的優缺點
RamDisk
就是將記憶體類比為硬碟空間。無論什麼時候你使用RamDisk,實際上你是在使用記憶體而不是硬碟。在這一點上既有優點又有缺點。最基本的,最大的優點是你
是在使用記憶體,你所做的一切都會快一些,因為硬碟的速度較記憶體慢。最大的缺點是如果你改變了資料庫伺服器的內容並且重新啟動機器時,所做的一切改動都將丟
失。