荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: georgehill (New Century New Dream), 信区: Linux
标  题: 如何在linux下使用 Ramdisk(转寄)
发信站: BBS 荔园晨风站 (Sat Jan  6 15:08:51 2001), 站内信件

【 以下文字转载自 georgehill 的信箱 】
【 原文由 georgehill.bbs@smth.org 所发表 】
发信人: tattoo (突突~发誓要专心自习了), 信区: Linux
标  题: 如何在linux下使用 Ramdisk(转寄)
发信站: BBS 水木清华站 (Fri Dec 22 23:43:40 2000)

by Mark Nielsen
关于作者:
home page800linux.comThe Computer Underground, Inc. 在工作之余, 参加志愿者组
织,写一些类似于此文章的文档。此文档是以 Nedit 和 ispell编辑的。
正文:
RamDisk简介
如何使用RamDisk
改变 ramdisks 的大小
使用 RamDisk 做 webserver例子.
注释


如何在linux下使用 Ramdisk
摘要:
这篇文章将展示如何使用 RAM 作为虚拟硬盘。
----------------------------------------------------------------------------
----
RamDisk简介
这是一个关于在RedHat 6.0系统上如何建立一个RamDisk的文章。对于其他的发行版本这
个过程也应该是相识的。
什么是RamDisk? 一个A RamDisk 是你用作一个硬盘分区的一部分内存空间。或者换句话
说,你是把内存假设为一个硬盘驱动器,并且你在它的上面存储文件。为什么我们要使
用 RamDisk? 好的,如果你知道通常将要使用的文件是被调入内存以提高计算机的性能
,因为内存的存储速度要快于硬盘。 这样类似于web服务器上的数据就可以用这个方法
提高访问速度。或是有点愚蠢的,假如你有一台PII550计算机并且有1G的内存空间和50
0M的硬盘,你也可以用这种方法来增加你的你的硬盘空间。 或者,你也可以做一个无盘
的机器,,没有比这个更为疯狂的了。
以下是一些可以得到帮助的资源。
http://metalab.unc.edu/LDP/HOWTO/Kernel-HOWTO.html
http://metalab.unc.edu/LDP/HOWTO/mini/LILO.html
/usr/src/linux/Documentation/ramdisk.txt
如何使用RamDisk
OK,使用ramdisk是一件很简单的事。首先,RedHat6.0的默认安装就支持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。其内核配置选项是 CON
FIG_BLK_DEV_RAM .
ramdisk的默认大小是 4Mb=4096 blocks. 在你进行mke2fs的时候你可以看到你的ramdi
sk的大小。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的大小。
Okay, 第一个办法。在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 做 webserver例子.
Okay, 这是一个用3个ramdisk做webserver的例子。让我们设想你在 RedHat 6.0 上默认
安装的 Apache 的cgi-scripts, html, 和 icons都不超过9M。这就是如何实现这一点。

首先,利用命令将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.init (或者是系统启动h
ttpd的地方):
 ### Make the ramdisk partitions
/sbin/mkfs -t ext2 /dev/ram0
/sbin/mkfs -t ext2 /dev/ram1
/sbin/mkfs -t ext2 /dev/ram2
 ### Mount the ramdisks to their appropriate places
mount /dev/ram0 /home/httpd/cgi-bin
mount /dev/ram1 /home/httpd/icons
mount /dev/ram2 /home/httpd/html
 ### Copying real directory to ramdisks (the
  ### data on the ramdisks is lost after a reboot)
tar -C /home/httpd_real -c . | tar -C /home/httpd -x
  ### After this you can start the web-server.
注释
请记住一件事如果你改变了数据备份你的数据。在系统重新启动时,所有的变化将失去

应该设置一个cron进程。使它每十分钟时检查一下文件是否有变动,并且备份这些改动
。另一种可能是你对真实的目录进行了改动,所以要拷贝这些变动到ramdisk。这样做也
许更安全。
一个非常酷的做法是用一个有1G内存的计算机并且将其中的256M作为"/tmp". 如果你有
很多的进程使用"/tmp",这样做会提高你的系统速度。同时,/tmp目录中的东西将在系
统重新启动的时候被删除,这可是一件好事。
Linux使用所有没有被程序使用的内存作为一个缓存,但我的经历告诉我ramdisk将会更
多的提高速度。
----------------------------------------------------------------------------
----
主页由LinuxFocus编辑组维护
? Mark Nielsen
LinuxFocus 1999 翻译信息:en -> -- Mark Nielsen
en -> chinese wang zhuohao
1999-11-22, generated by lfparser version 0.9


--
        他拿着球和手套来到空无一人的球场,站在投手丘上,合手、举臂、抬腿、
        投球。球沿着他的目光飞越本垒板,在地上砸起了一些尘土,滚进挡网下面
        的枯叶里。
        “很好的投球呢!”
        他望着空中还透着一点暖意的太阳,似乎又听到了她的声音。
        这时候阳光刚好照着他的脸,他的眼睛好亮......


※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.160.22]
--
※ 转载:·BBS 荔园晨风站 bbs.szu.edu.cn·[FROM: 192.168.1.115]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店