一、什麼是RamDisk
顧名思義,Ram:內存,Disk:磁盤,RamDisk就是指使用你的一部分內存空間來模擬出一個硬盤分區。不過這在硬盤越來越便宜的今天好象並不是很有用,但現在內存也越來越便宜呀,對於一些我們想讓其訪問速度很高的情況下,還是可以試一試的。
二、創建一個RamDisk
其實創建一個RamDisk是一件很簡單的事,由於RedHat Linux 6.0在默認安裝下就支持了RamDisk,你只需要格式化一個RamDisk,並將其mount到某一個目錄上就可以了。
1、 查一下所有可用的ramdisk:
ls –al /dev/ram*
這就會列出你現在可用的ramdisk,這些ramdisk現在還不占用內存,除非你對它進行格式化。
2、 創建一個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
如果該操作執行失敗,那麼有可能是因為你的內核不支持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/ram0
Filesystem 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 的選項設置來做到,加入:
options rd rd_size=10000
當然也可以在命令行中指定參數給ismod來實現:
insmod rd rd_size=10000
當使用以上兩種方法創建了合適大小的ramdisk時,我們還需要執行以下命令來使用它:
mke2fs /dev/ram0
mkdir /tmp/ramdisk0
mount /dev/ram0 /tmp/ramdisk0
而當不使用時,應執行:
umount /tmp/ramdisk0
若是使用insmod來加載模塊的,應該再執行:
rmmod rd
四、使用RamDisk的一個實例
下面,我們通過一個使用Ramdisk做WEB服務器的實例來說明其應用。
1、 首先將WEB服務器移到另外一個地方
mv /home/httpd/ /home/httpd_real
mkdir /home/httpd
mkdir /home/httpd/cgi-bin
mkdir /home/httpd/Html
mkdir /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/ram2
mount /dev/ram0 /home/httpd/cgi-bin
mount /dev/ram1 /home/httpd/icons
mount /dev/ram2 /home/httpd/html
tar -C /home/httpd_real -c . tar -C /home/httpd -x
這樣就可以了,但是請記住,你更新數據時,應更新httpd_real目錄,而不要更新httpd目錄,否則在系統重新啟動時,所有的更新都將丟失。你最好設置一個cron進程,讓其監視httpd_real是否有改變,一有改變就將其復制到ramdisk中去。
五、使用RamDisk做/tmp目錄
我還想推薦一個更酷的方法,如果你的內存太多,那麼可以將其中一部分做為/tmp目錄,這樣將大大提高你的系統執行速度。而且,/tmp將會在系統重新啟動時被刪除,多麼惬意呀。