在Linux上使用内存盘,加速你的文件操作

胡桃泽(legacy_haruto_zone) 发布于 2022-03-21 1364 次阅读


我经常在我的树莓派上编译一些应用程序,编译应用程序时会产生大量缓存文件和大量硬盘IO。由于树莓派使用内存卡当做存储器使用,随机读写速度只有几百K每秒。只要我一开始编译,整个系统为了等待磁盘IO就会假死,而且这样子做非常损伤内存卡。

tmpfs

Linux自带了这种功能,叫做tmpfs。创建它并不会占用物理内存,只有往里面装东西才会占用内存,这点非常人性化。

它使用物理内存进行存储,当物理内存已满时会自动使用交换空间(swap)

使用一下命令挂载一个tmpfs

mount tmpfs -t tmpfs -o size=512M /home/build/tmp

命令中的size选项可以修改成限制的大小,当文件大小大于这个值就会无法写入。

同理也可以编辑/etc/fstab,实现开机自动挂载

tmpfs   /home/build/tmp  tmpfs   size=512M 0 0
警告:挂载的目标文件夹必须存在,否则会挂载失败,然后不停循环重试挂载,导致系统启动失败

性能

我在多个设备上测试了tmpfs的读写性能

设备读速度写速度
树莓派351M/s265M/s
旧手机(已root)541M/s391M/s
某企鹅云服务器1.2Gb/s1.1Gb/s

可以看到,应该是受限于IO性能还是电源问题,在手机或者树莓派这类嵌入式系统上内存的读写速度都不大,无论怎么说300多兆也比内存卡快多了。