tmpfs内存临时文件系统

本文详细介绍了Linux系统中的虚拟内核文件系统,包括proc、devfs、sysfs和tmpfs,阐述了它们的作用和特性,同时展示了如何利用tmpfs进行高效的数据缓存。

内存文件系统

虚拟内核文件系统(VirtualKernel File Systems),是指那些是由内核产生但不存在于硬盘上(存在于内存中)的文件系统。例如

1、proc

proc文件系统为操作系统本身和应用程序之间的通信提供了一个安全的接口。通过它里面的一些文件,可以获取系统状态信息并修改某些系统的配置信息。当我们在内核中添加了新功能或设备驱动时,经常需要得到一些系统状态的信息,一般这样的功能需要经过一些像ioctl()这样的系统调用来完成。

2、devfs

我们知道,/dev目录下的每一个文件都对应的是一个设备,devfs也是挂载于/dev目录下。在2.6内核以前使用devfs来提供一种类似于文件的方法来管理位于/dev目录下的所有设备。但是devfs文件系统有一些缺点,有时一个设备映射的设备文件可能不同。例如,我的U盘可能对应sda,也可能对应sdb,没有足够的主/辅设备号,当设备过多的时候,显然这会成为一个问题。

3、sysfs

为了克服devfs的上述问题,2.6内核引入了一个新的文件系统sysfs,它挂载于/sys目录下。sysfs文件系统把连接在系统上的设备和总线组织成为一个分级的文件,用户空间的程序同样可以利用这些信息,以实现和内核的交互。sysfs文件系统是当前系统上实际设备树的一个直观反映,它是通过kobject子系统来建立这个信息的,当一个kobject被创建的时候,对应的文件和目录也就被创建了。

4、tmpfs

tmpfs(temporary filesystem)是Linux特有的文件系统,标准挂载点是/dev/shm,默认大小是实际内存的一半,如下图所示。当然,用户也可以将tmpfs挂载在其他地方。tmpfs可以使用物理内存,也可以使用swap交换空间。


tmpfs有些像虚拟磁盘(ramdisk),但ramdisk是一个块设备,而且需要一个mkfs之类的命令格式化后才能使用。而tmpfs是一个独立的文件系统,不是块设备,只要挂载,就可以立即使用。下面是tmpfs最主要的几个特点:

Ø 临时性:由于tmpfs是构建在内存中的,所以存放在tmpfs中的所有数据在卸载或断电后都会丢失;

Ø 快速读写能力:内存的访问速度要远快于磁盘I/O操作,即使使用了swap,性能仍然非常卓越;

Ø 动态收缩:tmpfs一开始使用很小的空间,但随着文件的复制和创建,tmpfs文件系统会分配更多的内存,并按照需求动态地增加文件系统的空间。而且,当tmpfs中的文件被删除时,tmpfs文件系统会动态地减小文件并释放内存资源。

tmpfs对于文件缓存和临时数据来说,是一种较理想的做法。现在假设你想为大流量网站在/var/www/www.example.com/cache目录下创建文件缓存。

首先,创建缓存目录:

mkdir -p /var/www/www.example.cache
如有必要可以更改目录的属主,例如:
chownproxy:proxy /var/www/www.example.com/cache

现在我们把这个目录加载到内存设备中(使用100MB大小,并且权限为755):
mount -ttmpfs -o size=100M,mode=0755 tmpfs /var/www/www.example.com/cache

如果想调整该缓存目录使用的内存空间为200MB,可以使用下面的命令:

mount -o remount,size=200M /var/www/www.example.com/cache

如果还想在系统启动时自动缓存这个目录,编辑/etc/fstab并添加下面内容

tmpfs /var/www/www.example.com/cache tmpfssize=100M,mode=0755 0 0

### Tmpfs 文件系统的定义 Tmpfs 是一种基于内存的文件系统,其全称为 Temporary File System(临时文件系统)。它将文件存储在内存中而不是磁盘上,因此具有非常高的读写速度。由于 tmpfs 的数据主要驻留在 RAM 或交换空间中,这意味着它的容量受限于可用的内存大小[^1]。 --- ### Tmpfs 文件系统的特性 #### 1. **高性能** - 因为 tmpfs 将数据保存在内存中,所以它的读写速度远高于传统的磁盘文件系统。这对于需要频繁访问的小型文件尤其有用[^4]。 #### 2. **动态调整大小** - Tmpfs 不会在初始化时分配固定的内存空间。相反,它会根据实际使用的文件数量和大小动态增长或缩减占用的空间[^3]。 #### 3. **易失性** - 存储在 tmpfs 中的数据是暂时的,在系统重启后会被清除。这使得 tmpfs 成为适合用于临时文件的理想选择[^2]。 #### 4. **支持持久化(可选)** - 虽然 tmpfs 默认情况下不会保留数据,但如果将其挂载到某个目录并启用 swap 支持,则可以在一定程度上缓解内存不足的情况,并通过其他机制备份重要数据[^5]。 #### 5. **安全性** - 只有拥有适当权限的用户才能访问 tmpfs 上的内容,从而增强了系统的安全性和隔离性。 --- ### Tmpfs 文件系统的用途 #### 1. **临时文件存储** - 常见的应用场景包括 `/tmp` 和 `/var/run` 等目录,这些地方通常存放运行期间产生的短生命周期文件[^4]。 #### 2. **加速应用性能** - 对于那些需要高频率 I/O 操作的应用程序来说,可以利用 tmpfs 来提升整体效率,比如数据库缓冲池或者 Web 应用服务器的工作目录[^3]。 #### 3. **减少机械硬盘磨损** - 如果目标设备使用的是 SSD 或 HDD 这样的传统介质,那么把经常变动的数据迁移到 tmpfs 上可以帮助延长硬件寿命[^2]。 #### 4. **嵌入式开发环境下的根文件系统** - 在某些资源有限的环境中(例如 IoT 设备),开发者可能会选择以 tmpfs 构建整个 rootfs,以便简化管理和优化启动时间[^5]。 ```bash # 创建一个 tmpfs 并挂载至 /mnt/tmpfs sudo mount -t tmpfs -o size=512M tmpfs /mnt/tmpfs ``` ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值