|
|
.2 Linux下創(chuàng)建和使用RamDisk的技巧 先介紹一下什么是RamDisk。RamDisk實際是從內(nèi)存中劃出一部分作為一個分區(qū)使用,換句話說,就是把內(nèi)存一部分當(dāng)做硬盤使用,你可以向里邊存文件。那么為什么要用RamDisk呢?假設(shè)有幾個文件要頻繁的使用,你如果將它們加到內(nèi)存當(dāng)中,程序運行速度會大副提高,因為內(nèi)存的讀寫速度遠(yuǎn)高于硬盤。況且內(nèi)存價格低廉,一臺PC有128M或256M已不是什么新鮮事。劃出部分內(nèi)存提高整體性能不亞于更換新的CPU。何樂而不為呢?象WEB服務(wù)器這樣的計算機,需要大量的讀取和交換特定的文件,因此,在WEB服務(wù)器上建立RamDisk會大大提高網(wǎng)絡(luò)讀取速度。 (1)創(chuàng)建和使用RamDisk的方法。 使用RamDisk非常方便,缺省安裝的RedHat6.0就支持RamDisk。你所要作的就是格式化RamDisk并把它裝載到一個目錄下。要想查看RamDisk的數(shù)目,用命令"ls -al /dev/ram*",它會給出所有當(dāng)前情況下可用的RamDisk。這些RamDisk只有使用的時候才占用內(nèi)存。下面是使用RamDisk的幾個命令: #創(chuàng)建裝載點 mkdir /tmp/ramdisk0 # 創(chuàng)建一個文件系統(tǒng) mke2fs /dev/ram0 #裝載ramdisk: mount /dev/ram0 /tmp/ramdisk0 這三個命令將會為RamDisk創(chuàng)建一個目錄、格式化RamDisk(創(chuàng)建文件系統(tǒng))并把RamDisk裝載到目錄"/tmp/ramdisk0"中,F(xiàn)在,你就可以把它作為一個磁盤分區(qū)使用了。 如果格式化RamDisk失敗,可能是因為你沒有把對RamDisk的支持編譯進(jìn)內(nèi)核中去。內(nèi)核中對RamDisk的配置選項是 CONFIG_BLK_DEV_RAM。 缺省的RamDisk為4M。使用mke2fs命令可以查知你所獲RamDisk的大小。命令mke2fs /dev/ram0會產(chǎn)生以下信息: 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可以查到你實際能用的RamDisk的大。ㄎ募到y(tǒng)也占用一定空間): >df -k /dev/ram0 Filesystem 1k-blocks Used Available Use% Mounted on /dev/ram0 3963 13 3746 0% /tmp/ramdisk0 不過要記住,RamDisk中的數(shù)據(jù)會在機器重新啟動后消失,因此應(yīng)把其中有用的數(shù)據(jù)及時備份到硬盤中。 (2)改變RamDisk大小的技巧? 為使用RamDisk,你或者要將對RamDisk的支持編譯到內(nèi)核中去,或者把它編譯為一個可裝載模塊。編譯為一個可裝載模塊有一個好處,就是可以在裝載時任意指定RamDisk的大小。 把下面這一行加到你的lilo.conf 文件中去: ramdisk_size=10000 (或?qū)蟽?nèi)核寫作ramdisk=10000) 這樣你鍵入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,其余被文件系統(tǒng)占用。當(dāng)你編譯為一個可裝載模塊后,你可以在模塊裝載時決定RamDisk的大小,這可以通過 /etc/conf中的選項設(shè)置來設(shè)定;蛘咄ㄟ^作為ismod命令行參數(shù)來實現(xiàn)。 options rd rd_size=10000 insmod rd rd_size=10000 (3)兩個例子 下面是使用模塊的例子: - 卸載下上一章裝載的RamDisk, umount /tmp/ramdisk0. - 卸載模塊rmmod rd。 - 裝載RamDisk模塊并設(shè)置大小為20M,insmod rd rd_size=20000。 - 創(chuàng)建文件系統(tǒng),mke2fs /dev/ram0。 - 裝載RamDisk ,mke2fs /dev/ram0。 在WEB服務(wù)器上使用RamDisk的實例? 本例介紹在WEB服務(wù)器上使用3個RamDisk的方法。所用的WEB服務(wù)器是RedHat 6.0 自帶的Apache。 首先,把WEB根目錄中所有文件移到其它目錄中,然后創(chuàng)建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文件中去: ### 創(chuàng)建3個RamDisk /sbin/mkfs -t ext2 /dev/ram0 /sbin/mkfs -t ext2 /dev/ram1 /sbin/mkfs -t ext2 /dev/ram2 ### 加載RamDisk到開始創(chuàng)建的目錄中 mount /dev/ram0 /home/httpd/cgi-bin mount /dev/ram1 /home/httpd/icons mount /dev/ram2 /home/httpd/html ### 拷貝真正的目錄中的所用文件到RamDisk 中 tar -C /home/httpd_real -c . | tar -C /home/httpd -x 最后,重新啟動WEB服務(wù)器即可生效,試一下速度是否有所改變。 后語: - 一定要記住保存RamDisk中有用的東西,否則,重新啟動后將化為烏有。你可以用cron設(shè)定一個計劃,每隔10分鐘掃描一下RamDisk中的文件是否發(fā)生變化,如有,拷貝到硬盤中,這會比較安全。 -最酷的應(yīng)用是如果你有1G的內(nèi)存,劃出256M來作為暫存區(qū)/tmp,如果很多程序用到/tmp,那么你的系統(tǒng)性能會大大提高,而且重新啟動后垃圾消失,真是一舉兩得。
|
|
狀 態(tài):
離線
公司簡介
產(chǎn)品目錄
|
|
公司名稱:
|
深圳市盈鵬飛科技有限公司
|
聯(lián) 系 人: |
李希崗
|
電 話: |
0086-13602511395
|
傳 真: |
0755-82523175,82523176-819 |
地 址: |
深圳市福田區(qū)福明路40號,雷圳大廈12A06 |
郵 編: |
518033 |
主 頁: |
|
|
|
|
|