嵌入式linux制作randisk,如何在linux下使用 Ramdisk-嵌入式系统-与非网

本文详细介绍了在RedHat6.0系统上如何创建和使用RamDisk,包括其作用、优势和配置步骤。RamDisk是一种将内存模拟为硬盘分区的技术,用于提升读写速度,尤其适用于web服务器加速。文章提到了通过修改内核配置或加载模块来调整RamDisk大小的方法,并警告了数据在重启后会丢失的事实,建议使用cron任务定期备份。此外,还给出了使用多个RamDisk作为web服务器的示例。
摘要由CSDN通过智能技术生成

RamDisk简介

这是一个关于在RedHat 6.0系统上如何建立一个RamDisk的文章。对于其他的发行版本这个过程也应该是相识的。

什么是RamDisk? 一个A RamDisk 是你用作一个硬盘分区的一部分内存空间。或者换句话说,你是把内存假设为一个硬盘驱动器,并且你在它的上面存储文件。为什么我们要使用 RamDisk? 好的,如果你知道通常将要使用的文件是被调入内存以提高计算机的性能,因为内存的存储速度要快于硬盘。 这样类似于web服务器上的数据就可以用这个方法提高访问速度。或是有点愚蠢的,假如你有一台PII550计算机并且有1G的内存空间和500M的硬盘,你也可以用这种方法来增加你的你的硬盘空间。 或者,你也可以做一个无盘的机器,,没有比这个更为疯狂的了。

如何使用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。其内核配置选项是 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/09Linux ext2 filesystem formatFilesystem label=1024 inodes, 4096 blocks204 blocks (4.98%) reserved for the super userFirst data block=1Block size=1024 (log=0)Fragment size=1024 (log=0)1 block group8192 blocks per group, 8192 fragments per group1024 inodes per group

执行df -k /dev/ram0 你实际用了多少空间:

>df -k /dev/ram0Filesystem 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/hdamap=/boot/mapinstall=/boot/boot.bprompttimeout=50image=/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_realmkdir /home/httpdmkdir /home/httpd/cgi-binmkdir /home/httpd/htmlmkdir /home/httpd/icons

接下来,将这些命令加到启动进程中/etc/rc.d/init.d/httpd.init (或者是系统启动httpd的地方):

### 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 placesmount /dev/ram0 /home/httpd/cgi-binmount /dev/ram1 /home/httpd/iconsmount /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将会更多的提高速度。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值