在linux系统中,我们可以通过挂载tmpfs或ramfs文件系统实现对内存的访问使用。
对于一些关键业务来说,可以考虑将主要的读写进程通过Tmpfs或Ramfs文件系统放入内存中执行。
1.挂载
tmpfs
mkdir ~/tmp sudo mount -t tmpfs -o size=1024m tmpfs ~/tmp
rams
mkdir -p ~/tmp sudo mount -t ramfs -o size=1024m ramfs ~/tmp
?
?2. 查看挂载情况
yunpeng@yunpeng-duitang:~$ df -h 文件系统 容量 已用 可用 已用%% 挂载点 /dev/sda1 111G 38G 67G 36% / udev 2.9G 4.0K 2.9G 1% /dev tmpfs 1.2G 908K 1.2G 1% /run none 5.0M 0 5.0M 0% /run/lock none 2.9G 3.7M 2.9G 1% /run/shm /dev/sda5 92G 76G 12G 87% /duitang /dev/sda6 83G 34G 45G 44% /work tmpfs 1.0G 1.0G 0 100% /home/yunpeng/tmp
?3. 测试写入速度
yunpeng@yunpeng-duitang:~$ dd if=/dev/zero of=/home/yunpeng/tmp/test2 bs=1M count=400 记录了400+0 的读入 记录了400+0 的写出 419430400字节(419 MB)已复制,0.282811 秒,1.5 GB/秒
?4.查看挂载结果
yunpeng@yunpeng-duitang:~$ mount -l /dev/sda1 on / type ext4 (rw,errors=remount-ro,commit=0) proc on /proc type proc (rw,noexec,nosuid,nodev) sysfs on /sys type sysfs (rw,noexec,nosuid,nodev) fusectl on /sys/fs/fuse/connections type fusectl (rw) none on /sys/kernel/debug type debugfs (rw) none on /sys/kernel/security type securityfs (rw) udev on /dev type devtmpfs (rw,mode=0755) devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=0620) tmpfs on /run type tmpfs (rw,noexec,nosuid,size=10%,mode=0755) none on /run/lock type tmpfs (rw,noexec,nosuid,nodev,size=5242880) none on /run/shm type tmpfs (rw,nosuid,nodev) /dev/sda5 on /duitang type ext4 (rw,commit=0) /dev/sda6 on /work type ext4 (rw,commit=0) binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,noexec,nosuid,nodev) gvfs-fuse-daemon on /home/yunpeng/.gvfs type fuse.gvfs-fuse-daemon (rw,nosuid,nodev,user=yunpeng) tmpfs on /home/yunpeng/tmp type tmpfs (rw,size=1024m)
通过以上输出最后一行,可以查看当前挂载/mnt/ram的相关情况
通过配置/etc/fstab文件,可以实现开机挂载tmpfs或ramfs文件系统分区
?
5.ramfs和tmpfs的区别
-
ramfs可以动态进行容量扩展,只要不大于系统内的可用物理内存大小即可。
-
tmpfs无法进行动态扩展,只能使用挂载时指定的分区大小。
-
tmpfs使用swap或物理内存作为存储空间。
-
ramfs不能使用swap空间,只能使用物理内存空间。
6.一些注意点
tmpfs不具备持久性,重启后数据不保留,请务必注意!!!
/dev/shm/是一个设备文件,它使用就是tmpfs文件系统(注意:在Centos和Redhat下,/dev/shm目录是一个链接,指向/run/shm目录,在Ubuntu系统下tmpfs文件系统对应的是/run/shm目录,可以使用df命令查看),因为 /dev/shm/这个目录不在硬盘上,而是在内存里,它就所谓的tmpfs。在Redhat/CentOS等linux发行版中默认大小为物理内存的一半。
?
参考:
http://www.weittor.com/overview-of-ramfs-and-tmpfs-on-linux-cn.html
http://blog.csdn.net/chen3888015/article/details/7515706
http://luobeng.blogbus.com/logs/128410724.html