一 什么是RamDisk
Ram:內(nèi)存,Disk:磁盤,在Linux中可以將一部分內(nèi)存當(dāng)作分區(qū)來使用,稱之為RamDisk。對于一些經(jīng)常被訪問、并且不會被更改的文件,可以將它們通過RamDisk放在內(nèi)存中,能夠明顯地提高系統(tǒng)性能。RamDisk工作于虛擬文件系統(tǒng)(VFS)層,不能格式化,但可以創(chuàng)建多個RamDisk。雖然現(xiàn)在硬盤價錢越來越便宜,但對于一些我們想讓其訪問速度很高的情況下,RamDisk還是很好用的。
如果對計(jì)算速度要求很高,可以通過增加內(nèi)存來實(shí)現(xiàn),使用ramdisk技術(shù)。 一個A RamDisk就是把內(nèi)存假設(shè)為一個硬盤驅(qū)動器,并且在它的上面存儲文件。假設(shè)有幾個文件要頻繁的使用,如果將它們加到內(nèi)存當(dāng)中,程序運(yùn)行速度會大幅度提高,因?yàn)閮?nèi)存的讀寫速度遠(yuǎn)高于硬盤。劃出部分內(nèi)存提高整體性能,不亞于更換新的CPU。像Web服務(wù)器這樣的計(jì)算機(jī),需要大量讀取和交換特定的文件。因此,在Web服務(wù)器上建立RamDisk會大大提高網(wǎng)絡(luò)讀取速度。
二 如何使用RamDisk
格式化一個ramdisk并把他加到一個目錄上。列出所有可用的ramdisk用“ls -al /dev/ram*”。這就會列出你現(xiàn)有可用的ramdisk。這些ramdisk并不搶奪內(nèi)存,除非進(jìn)行格式化的一類操作。這里有一個使用ramdisk的例子。 # create a mount point: mkdir /tmp/ramdisk0 # create a filesystem: mke2fs /dev/ram0 # mount the ramdisk: mount /dev/ram0 /tmp/ramdisk0 這三個命令將為ramdisk創(chuàng)建一個目錄,格式化ramdisk(創(chuàng)建文件系統(tǒng)),并且加載這個ramdisk到"/tmp/ramdisk0". 現(xiàn)在你可以將這個目錄看成一個虛擬的分區(qū)。使用它就象使用其它的目錄一樣。 如果對ramdisk的格式化失敗,那就是你的內(nèi)核不支持ramdisk。其內(nèi)核配置選項(xiàng)是 CONFIG_BLK_DEV_RAM . ramdisk的默認(rèn)大小是 4Mb=4096 blocks. 在你進(jìn)行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 執(zhí)行df -k /dev/ram0 你實(shí)際用了多少空間: >df -k /dev/ram0 Filesystem 1k-blocks Used Available Use% Mounted on /dev/ram0 3963 13 3746 0% /tmp/ramdisk0 那么麻煩是什么呢?在系統(tǒng)重新啟動的時候,將刷新這個區(qū)域。不要將任何沒有拷貝的數(shù)據(jù)放在這個區(qū)域。如果你對這個目錄進(jìn)行了修改,并且需要保留這些修改,采取一些辦法進(jìn)行備份。
三 改變RamDisks 的大小
要想使用RamDisk你必須或是得到內(nèi)核的支持或是以模塊的形式將他加載到系統(tǒng)中。其中內(nèi)核的配置選項(xiàng)是 CONFIG_BLK_DEV_RAM . 把ramdisk編譯成一個可加載的模塊的好處是你可以在加載是重新確定ramdisk的大小。 第一個辦法。在lilo.conf文件中加入: ramdisk_size=10000 (or ramdisk=10000 for old kernels) 這樣在你使用lilo命令和重新啟動計(jì)算機(jī)之后,ramdisk的默認(rèn)大小將會是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多的空間,文件系統(tǒng)也將占用一定空間。 當(dāng)你以模塊的形式編譯ramdisk時,你可以在加載的時候決定ramdisk的大小。這也可以通過修改/etc/conf.modules 的選項(xiàng)設(shè)置來做到。 options rd rd_size=10000 或是在命令行中指定參數(shù)給ismod: insmod rd rd_size=10000 以下是介紹如何使用這樣的模塊的例子: 卸載ramdisk,umount /tmp/ramdisk0 . 卸載模塊(再上一節(jié)所提到的過程中自動加載), rmmod rd 加載ramdisk模塊并且把它的大校設(shè)為20M,insmod rd rd_size=20000 創(chuàng)建一個文件系統(tǒng), mke2fs /dev/ram0 加載ramdisk, mount /dev/ram0 /tmp/ramdisk0
四 RamDisk的優(yōu)缺點(diǎn)
RamDisk就是將內(nèi)存模擬為硬盤空間。無論什么時候你使用RamDisk,實(shí)際上你是在使用內(nèi)存而不是硬盤。在這一點(diǎn)上既有優(yōu)點(diǎn)又有缺點(diǎn)。最基本的,最大的優(yōu)點(diǎn)是你是在使用內(nèi)存,你所做的一切都會快一些,因?yàn)橛脖P的速度較內(nèi)存慢。最大的缺點(diǎn)是如果你改變了數(shù)據(jù)庫服務(wù)器的內(nèi)容并且重新啟動機(jī)器時,所做的一切改動都將丟失。 | |