RamDisk簡介
這是一個關於在RedHat
系統上如何建立一個RamDisk的文章
對於其他的發行版本這個過程也應該是相識的
什麼是RamDisk? 一個A RamDisk 是你用作一個硬盤分區的一部分內存空間
或者換句話說
你是把內存假設為一個硬盤驅動器
並且你在它的上面存儲文件
為什麼我們要使用 RamDisk? 好的
如果你知道通常將要使用的文件是被調入內存以提高計算機的性能
因為內存的存儲速度要快於硬盤
這樣類似於web服務器上的數據就可以用這個方法提高訪問速度
或是有點愚蠢的
假如你有一台PII
計算機並且有
G的內存空間和
M的硬盤
你也可以用這種方法來增加你的你的硬盤空間
或者
你也可以做一個無盤的機器
沒有比這個更為瘋狂的了
以下是一些可以得到幫助的資源
/usr/src/linux/Documentation/ramdisk
txt
如何使用RamDisk
OK
使用ramdisk是一件很簡單的事
首先
RedHat
的默認安裝就支持ramdisk
你所需要做的就是格式化一個ramdisk並且把他家在到一個目錄上
列出所有可用的ramdisk用
ls
al /dev/ram*
這就會列出你現有可用的ramdisk
這些ramdisk並不搶奪內存
除非進行格式化的一類操作
這裡有一個使用ramdisk的例子
# create a mount point:
mkdir /tmp/ramdisk
# create a filesystem:
mke
fs /dev/ram
# mount the ramdisk:
mount /dev/ram
/tmp/ramdisk
這三個命令將為ramdisk創建一個目錄
格式化ramdisk(創建文件系統)
並且加載這個ramdisk到
/tmp/ramdisk
現在你可以將這個目錄看成一個虛擬的分區
使用它就象使用其它的目錄一樣
如果對ramdisk的格式化失敗
那就是你的內核不支持ramdisk
其內核配置選項是 CONFIG_BLK_DEV_RAM
ramdisk的默認大小是
Mb=
blocks
在你進行mke
fs的時候你可以看到你的ramdisk的大小
mke
fs /dev/ram
將產生類適於以下的信息
mke
fs
Jan
for EXT
FS
b
/
/
Linux ext
filesystem format
Filesystem label=
inodes
blocks
blocks (
%) reserved for the super user
First data block=
Block size=
(log=
)
Fragment size=
(log=
)
block group
blocks per group
fragments per group
inodes per group
執行df
k /dev/ram
你實際用了多少空間
>df
k /dev/ram
Filesystem
k
blocks Used Available Use% Mounted on
/dev/ram
% /tmp/ramdisk
那麼麻煩是什麼呢?在系統重新啟動的時候
將刷新這個區域
不要將任何沒有拷貝的數據放在這個區域
如果你對這個目錄進行了修改
並且需要保留這些修改
采取一些辦法進行備份
改變 ramdisks 的大小
要想使用ramdisk你必須或是得到內核的支持或是以模塊的形式將他加載到系統中
其中內核的配置選項是 CONFIG_BLK_DEV_RAM
把ramdisk編譯成一個可加載的模塊的好處是你可以在加載是重新確定ramdisk的大小
Okay
第一個辦法
在nf文件中加入這一行
ramdisk_size=
(or ramdisk=
for old kernels)
這樣在你使用lilo命令和重新啟動計算機之後
ramdisk的默認大小將會是
M
這是一個/etc/nf文件的例子
boot=/dev/hda
map=/boot/map
install=/boot/boot
b
prompt
timeout=
image=/boot/vmlinuz
label=linux
root=/dev/hda
read
only
ramdisk_size=
確切的說
我只是使用了
M多的空間
文件系統也將占用一定空間
當你以模塊的形式編譯ramdisk時
你可以在加載的時候決定ramdisk的大小
這也可以通過修改/etc/conf
modules 的選項設置來做到
options rd rd_size=
或是在命令行中指定參數給ismod
insmod rd rd_size=
以下是介紹如何使用這樣的模塊的例子
卸載ramdisk
umount /tmp/ramdisk
卸載模塊(再上一節所提到的過程中自動加載)
rmmod rd
加載ramdisk模塊並且把它的大校設為
M
insmod rd rd_size=
創建一個文件系統
mke
fs /dev/ram
加載ramdisk
mount /dev/ram
/tmp/ramdisk
使用 RamDisk 做 webserver例子
Okay
這是一個用
個ramdisk做webserver的例子
讓我們設想你在 RedHat
上默認安裝的 Apache 的cgi
scripts
html
和 icons都不超過
M
這就是如何實現這一點
首先
利用命令將webserver的跟目錄移到另外一個地方
並且加載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的地方):
### Make the ramdisk partitions
/sbin/mkfs
t ext
/dev/ram
/sbin/mkfs
t ext
/dev/ram
/sbin/mkfs
t ext
/dev/ram
### Mount the ramdisks to their appropriate places
mount /dev/ram
/home/httpd/cgi
bin
mount /dev/ram
/home/httpd/icons
mount /dev/ram
/home/httpd/html
### Copying real directory to ramdisks (the
### data on the ramdisks is lost after a reboot)
tar
C /home/| tar
C /home/httpd
x
### After this you can start the web
server
注釋
請記住一件事如果你改變了數據備份你的數據
在系統重新啟動時
所有的變化將失去
應該設置一個cron進程
使它每十分鐘時檢查一下文件是否有變動
並且備份這些改動
另一種可能是你對真實的目錄進行了改動
所以要拷貝這些變動到ramdisk
這樣做也許更安全
一個非常酷的做法是用一個有
G內存的計算機並且將其中的
M作為
/tmp
如果你有很多的進程使用
/tmp
這樣做會提高你的系統速度
同時
/tmp目錄中的東西將在系統重新啟動的時候被刪除
這可是一件好事
Linux使用所有沒有被程序使用的內存作為一個緩存
但我的經歷告訴我ramdisk將會更多的提高速度
From:http://tw.wingwit.com/Article/program/Oracle/201311/18666.html