欢迎光临
我们一直在努力

Linux下创建和使用RamDisk的技巧-网管专栏,安全与管理

建站超值云服务器,限时71元/月

    先介绍一下什么是ramdisk。ramdisk实际是从内存中划出一部分作为一个分区使用,换句话说,就是把内存一部分当做硬盘使用,你可以向里边存文件。那么为什么要用ramdisk呢?假设有几个文件要频繁的使用,你如果将它们加到内存当中,程序运行速度会大副提高,因为内存的读写速度远高于硬盘。况且内存价格低廉,一台pc有128m或256m已不是什么新鲜事。划出部分内存提高整体性能不亚于更换新的cpu。何乐而不为呢?象web服务器这样的计算机,需要大量的读取和交换特定的文件,因此,在web服务器上建立ramdisk会大大提高网络读取速度。

1. 创建和使用ramdisk的方法。

    使用ramdisk非常方便,缺省安装的redhat6.0就支持ramdisk。你所要作的就是格式化ramdisk并把它装载到一个目录下。要想查看ramdisk的数目,用命令”ls -al /dev/ram*”,它会给出所有当前情况下可用的ramdisk。这些ramdisk只有使用的时候才占用内存。下面是使用ramdisk的几个命令:

#创建装载点

mkdir /tmp/ramdisk0

# 创建一个文件系统

mke2fs /dev/ram0

#装载ramdisk:

mount /dev/ram0 /tmp/ramdisk0

  这三个命令将会为ramdisk创建一个目录、格式化ramdisk(创建文件系统)并把ramdisk装载到目录”/tmp/ramdisk0″中。现在,你就可以把它作为一个磁盘分区使用了。

  如果格式化ramdisk失败,可能是因为你没有把对ramdisk的支持编译进内核中去。内核中对ramdisk的配置选项是 config_blk_dev_ram。

  缺省的ramdisk为4m。使用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可以查到你实际能用的ramdisk的大小(文件系统也占用一定空间):

>df -k /dev/ram0

filesystem 1k-blocks used available use% mounted on

/dev/ram0 3963 13 3746 0% /tmp/ramdisk0

不过要记住,ramdisk中的数据会在机器重新启动后消失,因此应把其中有用的数据及时备份到硬盘中。

2. 改变ramdisk大小的技巧?

  为使用ramdisk,你或者要将对ramdisk的支持编译到内核中去,或者把它编译为一个可装载模块。编译为一个可装载模块有一个好处,就是可以在装载时任意指定ramdisk的大小。

  把下面这一行加到你的lilo.conf 文件中去:

ramdisk_size=10000 (或对老内核写作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,其余被文件系统占用。当你编译为一个可装载模块后,你可以在模块装载时决定ramdisk的大小,这可以通过 /etc/conf中的选项设置来设定。或者通过作为ismod命令行参数来实现。

options rd rd_size=10000

insmod rd rd_size=10000

下面是使用模块的例子:

1. 卸载下上一章装载的ramdisk, umount /tmp/ramdisk0.

2. 卸载模块rmmod rd。

3. 装载ramdisk模块并设置大小为20m,insmod rd rd_size=20000。

4. 创建文件系统,mke2fs /dev/ram0。

5. 装载ramdisk ,mke2fs /dev/ram0。

1. 在web服务器上使用ramdisk的实例?

  本例介绍在web服务器上使用3个ramdisk的方法。所用的web服务器是redhat 6.0 自带的apache。

  首先,把web根目录中所有文件移到其它目录中,然后创建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文件中去:

### 创建3个ramdisk

/sbin/mkfs -t ext2 /dev/ram0

/sbin/mkfs -t ext2 /dev/ram1

/sbin/mkfs -t ext2 /dev/ram2

### 加载ramdisk到开始创建的目录中

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服务器即可生效,试一下速度是否有所改变。

后语:

1. 一定要记住保存ramdisk中有用的东西,否则,重新启动后将化为乌有。你可以用cron设定一个计划,每隔10分钟扫描一下ramdisk中的文件是否发生变化,如有,拷贝到硬盘中,这会比较安全。

2.最酷的应用是如果你有1g的内存,划出256m来作为暂存区/tmp,如果很多程序用到/tmp,那么你的系统性能会大大提高,而且重新启动后垃圾消失,真是一举两得。

 

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » Linux下创建和使用RamDisk的技巧-网管专栏,安全与管理
分享到: 更多 (0)