一)ramdisk

1)概念

ramdisk就是指使用一部分内存空间来模拟硬盘分区,也就是说ramdisk是一个块设备,要用mkfs格式化,才能真正使用它.

.ramdisk在内核2.0/2.2版本就已经支持.
.ramdisk设备是它不允许重新声明它的内存空间,所以ramdisk块通常会一直占用空间的内存直到系统重启.
.ramdisk的一个缺点是在它上面创建一个文件系统,它同时会消耗缓冲区高速缓存和文件系统缓存,理论上,它可以消耗一个磁盘文件的两倍随机内存.
.ramdisk的另一个缺点是它大小固定,之后不能改变
.现在大多数需要RAM临时存储的应用程序会使用tmpfs文件系统而不是ramdisk设备.

2)ramdisk的应用

2.1)查看当前系统的ramdisk

[root@test1 ~]# ls -l /dev/ram*
lrwxrwxrwx 1 root root     4 Feb  6 13:51 /dev/ram -> ram1
brw-r----- 1 root disk 1,  0 Feb  6 13:50 /dev/ram0
brw-r----- 1 root disk 1,  1 Feb  6 13:50 /dev/ram1
brw-r----- 1 root disk 1, 10 Feb  6 13:50 /dev/ram10
brw-r----- 1 root disk 1, 11 Feb  6 13:50 /dev/ram11
brw-r----- 1 root disk 1, 12 Feb  6 13:50 /dev/ram12
brw-r----- 1 root disk 1, 13 Feb  6 13:50 /dev/ram13
brw-r----- 1 root disk 1, 14 Feb  6 13:50 /dev/ram14
brw-r----- 1 root disk 1, 15 Feb  6 13:50 /dev/ram15
brw-r----- 1 root disk 1,  2 Feb  6 13:50 /dev/ram2
brw-r----- 1 root disk 1,  3 Feb  6 13:50 /dev/ram3
brw-r----- 1 root disk 1,  4 Feb  6 13:50 /dev/ram4
brw-r----- 1 root disk 1,  5 Feb  6 13:50 /dev/ram5
brw-r----- 1 root disk 1,  6 Feb  6 13:50 /dev/ram6
brw-r----- 1 root disk 1,  7 Feb  6 13:50 /dev/ram7
brw-r----- 1 root disk 1,  8 Feb  6 13:50 /dev/ram8
brw-r----- 1 root disk 1,  9 Feb  6 13:50 /dev/ram9
lrwxrwxrwx 1 root root     4 Feb  6 13:51 /dev/ramdisk -> ram0

2.2)ramdisk的应用实例

2.2.1)格式化/dev/ram0
mkfs -t ext2 /dev/ram0

2.2.2)挂载/dev/ram0 到 /tmp/ramdisk0
mkdir /tmp/ramdisk0
mount /dev/ram0 /tmp/ramdisk0

2.2.3)查看当前挂载的情况
df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1              19G  3.1G   15G  18% /
tmpfs                 252M     0  252M   0% /dev/shm
/dev/ram0              16M   24K   15M   1% /tmp/ramdisk0

二)tmpfs

1)概念:

tmpfs是一种基于内存的文件系统,也可以使用swap分区来存储.tmpfs是一个文件系统,并不是块设备,只要安装它,就可以使用了.

.tmpfs在存储时不需要块设备.
.tmpfs文件系统的数据完全存放在文件系统的缓存中.也可以是交换存储.
.可以在得到高速RAM硬盘优势的同时还享有虚拟内存的灵活性.
.tmpfs基本上是所有版本中共享内存设备/dev/shm的默认文件系统.
.在Linux内核中,虚拟内存资源由物理内存和交换分区组成,tmpfs向虚拟内存子系统请求页来存储文件,它同其它请求页的部分一样,不知道分配给自己的是物理内存还是交换分区存储.

2)tmpfs的应用

2.1)/dev/shm

/dev/shm类型是tmpfs,也就是用shm_open,shm_unlink请求共享内存时,系统会通过/dev/shm来响应请求,tmpfs本身也用的是文件系统缓存.

2.1.1)/dev/shm默认是物理内存的一半.

[root@test1 ~]# free -m
total       used       free     shared    buffers     cached
Mem:           503        190        313          0         14        140
-/+ buffers/cache:         35        467
Swap:         1027          0       1027

[root@test1 ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1              19G  3.1G   15G  18% /
tmpfs                 252M     0  252M   0% /dev/shm

2.1.2)更改/dev/shm的大小

