Chinaunix首页 | 论坛 | 博客
  • 博客访问: 332615
  • 博文数量: 57
  • 博客积分: 146
  • 博客等级: 入伍新兵
  • 技术积分: 769
  • 用 户 组: 普通用户
  • 注册时间: 2012-05-29 14:57
文章分类
文章存档

2014年(39)

2013年(13)

2012年(5)

我的朋友

分类: LINUX

2012-10-30 13:35:49

tmpfs Unix/Linux 用作储存暂存盘案 (temporary file) 的档案系统常用的名称,在不同的 Unix/Linux 系统的实作和用途都不同。但一般 tmpfs 都是使用虚拟内存 (virtual memory) 空间代替传统的永久保存媒体存放档案。[1][2] 一方面速度比硬盘等快很多,亦比传统 RAM 磁盘有弹性。

 

一般特点

如其名所指,tmpfs 主要用作存放暂存盘案 (temporary file) 。这些档案无需永久存放,所以内存成为 tmpfs 存放档案的媒体。而一般 tmpfs 的实作都使用虚拟内存 (virtual memory) 而非单纯的实体内存 (physical memory) 作为存放媒体。这令 tmpfs 兼具 RAM disk 相对一般保存媒体在存取速度近乎即时的优点,亦在实体内存短缺时可以把存放在 tmpfs 的档案换置 (swap) 入换置空间 (swap space),令 tmpfs 更具弹性。tmpfs 使用的内存大小亦会根据所存放的档案自动增多缩小。

 

现时不少 Unix/Linux 使用 tmpfs 作为 /tmp 或分享内存 (shared memory)

 

Linux 最早在 2.4 时开始引入 tmpfs。现时被大量应用在 /dev/shm 作为 POSIX 分享内存、/dev 作为 udev 存放装置档案、/var/run 存放各软件的 PID socket /var/lock 用作锁定档案等。GLib 2.2 开始要求需要 tmpfs 挂载于 /dev/shm 才可以使用 POSIX 分享内存。例如以下是典型 Ubuntu 的档案系统使用情况:

 

Filesystem    Type    Size  Used Avail Use% Mounted on

/dev/sda5     ext3    9.9G  5.6G  3.8G  60% /

tmpfs        tmpfs   1008M     0 1008M   0% /lib/init/rw

varrun       tmpfs   1008M  124K 1008M   1% /var/run

varlock      tmpfs   1008M     0 1008M   0% /var/lock

udev         tmpfs   1008M  2.8M 1005M   1% /dev5.

tmpfs        tmpfs   1008M  472K 1008M   1% /dev/shm

lrm          tmpfs   1008M  2.0M 1006M   1% /lib/modules/2.6.27-9-generic/volatile

 

当中六个 tmpfs 档案系统并非表示系统分配了 1008 MiB x 6 = 5.90 GiB 的内存,实际分配了 124 KiB + 2.8 MiB + 472 KiB + 2 MiB = 5.39 MiB 的虚拟内存。 1008 MiB 只是每个 tmpfs 档案系统可以使用虚拟内存的上限罢了。

 

 

建立和挂载

与其他档案系统不同,tmpfs 无需要建立或格式化,只需要直接使用 mount 挂载就会自动被建立:

 

点击(此处)折叠或打开

  1. mount -t tmpfs tmpfs /tmp

 

Linux 上的 tmpfs 支援三个挂载选项:

1. size - 设定分配给此 tmpfs 档案系统的内存上限,缺省是计算机实体 RAM 的一半。数值可以在尾加上 km g 表示 KiBMiB GiB 单位的内存,亦可以在尾加上百分比等号 (%) 表示计算机实体 RAM 的百分比,0 表示没有上限。

2. nr_blocks - size 一样设定分配内存上限,但单位为 PAGE_CACHE_SIZE (一般为 4 KiB)。数值可以在尾加上 km g 表示千、百万和十忆个 pages 单位的内存,0 表示没有上限。

3. nr_inodes - 设定此 tmpfs 档案系统的 inode 上限,即档案系统所可能存放档案数目的上限。缺省是计算机实体 RAM page 数目的一半。数值可以在尾加上 km g 表示千、百万和十忆个单位的 inode0 表示没有上限。

 

改变系统缺省 tmpfs 档案系统上限

Debian/Ubuntu 管理员可以设定 /etc/default/tmpfs 中的变量 TMPFS_FS

点击(此处)折叠或打开

  1. TMPFS_FS=26843546

亦在 /etc/default/tmpfs 设定以下变量的值改变该 tmpfs 档案系统的大小上限:

 

SHM_SIZE - /dev/shm 档案系统

RUN_SIZE - /var/run 档案系统

LOCK_SIZE - /var/lock 档案系统

RW_SIZE - /lib/init/rw 档案系统

 

改变分配内存上限

直接重新挂载 (remount) tmpfs 档案系统可以不损已存放档案而改变分配内存上限:

点击(此处)折叠或打开

  1. mount -o remount,size=512m /tmp

 

参考资料

1. Wikipedia. TMPFS.

2. 维基百科. TMPFS.

3. Dickins, Hugh and Rohland, Christoph (Jun 4, 2007). Linux kernel Documentation: tmpfs. Linux 2.6.27.10.

阅读(1383) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~