ramdisk是从内存中划出一部分作为一个分区使用,这个分区跟正常的磁盘分区一样,但其读写速度会远高于磁盘,不过存储在其中的数据会在系统断电或者关机后丢失。利用ramdisk的高速和易失特性,可以用ramdisk分区将加密文件解密,或者应用于Web服务器,或者挂载Loopback文件系统。 Windows下ramdisk的软件多达十几种,特点和性能各有所长。而Linux下对ramdisk的实现主要有三种方法:ramdisk, ramfs, tmpfs.

1.ramdisk

利用Linux内核对ramdisk的支持,通过挂载分区、创建文件系统的方式来使用。Linux在内核2.4开始就已经支持ramdisk,早期版本是1995写的rd.c,此后一直是2007年基于/drivers/blocdk/rd.c与loop.c改写的brd.c,直到现在内核4.1还是这个版本,大部分distributions都缺省创建了ramdisk。ramdisk可以有两种使用方式,一种是编译到内核,缺省下就是这种方式,但改变ramdisk大小需要重启系统;另一种是编译成模块,修改ramdisk大小后重新加载模块即可。

首先,就编译到内核中如何使用、修改Ramdisk的过程简要介绍:

(1)ls -l /dev/ram*

查看系统缺省创建的ramdisk

[root]# dmesg | grep RAMDISK

查看缺省创建的ramdisk容量,默认为16个,大小为4MB

(2)增加ramdisk容量

ramdisk的容量通过命令行选项来控制,并在启动时传递给内核。以RedHat9为例,由于GRUB是RedHat9的缺省bootloader ,因此可以通过修改/etc/grub.conf作为新的内核选项,设定ramdisk 大小的内核选项是ramdisk_size=xxxxx, xxxx的单位是1KB,修改后需要重启系统,并通过dmesg输出查看修改是否生效。

(3)格式化ramdisk

需要将ramdisk用一种文件系统格式化,由于没有必要采用日志文件系统,因此仅用EXT2格式即可,以仅需要使用ram0为例:

[root]# mke2fs -m 0 /dev/ram0

(4)创建挂载点,挂载ramdisk

在已经格式化了ramdisk之后,必须为其创建一个挂载点,然后将ramdisk挂载到该挂载点后使用。

[root]# mkdir /mnt/rd
[root]# mount /dev/ram0 /mnt/rd

查看验证挂载是否成功及文件系统信息

[root]# mount | grep ram0
[root]# df -h | grep ram0

进一步查看ram0的详细信息

[root]# tune2fs -l /dev/ram0

修改挂载点的使用权限

[root]# chown van:root /mnt/rd
[root]# chmod 0770 /mnt/rd

验证并查看挂载点的权限是否修改

[root]# ls -ald /mnt/rd

(5)使用ramdisk

完成以上工作后,就可以像在磁盘分区上一样在ramdisk上进创建、复制、移动、删除、编辑文件了。如果需要移除ramdisk,采用以下命令解除挂载即可:

[root]# umount -v /mnt/rd

以上是手动创建ramdisk的过程,也可以通过在/etc/rc.local初始化脚本中加入一些命令来自动完成以上过程,以在便系统每次启动时就自动创建和挂载ramdisk。

-------------------------------------------------------------

/sbin/mke2fs-q -m 0 /dev/ram0
/bin/mount /dev/ram0 /mnt/rd
/bin/chown van:root /mnt/rd
/bin/chmod 0750 /mnt/rd

-------------------------------------------------------------

提示:如果重新挂载ramdisk,数据还在。一旦内存被分配给ramdisk,就会被标记以防止内核在之后再次使用内存。因此,在你使用完ramdisk之后,并不能重新回收ramdisk。基于这个原因,必须在分配ramdisk空间时尽可能谨慎,应该根据需求定制需要的ramdisk大小。当然,也可以通过重启释放空间。

2.ramfs

ramfs是一种内存文件系统,不像ramdisk那样基于虚拟在内存中的其他文件系统(如ex2fs),ramfs处于虚拟文件系统(VFS)层,因而无需格式化,可以创建多个,只要内存足够,在创建时可以指定其最大能使用的内存大小。在编译内核时须将File systems -->> pseudofilesystems -->>  Virtual memoryfile system support支持选上。ramfs的使用相对简单,创建挂载点后,按照ramfs的文件系统进行挂载即可。

root# mkdir none /testRAM

root# mount -t ramfs none /testRAM

缺省情况下,Ramfs被限制最多可使用一半的内存,可通过maxsize选项来改变

root# mount -t ramfs none /testRAM -omaxsize=2000               (单位是kbyte)

3.tmpfs

tmpf是一个虚拟内存文件系统,既不同于传统的用块设备形式来实现的Ramdisk,也不同于针对物理内存的ramfs,它可以使用物理内存,也可以使用交换分区。在Linux内核中,虚拟的内存资源由物理内存(RAM)和交换分区(swap)组成,这些资源是由内核中的虚拟内存子系统来负责分配和管理。tmpfs向虚拟内存子系统请求页来存储文件,它同Linux的其它请求页的部分一样,不知道分配给自己的页是在内存中还是在交换分区中。同ramfs一样,tmpfs的大小随着所需要的空间而动态的增减。Linux缺省的/dev/shm即是采用tmpfs文件系统,大小缺省为物理内存的一半。在编译内核时须将File systems -->> pseudofilesystems -->>  Virtual memoryfile system support支持选上。

(1)创建挂载点并挂载tmpfs

root# mkdir -p /mnt/tmpfs

root# mount tmpfs /mnt/tmpfs -t tmpfs

同样可以在加载时指定tmpfs文件系统大小的最大限制:

