Linux性能调协之
3.5使用内存文件系统
在Linux中可以将一部分内存mount为分区来使用,通常称之为RamDisk。
RamDisk有三种实现方式:
第一种就是传统意义上的,可以格式化,然后加载。
这在Linux内核2.0/2.2就已经支持,其不足之处是大小固定,之后不能改变。
为了能够使用Ramdisk,我们在编译内核时须将block device中的Ramdisk支持选上,它下面还有两个选项,一个是设定Ramdisk的大小,默认是4096k;另一个是initrd的支持。
如果对Ramdisk的支持已经编译进内核,我们就可以使用它了:
查看一下可用的RamDisk,使用ls /dev/ram*
首先创建一个目录,比如test,运行mkdir /mnt/test;
然后对/dev/ram0 创建文件系统,运行mke2fs /dev/ram0;
最后挂载 /dev/ram0,运行mount /dev/ram /mnt/test,就可以象对普通硬盘一样对它进行操作了。
更详细的内容可以参考: http://www.linuxfocus.org/ChineseGB/November1999/article124.html http://www.vanemery.com/Linux/Ramdisk/ramdisk.html
另两种则是内核2.4才支持的,通过Ramfs或者Tmpfs来实现:
它们不需经过格式化,用起来灵活,其大小随所需要的空间而增加或减少。
Ramfs顾名思义是内存文件系统,它它处于虚拟文件系统(VFS)层,而不像ramdisk那样基于虚拟在内存中的其他文件系统(ex2fs)。
因而,它无需格式化,可以创建多个,只要内存足够,在创建时可以指定其最大能使用的内存大小。
如果你的Linux已经将Ramfs编译进内核,你就可以很容易地使用Ramfs了。创建一个目录,加载Ramfs到该目录即可:
# mkdir /testRam
# mount -t ramfs none /testRAM
缺省情况下,Ramfs被限制最多可使用内存大小的一半。可以通过maxsize(以kbyte为单位)选项来改变。
# mount -t ramfs none /testRAM -o maxsize=2000 (创建了一个限定最大使用内存为2M的ramdisk)
Tmpfs是一个虚拟内存文件系统,它不同于传统的用块设备形式来实现的Ramdisk,也不同于针对物理内存的Ramfs。
Tmpfs可以使用物理内存,也可以使用交换分区。在Linux内核中,虚拟内存资源由物理内存(RAM)和交换分区组成,这些资源是由内核中的虚拟内存子系统来负责分配和管理。
Tmpfs向虚拟内存子系统请求页来存储文件,它同Linux的其它请求页的部分一样,不知道分配给自己的页是在内存中还是在交换分区中。同Ramfs一样,其大小也不是固定的,而是随着所需要的空间而动态的增减。
使用tmpfs,首先你编译内核时得选择"虚拟内存文件系统支持(Virtual memory filesystem support)" 。
然后就可以加载tmpfs文件系统了:
# mkdir -p /mnt/tmpfs
# mount tmpfs /mnt/tmpfs -t tmpfs
同样可以在加载时指定tmpfs文件系统大小的最大限制:
# mount tmpfs /mnt/tmpfs -t tmpfs -o size=32m
使用df -aT命令可以看到有个/dev/shm目录,该目录的文件系统是tmpfs的,因此这个目录下的文件访问是非常快的,但是其大小可能不同机器都不一样,而且每次重启后文件也就丢失了。
更详细的可参考《
FreeBSD下的内存文件系统》一文
“对于高负载的服务器,使用内存文件系统实际上得不偿失,在系统内存很快用光的情况下,操作系统将进行磁盘交换,导致系统性能严重下降,这比起直接使用磁盘文件系统更为糟糕。事实上,在高负载的服务器环境下,允许系统使用更多的内存来缓冲磁盘数据,更有效的发挥系统的磁盘缓冲能力,在实际使用中更为有效。 ”
分享到:
相关推荐
linux最小文件系统,亲测非常好用。包含busybox命令和基本命令。
RamFS是利用VFS(虚拟文件系统)自身的结构而形成的一种内存文件系统。它使用系统的RAM空间来存储数据,提供了一种快速访问文件的方式。由于完全基于内存,RamFS的速度非常快,但重启后数据会丢失,因此适用于存储...
在Linux操作系统中,文件系统是核心的重要组成部分,它负责组织和管理存储设备上的数据,使得用户和应用程序可以方便地存取文件。本项目名为“Linux下一个简单的文件系统实现”,其核心是一个名为XORFS(意为“或许...
C语言模拟实现Linux文件系统 1、在内存中开辟一块空间来模拟文件系统的运行,不读写硬盘。 2、面向单用户、单任务,不考虑并发,不考虑文件属主、组等概念。 3、程序开始后,初始化并接收用户输入。若输入”enter”...
在 Linux 中,文件系统可以是基于磁盘的,也可以是基于内存的。创建文件系统是指在磁盘或其他存储设备上创建一个文件系统,以便存储和管理文件和目录。挂载文件系统是指将创建的文件系统挂载到操作系统中,以便可以...
Linux虚拟文件系统(Virtual File System, VFS)是...通过VFS,Linux能够适应各种硬件环境和应用场景,无论是传统的硬盘文件系统,还是现代的网络文件系统(NFS)、内存文件系统(tmpfs)等,都能得到一致的操作体验。
(8)copy …: 拷贝文件,除支持模拟Linux文件系统内部的文件拷贝外,还支持host文件系统与模拟Linux文件系统间的文件拷贝。 (9)del …: 删除文件:删除指定文件,不存在时给出出错信息。 (10)check:检测并恢复文件...
### Linux虚拟文件系统对物理文件的管理 #### 引言 随着嵌入式技术的不断发展,Linux作为一种广泛采用的操作系统,被越来越多的嵌入式设备所青睐。Linux的强大之处在于它能够支持多种物理文件系统,这得益于其核心...
嵌入式 Linux 根文件系统制作技术概述 Busybox 作为一个快速工具,可以帮助开发者快速制作嵌入式 Linux 根文件系统。 Busybox 提供了多种 GNU 常用工具、shell 脚本和其他实用工具,总共超过100种。 Busybox 的...
7. **ramfs**:内存文件系统,所有数据都存储在系统内存中,不持久化到磁盘。ramfs主要用于临时存储,因为速度极快,但断电或重启后数据会丢失。其源码展示了如何利用内存作为存储介质来创建文件系统。 通过深入...
综上所述,这个项目涉及到Linux操作系统中的高级文件系统概念,尤其是UnionFS的使用,以及如何在内存中进行模拟。同时,它还涵盖了程序初始化设置和使用Java进行文件系统模拟的编程实践。这些知识点对于理解容器技术...
总的来说,Linux文件系统和持久性内存的管理涉及硬件特性、内核机制以及特定文件系统的优化,它们共同确保了数据的高效、可靠存储和访问。理解这些概念对于管理和维护Linux系统至关重要,尤其是在处理高性能存储设备...
《嵌入式Linux内存与性能详解》一书由史子旺撰写,专注于深入解析Linux内存管理机制以及如何在嵌入式环境中优化系统性能。Linux内存管理是操作系统的核心部分,理解和掌握这一领域对于开发者来说至关重要,尤其是在...
Linux swap文件系统是另一种特殊的格式,它不用于存储文件,而是作为虚拟内存使用。当系统物理内存不足时,Linux会将部分内存数据暂时存储到交换分区上,以释放内存资源。交换分区的大小通常建议为物理内存的两倍,...
在Linux中,ramfs和tmpfs类似,都使用内存来存储文件,但ramfs不持久化数据,重启后数据丢失,而tmpfs可以挂载为临时文件系统,支持数据持久化到交换分区或实际磁盘空间。 二.根文件系统在Linux启动过程中的作用 ...
6. **内存缓冲区管理**:为了提高效率,文件系统通常会在内存中缓存部分数据。这部分代码会涉及缓冲区的分配、回收和数据同步。 7. **挂载和卸载**:模拟文件系统需要实现挂载到Linux系统上,以及卸载的功能。挂载...
位图文件系统的实现需要深入理解 Linux 内核的文件系统架构,包括 VFS 的工作原理、内存管理、I/O 操作以及并发控制等。通过这种方式,开发者可以构建出一个高效、可靠且适应特定需求的文件系统。 总结起来,Linux ...
Boot bitmap区用于记录内存的使用情况,Initrd保留区用于临时存放启动时需要的文件系统,而Linux内核代码段则分为初始化完成前的init段和正常的code段。 防止内存碎片是Linux内存管理的关键任务。内存碎片分为内部...