一 什么是RamDisk
Ram:內存,Disk:磁盤,在Linux中可以將一部分內存當作分區來使用,稱之為RamDisk。對於一些經常被訪問、並且不會被更改的文件,可以將它們通過RamDisk放在內存中,能夠明顯地提高系統性能。RamDisk工作於虛擬文件系統(VFS)層,不能格式化,但可以創建多個RamDisk。雖然現在硬盤價錢越來越便宜,但對於一些我們想讓其訪問速度很高的情況下,RamDisk還是很好用的。
如果對計算速度要求很高,可以通過增加內存來實現,使用ramdisk技術。一個A 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
那么麻煩是什么呢?在系統重新啟動的時候,將刷新這個區域。不要將任何沒有拷貝的數據放在這個區域。如果你對這個目錄進行了修改,並且需要保留這些修改,采取一些辦法進行備份。
格式化一個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你必須或是得到內核的支持或是以模塊的形式將他加載到系統中。其中內核的配置選項是 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,實際上你是在使用內存而不是硬盤。在這一點上既有
優點又有缺點。最基本的,最大的優點是你是在使用內存,你所做的一切都會快一些,因為硬盤的速度較內存慢。最大的缺點是如果你改變了數據庫服務器的內容並且重新啟動機器時,所做的一切改動都將丟失。