root# mount tmpfs /mnt/tmpfs -t tmpfs -o size=32m

(2)在/dev/shm下使用dd命令创建虚拟块设备文件

个人理解认为/dev/shm就是系统按照(1)创建好的tmpfs,因此可以直接基于该目录使用tmpfs。

ddif=/dev/zero of=/dev/shm/ramdisk0 bs=1M seek=5120 count=0

查看创建的块设备文件大小

ll  /dev/shm/ramdisk0

查看块设备文件实际占用的空间大小,seek参数是略过n个块不写

du-m /dev/shm/ramdisk0

linux下使用ramdisk相关推荐

  1. linux 修改ramdisk内容,在Linux下使用RamDisk

    一.什么是RamDisk 顾名思义,Ram:内存,Disk:磁盘,RamDisk就是指使用你的一部分内存空间来模拟出一个硬盘分区.不过这在硬盘越来越便宜的今天好象并不是很有用,但现在内存也越来越便宜呀 ...

  2. linux ramdisk 工具,Linux下用Busy Box制作Ramdisk全过程(转帖+部分完善) - 薛正华的专栏 - CSDN博客.pdf...

    Linux下用BusyBox制作Ramdisk全过程(转帖部分完善)-薛正华的专栏-CSDN博客 Linux下用Busy Box制作Ramdisk全过程(转帖+部分完善) 收藏 /software_z ...

  3. ramdisk和linux PE,PE下建立Ramdisk盘的详细教程

    如何在PE下建立一个Ramdisk盘呢?之前我们有介绍过如何在PE下安装系统ghost,有看过教程的朋友应该都会安装了吧.但是如果要在PE下建立一个Ramdisk盘,要如何建立呢?今天U大侠小编就和大 ...

  4. linux下的/dev/shm/ 以及与swap目录的区别【转】

    /dev/shm 概念 首先可以看出来/dev/shm是一个设备文件, 可以把/dev/shm看作是系统内存的入口, 可以把它看做是一块物理存储设备,一个tmp filesystem, 你可以通过这个 ...

  5. Linux 下的dd命令使用详解(摘录)

    一.dd命令的解释 dd:用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换. 注意:指定数字的地方若以下列字符结尾,则乘以相应的数字:b=512:c=1:k=1024:w=2 参数注释: 1. ...

  6. linux下的嵌入式开发技能(嵌入式工程师必备)

    嵌入式Linux开发从下到上分为:嵌入式硬件开发.嵌入式驱动开发.嵌入式系统开发.嵌入式软件开发. 一.嵌入式硬件开发:熟悉电路等知识,非常熟悉各种常用元器件,掌握模拟电路和数字电路设计的开发能力.熟 ...

  7. Linux中的Ramdisk和Initrd

    Ramdisk简介 先简单介绍一下ramdisk,Ramdisk是虚拟于RAM中的盘(Disk).对于用户来说,能把RAM disk和通常的硬盘分区(如/dev/hda1)同等对待来使用,例如: re ...

  8. linux下的文件系统,Linux根文件系统(“/”文件系统)下的目录介绍

    Linux下的文件存储与Windows完全不同,Windows将系统文件存储在系统盘(比如说C:\下) Linux根本没有盘符到概念只有一个根文件系/,各个磁盘分区挂载在/media/下(或者/mnt ...

  9. linux下的/dev/shm/ 以及与swap目录的区别

    一./dev/shm/介绍: /dev/shm/是linux下一个非常有用的目录,因为这个目录不在硬盘上,而是在内存里.因此在linux下,就不需要大费周折去建ramdisk,直接使用/dev/shm ...

最新文章

  1. 1.23 实例:查询个人信息
  2. IP地址、子网掩码、网关、路由器等知识积累
  3. 【C语言简单说】十三:逻辑运算符||
  4. java bouncycastle_java – 使用bouncycastle进行签名和验证签名的正确方法
  5. 字符编解码的故事–ASCII,ANSI,Unicode,Utf-8区别
  6. Codeup1085: 阶乘的和
  7. 测试网站的url脚本测试网站是否正常
  8. js手机键盘遮挡_移动端页面input输入框被键盘遮挡问题
  9. 三-(七) 视图(2020-4-3 )
  10. C++--最大公约数和最小公倍数
  11. IDEA多module的项目共享配置文件的处理
  12. ## 微星gl63笔记本安装ubuntu18.04双系统
  13. 深圳市专利代理机构名单(截至2016年3月)
  14. 华文慕课计算机组成结构第二章课后习题解析
  15. 运算符之 --- 取余运算 %
  16. 联通服务器调试信号,云服务器 联通网络设置方法
  17. 如何搭建vue脚手架
  18. 2020秋计算机应用基础本实训任务,国家开放大学计算机应用基础(本)形考任务二(实训任务报告)报告报告...
  19. SpiderMonkey相关学习资料
  20. 马化腾谈互联网产品创新

热门文章

  1. 史上最简单的IDEA破解教程
  2. Android驱动入门-Led控制+app+ndk库+底层驱动
  3. Python 假设有列表 a=[‘name’,’age’,’sex’]和b=[‘Dog’,38,’Male’],请编写程序将这两个列表的内容转换为字典
  4. 前端后端数据库的交互,前后端如何打通,vue+spring boot +MySQL
  5. 收银系统哪个好?2023值得推荐的5款收银系统
  6. 5天2亿活跃用户,2017QQ“LBS+AR”天降红包活动后台揭密
  7. 配置MySQL安装路径相关操作
  8. Android面试:Glide的缓存机制,文末领取面试资料
  9. 数字孪生 智慧司法可视化决策系统
  10. 没有基础学平面设计从哪些开始学?学平面设计这几点有看好!