天天看點

RamDisk

一 什麼是RamDisk

      Ram:記憶體,Disk:磁盤,在Linux中可以将一部分記憶體當作分區來使用,稱之為RamDisk。對于一些經常被通路、并且不會被更改的檔案,可以将它們通過RamDisk放在記憶體中,能夠明顯地提高系統性能。RamDisk工作于虛拟檔案系統(VFS)層,不能格式化,但可以建立多個RamDisk。雖然現在硬碟價錢越來越便宜,但對于一些我們想讓其通路速度很高的情況下,RamDisk還是很好用的。

    如果對計算速度要求很高,可以通過增加記憶體來實作,使用ramdisk技術。 一個 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,實際上你是在使用記憶體而不是硬碟。在這一點上既有優點又有缺點。最基本的,最大的優點是你是在使用記憶體,你所做的一切都會快一些,因為硬碟的速度較記憶體慢。最大的缺點是如果你改變了資料庫伺服器的内容并且重新啟動機器時,所做的一切改動都将丢失。

  • 2009-11-12                  

    注:源自原百度部落格“至美心"

繼續閱讀