一 什么是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
那么麻烦是什么呢?在系统重新启动的时候,将刷新这个区域。不要将任何没有拷贝的数据放在这个区域。如果你对这个目录进行了修改,并且需要保留这些修改,采取一些办法进行备份。
三 改变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的优缺点
RamDisk
就是将内存模拟为硬盘空间。无论什么时候你使用RamDisk,实际上你是在使用内存而不是硬盘。在这一点上既有优点又有缺点。最基本的,最大的优点是你
是在使用内存,你所做的一切都会快一些,因为硬盘的速度较内存慢。最大的缺点是如果你改变了数据库服务器的内容并且重新启动机器时,所做的一切改动都将丢
失。
分享到:
相关推荐
嵌入式linux ramdisk源代码,希望对学习LINUX系统文件的同学有所帮助。
Linux系统下的ramdisk驱动是一种特殊的存储技术,它利用系统的RAM(随机存取内存)作为临时的...通过分析提供的源代码,可以深入理解Linux内核驱动的实现细节,这对于内核开发者和技术爱好者来说是非常宝贵的学习资料。
"一个ramdisk实现的例子"是针对Linux设备驱动程序编程的学习资源,特别适合那些对块设备驱动开发感兴趣的初学者。 在Linux内核中,设备驱动程序扮演着至关重要的角色,它们是操作系统与硬件之间沟通的桥梁。块设备...
通过以上步骤,我们不仅成功地为mini2440创建了一个ramdisk文件系统,还深入学习了ramdisk的工作机制及其在嵌入式系统中的应用。此外,还涉及到了Linux内核模块的构建、BusyBox的配置与安装等关键知识点,这对于理解...
例如,BabyLinux是一个极简的Linux系统,它利用BusyBox等工具,仅包含最基础的功能,适合用于学习Linux启动过程、RAMDisk的使用以及系统基本结构。 制作和理解BabyLinux这样的小型Linux系统,对于Linux爱好者来说...
在嵌入式Linux系统开发中,我们经常涉及到与硬件紧密集成的工作,比如处理微处理器(如ARM架构)、引导加载程序(U-Boot)以及内核的编译和配置。以下是一些关键知识点的详细说明: 1. **U-Boot编译**: U-Boot是...
根据提供的文档信息,本文将详细解析“9263制作ramdisk.pdf”中涉及的关键知识点,包括ramdisk的制作流程、必要的软件环境...通过对这些步骤的学习,可以有效地理解和掌握ramdisk的制作过程及其在嵌入式系统中的应用。
了解Linux内核的基本概念对于深入学习Linux系统至关重要。 #### 二、Linux内核版本0.11简介 - **版本**: 0.11 (0.95) - **作者**: 赵炯 - **来源**: www.oldlinux.org - **修订版本**: V1.9.5 本书对Linux内核...
书中会详细介绍Linux内核的启动过程,包括如何加载初始化RAMdisk,以及如何逐步启动系统服务。同时,内核的进程管理、内存管理和调度策略也是书中重点讨论的内容,这些内容对于优化系统性能和资源利用至关重要。 在...
通过制作这样的小型系统,可以深入理解Linux的启动过程,学习ramdisk的使用,同时在实践中快速提升Linux知识,带来乐趣。对于想要了解Linux内核和系统结构的爱好者来说,这是一个很好的实践项目。 三、适合阅读本...
讲解ARM Linux的移植,Uboot引导程序的移植,以及最小系统启动和嵌入式文件系统的移植(如ramdisk、JFFS2、YAFFS)。 7. **综合实验**:通过实践来巩固理论知识,如实现网络文件传输服务,构建嵌入式Web服务器,...
- **后续研究指导**:最后一章提供进一步学习Linux系统的方法和着手点。 #### 三、书籍详细内容分析 - **序言**:介绍本书的目的、适合读者以及为何选择v0.11版本进行详细注释。 - **基础知识要求**:读者需要具备...
Linux内核开发框架学习的知识点非常丰富,主要包含Linux内核的基本概念、内核映像的构建过程、引导加载器的原理以及内核编译过程中的各种配置选项等内容。为了深入理解这些知识点,我们可以根据提供的文件内容,梳理...
搭建好的最小Linux系统开发板可以运行 Android 和 Qt,还可以运行最简单的 Linux 最小文件系统 – “麻雀虽小五脏俱全”,便于学习。与 Android 带图形库不同的是,最小Linux系统不带图形库。 二、使用 BusyBox ...
Linux GKI(Global Kernel Interface)开发指南主要针对嵌入式系统和Android平台的开发者,旨在提供一套统一的内核...通过学习和实践,开发者可以更好地适应不同平台的需求,提高软件质量,同时减少开发时间和成本。
Linux LFS,全称为Linux From Scratch,是一种独特的学习和构建自己Linux系统的方法。这个项目提供了一套详细的步骤,让有经验的Linux用户能够从源代码开始编译和安装最基本的Linux系统组件,从而创建一个符合个人...