-
Notifications
You must be signed in to change notification settings - Fork 13
linux_022
首先,ramdisk / ramfs / tmpfs这几种内存作为存储的方法,数据都是掉电就丢的,这也是由DRAM的特性决定的。
其次,我们可以把ramdisk / ramfs / tmpfs 看做一类,它们是本地的方案;可以吧memcached /radis 看做一类,它们是分布式的多机缓存方案。
在本地的方案中,可以把ramdisk看做一类,它是对块设备的模拟,要使用的话也需要像块设备一样在上边建文件系统。可以把ramfs / tmpfs看做一类,它们在文件系统层实现,像page cache一样工作,区别是tmpfs可以限制大小,可以用df、du查看使用情况,可以使用swap区;而ramfs只能用free来估算,且可能因过量使用导致内存占满影响系统稳定性。
以一个2GB的tmpfs为例
mount -t tmpfs -o size=2G tmpfs /TMPFS
以上是用户使用tmpfs的方法,其实共享内存IPC (shmget接口或者shm_open接口)在内核底层都是用tmpfs实现的,详见本wiki中: 共享内存(shm...)进行进程间通信(IPC)
Step 1. 加载内核模块brd
来创建一个ramdisk
# 创建连1个2GB的内存盘,最大分区数为4。
modprobe brd rd_nr=1 rd_size=2048000 max_part=4
Step 2. 用fdisk进行分区(可选),然后在相应分区上格式化新的文件系统,并挂载
# 分区,在fdisk中按提示操作即可
fdisk /dev/ram0
# 格式化文件系统,以ext4为例
mkfs.ext4 /dev/ram0p1
# mkdir /RAMDISK
mount /dev/ram0p1 /RAMDISK
Step 3. 然后就可以正常用了。。。
Step 4. 销毁ramdisk
# 解除挂载
umount /dev/ram0p1
# 卸载内核模块
modprobe -r brd
用于persistent memory (NVM / SCM), 详见本wiki另一页: Persistent Memory
[1] The Difference Between a tmpfs and ramfs RAM Disk, https://www.jamescoyle.net/knowledge/951-the-difference-between-a-tmpfs-and-ramfs-ram-disk
[2] Create a RAM disk in Linux, https://www.jamescoyle.net/how-to/943-create-a-ram-disk-in-linux
[3] centos7下做内存盘的方法, http://www.zphj1987.com/2016/01/14/centos7下做内存盘的方法/
[4] 浅析Linux的共享内存与tmpfs文件系统, http://blog.chinaunix.net/uid-28541347-id-5763124.html
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。
Wiki: wiki.jcix.top ~聚沙成塔~ Blog: blog.jcix.top