tmpfs (临时文件系统) 是一种基于内存的文件系统,tmpfs 也是最好的基于 RAM 的文件系统。
tmpfs 和虚拟磁盘 ramdisk 比较类似,和 ramdisk 一样 tmpfs 可以使用 RAM,但它还可以使用 swap 分区存储数据。
传统 ramdisk 是个块设备,要用 mkfs 来格式化它,才能真正使用它。
tmpfs 是一个文件系统,并不是块设备,只要安装,就可以使用。
默认情况下,tmpfs 会被 mount 到 /dev/shm 目录。
使用 tmpfs 时可以使用这个目录,这个目录就是 tmpfs,如写临时文件到此目录,这些文件实际上是在 VM 中。
但要使用 tmpfs,在配置内核时,需启用 Virtual memory file system support。
为防止 tmpfs 使用全部 VM,有时要限制其大小。 如创建一个最大为 32 MB 的 tmpfs 文件系统:
mount tmpfs /dev/shm -t tmpfs -o size=32m
Linux 内核的虚拟内存资源同时来源于 RAM 和交换分区。
内核中的 VM 子系统将这些资源分配到系统中的其它部分,并负责在后台管理这些资源,通常是透明地将 RAM 页移动到交换分区或从交换分区到 RAM 页。
tmpfs 文件系统需要 VM 子系统的页面来存储文件。 tmpfs 自己并不知道这些页面是在交换分区还是在 RAM 中,这种工作由 VM 子系统决定。
tmpfs 文件系统所知道的就是它正在使用某种形式的虚拟内存。
不同于大多数标准文件系统,如 ext3、ReiserFS 和其它一些系统,tmpfs 并不存在于底层块设备上。
因为 tmpfs 是直接建立在 VM 之上的,用一个简单的 mount 命令就可以创建 tmpfs 文件系统。
mount tmpfs /mnt/tmpfs -t tmpfs
动态空间
/mnt/tmpfs 最初只有很小的空间,随着文件的复制和创建,tmpfs 文件系统驱动程序会分配更多的 VM,并按照需求动态增加文件系统的空间。
当 /mnt/tmpfs 中的文件被删除时,tmpfs 文件系统驱动程序会动态地减小文件系统并释放 VM 资源,可以将 VM 返回到循环当中以供系统其它部分按需使用。
因为 VM 是很宝贵的资源,所以一定不希望任何东西浪费超出它实际所需的 VM,tmpfs 的优势之一就在于这些都是自动处理的。
速度快
tmpfs 的另一个主要优势是它闪电般的速度。 因为典型的 tmpfs 文件系统会完全驻留在 RAM 中,读写几乎可以是瞬时的。
即使用了一些交换分区,性能仍然是卓越的,当更多空闲的 VM 资源可以使用时,这部分 tmpfs 文件系统会被移动到 RAM 中去。
让 VM 子系统自动移动部分 tmpfs 文件系统到交换分区,实际上对性能是好的,因为这样做可以让 VM 子系统为需要 RAM 的进程释放空间。
这一点连同它动态调整大小的能力,比选择使用传统的 RAM 磁盘可以让操作系统有更好的整体性能和灵活性。
See also:
Copyright Notice: This article is exclusive original manuscripts, copyrighted by Happy Digits Software , shall not be reproduced without permission.