现在的/dev/shm是252M
[root@test1 ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1              19G  3.1G   15G  18% /
tmpfs                 252M     0  252M   0% /dev/shm

修改tmpfs挂载项的size为512M
[root@test1 ~]# vi /etc/fstab

LABEL=/                 /                       ext3    defaults        1 1
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
tmpfs                   /dev/shm                tmpfs   defaults,size=512M        0 0
proc                    /proc                   proc    defaults        0 0
sysfs                   /sys                    sysfs   defaults        0 0
LABEL=SWAP-sda2         swap                    swap    defaults        0 0
/dev/loop0              /mnt/acltest            ext3    defaults,acl    0 0

卸载/dev/shm,再挂载/dev/shm,最后查看/dev/shm的大小

[root@test1 ~]# umount /dev/shm
[root@test1 ~]# mount /dev/shm
[root@test1 ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1              19G  3.1G   15G  18% /
tmpfs                 512M     0  512M   0% /dev/shm

2.1.3)利用/dev/shm来存取文件,并查看cache的利用情况

现在/dev/shm的利用率为0
[root@test1 ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1              19G  3.1G   15G  18% /
tmpfs                 512M     0  512M   0% /dev/shm

内存中文件系统缓存的cached为141M
[root@test1 ~]# free -m
total       used       free     shared    buffers     cached
Mem:           503        190        312          0         14        141
-/+ buffers/cache:         35        468
Swap:         1027          0       1027

在/dev/shm/下新建一个文件test,大小为10M
[root@test1 ~]# dd if=/dev/zero f=/dev/shm/test bs=10M count=1
1+0 records in
1+0 records out
10485760 bytes (10 MB) copied, 0.0511599 seconds, 205 MB/s

现在的cached已经是151M
[root@test1 ~]# free -m
total       used       free     shared    buffers     cached
Mem:           503        200        302          0         14        151
-/+ buffers/cache:         35        468
Swap:         1027          0       1027

/dev/shm已经被占用了10M
[root@test1 ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1              19G  3.1G   15G  18% /
tmpfs                 512M   11M  502M   2% /dev/shm

2.2)利用tmpfs来提高磁盘的读写

新建/mnt/disktest目录,并通过tmpfs挂载到/mnt/disktest目录.

mkdir /mnt/disktest
[root@test1 ~]# mount tmpfs /mnt/disktest -t tmpfs -o size=128M
[root@test1 ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1              19G  3.1G   15G  18% /
tmpfs                 512M   11M  502M   2% /dev/shm
tmpfs                 128M     0  128M   0% /mnt/disktest

在/mnt/disktest下新建100MB的文件,共消耗了0.317秒,传输速度为315 MB/s
[root@test1 ~]# time dd if=/dev/zero f=/mnt/disktest/testfile bs=1MB count=100
100+0 records in
100+0 records out
100000000 bytes (100 MB) copied, 0.317704 seconds, 315 MB/s

real    0m0.346s
user    0m0.000s
sys     0m0.343s

在/tmp下新建100MB的文件,共消耗了0.815秒,传输速度为128MB/s
[root@test1 ~]# time dd if=/dev/zero f=/tmp/testfile bs=1MB count=100
100+0 records in
100+0 records out
100000000 bytes (100 MB) copied, 0.815914 seconds, 123 MB/s

real    0m0.865s
user    0m0.004s
sys     0m0.687s

以上的测试说明了tmpfs能明显的提高速度.

2.3)释放tmpfs的测试

查看占用cached的文件
[root@test1 ~]# ls -lh /mnt/disktest/testfile
-rw-r--r-- 1 root root 96M Feb 22 12:05 /mnt/disktest/testfile

[root@test1 ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1              19G  3.2G   15G  18% /
tmpfs                 512M     0  512M   0% /dev/shm
tmpfs                 128M   96M   33M  75% /mnt/disktest

删除/mnt/disktest/testfile,查看是否释放掉cached

没删除之前:
[root@test1 ~]# free
total       used       free     shared    buffers     cached
Mem:        515600     393448     122152          0      15528     339768
-/+ buffers/cache:      38152     477448
Swap:      1052248          0    1052248

删除文件testfile:
[root@test1 ~]# rm /mnt/disktest/testfile
rm: remove regular file `/mnt/disktest/testfile'? y

查看是否释放掉了cached:
[root@test1 ~]# free
total       used       free     shared    buffers     cached
Mem:        515600     295736     219864          0      15536     242108
-/+ buffers/cache:      38092     477508
Swap:      1052248          0    1052248

这里cached变成了242108KB,之前是339768KB,说明cached被释放掉了.

转载于:https://www.cnblogs.com/zeping/archive/2011/03/05/1971717.html

linux ramdisk与tmpfs的深入分析相关推荐

  1. 嵌入式系统文件系统比较 jffs2, yaffs, cramfs, romfs, ramdisk, ramfs/tmpfs

    Linux支持多种文件系统,包括ext2.ext3.vfat.ntfs.iso9660.jffs.romfs和nfs等,为了对各类文件系统 进行统一管理,Linux引入了虚拟文件系统VFS(Virtu ...

  2. linux tmpfs作用,linux ramfs和tmpfs区别及用法介绍

    ramfs是Linux下一种基于RAM做存储的文件系统.在使用过程中你就可以把ramfs理解为在普通的HDD上建立了一个文件系统,而现在HDD被替换成了RAM,因为是RAM做存储所以会有很高的存储效率 ...

  3. linux 修改ramdisk内容,修改linux ramdisk大小

    Linux Ramdisk Step 0: 簡介 Step 1: 系統預設的 RAM DISK Step 2: 修改 ramdisk 大小 Step 3: Format the ramdisk Ste ...

  4. linux之ramdisk ramfs tmpfs

    在Linux中可以将一部分内存mount为分区来使用,通常称之为RamDisk技术. RamDisk有三种实现方式: 1.传统意义上的ramdisk: Linux内核2.0/2.2就已经支持,为了能够 ...

  5. linux ramdisk swap,ramdisk和initramfs比较

    Linux内核下的关于ramdisk核ramfs的文档Linux Kernel Documentation  filesystems  ramfs-rootfs-initramfs.txt Linux ...

  6. zynq+linux+ramdisk can调试

    由于采用ramdisk文件系统,自带的ip工具版本太旧无法配置can,需要自行编译ip,具体参见参考文献2 1.vivado配置ps 2.设备树增加can0,一般开发板均已提供此配置 can@e000 ...

  7. 嵌入式 linux ramdisk 保存文件,制作嵌入式linux文件系统(ramdisk,cramfs,squashfs)...

    一.什么是文件系统 (Filesystem): A directory structure contained within a disk drive or disk area. The total ...

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

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

  9. linux ramdisk是什么内存,ramdisk是什么

    ramdisk一般指虚拟内存盘.虚拟内存盘是通过软件将一部分内存模拟为硬盘来使用的一种技术.相对于直接的硬盘文件访问来说,这种技术可以极大的提高在其上进行的文件访问的速度.但是RAM的易失性也意味着当 ...

最新文章

  1. 搭建 VUE + NODE.JS + ElementUI 学习过程中问题总结
  2. Spring Cloud应用开发(二:实现服务间的调用)
  3. 垃圾邮件分类实战(SVM)
  4. 线段树专辑——hdu 1698 Just a Hook
  5. post multipart/form-data 类型表单如何获取File外其他参数
  6. Java 线程多线程编程3---线程同步之生产者与消费者问题
  7. 10分钟让你学会使用Vuex
  8. 电子科技大学20春《c语言》在线作业1,电子科技大学20春《C语言(专科)》在线作业1.doc...
  9. optim优化器的使用
  10. 反向传播算法为什么要“反向”
  11. 世界那么大,如何去看看?进入新世界的框架和脉络
  12. AlertManager 告警信息
  13. cad断点快捷键_CAD打断(BREAK)命令的使用技巧
  14. 云计算 基础服务 iscsi 实现
  15. 打开excel显示php拓展名,phpexcel 导出excel 因为文件格式或文件扩展名无效,请确定文件未损坏,并且文件扩展名与文件的格式匹配...
  16. ffmpeg 的那些坑
  17. qutip+mayavi可视化波片对光偏振态的影响
  18. 关于神经网络训练的一些技巧NN Tricks
  19. android ui 框架
  20. 运营分析:用七种维度来分析广告投放效果

热门文章

  1. getinstance方法详解_二、设计模式总览及工厂模式详解
  2. java rest httpclient_java http请求建议使用webClient,少用RestTemplate,不用HttpClient
  3. linux 修改mysql root密码_Linux mysql如何更改root密码
  4. python对文件的_python对文件的读写
  5. 线程安全之strtok()函数
  6. 五点讲述C++智能指针的点点滴滴
  7. Python,OpenCV图像金字塔cv2.pyrUp(), cv2.pyrDown()
  8. C++:map用法示例
  9. 用栈、回溯算法设计迷宫程序
  10. 【radar】毫米波雷达相关资料(文献综述列表、顶会研讨会资料列表、顶会workshops资料列表、工具书、使用手册)(2)