一、什麼是RamDisk
顧名思義,Ram:記憶體,Disk:磁碟,RamDisk就是指使用你的一部分記憶體空間來類比出一個硬碟分區。不過這在硬碟越來越便宜的今天好象並不是很有用,但現在記憶體也越來越便宜呀,對於一些我們想讓其訪問速度很高的情況下,還是可以試一試的。
二、建立一個RamDisk
其實建立一個RamDisk是一件很簡單的事,由於RedHat Linux 6.0在預設安裝下就支援了RamDisk,你只需要格式化一個RamDisk,並將其mount到某一個目錄上就可以了。
1、 查一下所有可用的ramdisk:
這就會列出你現在可用的ramdisk,這些ramdisk現在還不佔用記憶體,除非你對它進行格式化。
2、 建立一個RamDisk:
執行該命令將出現以下提示
mke2fs 1.14, 9-Jan-1999 for EXT2 FS 0.5b, 95/08/09Linux ext2 filesystem formatFilesystem label=1024 inodes, 4096 blocks204 blocks (4.98%) reserved for the super userFirst data block=1Block size=1024 (log=0)Fragment size=1024 (log=0)1 block group8192 blocks per group, 8192 fragments per group1024 inodes per group
|
如果該操作執行失敗,那麼有可能是因為你的核心不支援ramdisk,這時你只有重新設定、編譯核心。在配置時將CONFIG_BLK_DEV_RAM設定為Enable。
3、 將其mount上來使用:
mkdir /tmp/ramdisk0 建立一個目錄
mount /dev/ram0 /tmp/ramdisk0 將其mount到剛才建立的目錄上
這樣,我們就可以使用這個建立的RamDisk--/tmp/ramdisk0
另外,我們可以執行df命令來查看一下該RamDisk的大小:
>df -k /dev/ram0Filesystem 1k-blocks Used Available Use% Mounted on/dev/ram0 3963 13 3746 0% /tmp/ramdisk0
|
要注意的一點是:由於這個部分是記憶體,因此在系統重新啟動的時候,將重新整理這個地區。所以不要將任何沒有拷貝的資料放在這個地區。如果你對這個目錄進行了修改,並且需要保留這些修改,採取一些辦法進行備份。也就是說,這個目錄只能用於為了提高訪問速度而暫時儲存資料的地方。
三、建立大小合適的RamDisk
上面我們建立了一個RamDisk,但是無法指定大小,現在我們來學習如何建立大小合適的RamDisk。
1、 使用LILO配置:
我們在lilo.conf檔案中加入一行:
ramdisk_size=10000 (如果是老版核心,則寫ramdisk=10000)
然後運行 /sbin/lilo 產生新的LILO。
這樣當你重新啟動電腦之後,ramdisk的預設大小將會是10M。
2、使用/etc/conf.modules配置:
如果你的核心是以模組的形式編譯ramdisk的話,那麼就可以在載入的時候決定ramdisk的大小。也就是可以通過修改/etc/conf.modules 的選項設定來做到,加入:
當然也可以在命令列中指定參數給ismod來實現:
當使用以上兩種方法建立了合適大小的ramdisk時,我們還需要執行以下命令來使用它:
mke2fs /dev/ram0mkdir /tmp/ramdisk0mount /dev/ram0 /tmp/ramdisk0
|
而當不使用時,應執行:
若是使用insmod來載入模組的,應該再執行:
四、使用RamDisk的一個執行個體
下面,我們通過一個使用Ramdisk做WEB伺服器的執行個體來說明其應用。
1、 首先將WEB伺服器移到另外一個地方
mv /home/httpd/ /home/httpd_realmkdir /home/httpdmkdir /home/httpd/cgi-binmkdir /home/httpd/htmlmkdir /home/httpd/icons
|
2、 將以下命令加入到/etc/rc.d/init.d/httpd.init中去:
/sbin/mkfs -t ext2 /dev/ram0/sbin/mkfs -t ext2 /dev/ram1/sbin/mkfs -t ext2 /dev/ram2mount /dev/ram0 /home/httpd/cgi-binmount /dev/ram1 /home/httpd/iconsmount /dev/ram2 /home/httpd/htmltar -C /home/httpd_real -c . | tar -C /home/httpd -x
|
這樣就可以了,但是請記住,你更新資料時,應更新httpd_real目錄,而不要更新httpd目錄,否則在系統重新啟動時,所有的更新都將丟失。你最好設定一個cron進程,讓其監視httpd_real是否有改變,一有改變就將其複製到ramdisk中去。
五、使用RamDisk做/tmp目錄
我還想推薦一個更酷的方法,如果你的記憶體太多,那麼可以將其中一部分做為/tmp目錄,這樣將大大提高你的系統執行速度。而且,/tmp將會在系統重新啟動時被刪除,多麼愜意呀。