tmpfs小结

什么是tmpfs

tmpfs是Linux/Unix系统上的一种基于内存的文件系统。tmpfs可以使用您的内存或swap分区来存储文件。

实现原理:基于VM子系统

tmpfs是基于Linux的虚拟内存管理子系统,面向普通用户的,根据用户需要随时可以创建此类型目录,以方便快捷地获得飞一样的读写速度。

当用户创建了此类型的目录后,剩下的工作就交给MMU来完成,不论是最终是在物理内存中还是在SWAP中,都尽可能地满足用户的需求。

linux内核中的VM子系统负责在后台管理虚拟内存资源Virtual Memory,即RAM和swap资源,透明地将RAM页移动到交换分区或从交换分区到RAM页,tmpfs文件系统需要VM子系统的页面来存储文件。tmpfs自己并不知道这些页面是在交换分区还是在RAM中;做这种决定是VM子系统的工作。tmpfs文件系统所知道的就是它正在使用某种形式的虚拟内存。

内核支持

编译内核时,启用“Virtual memory file system support”就可以使用tmpfs,linux kernel从2.4以后都开始支持tmpfs。目前主流的linux系统默认已启用tmpfs,如Redhat。

关于tmpfs和VM:

大家已经知道linux的虚拟内存(VM),包括ram和swap两部分,ram就是你的物理内存,swap就是在装系统的时候划分的swap分区(在win下叫做页面文件,默认位于C:\pagefiles.sys),VM也是程序所能使用的最大内存上限,tmpfs本质上也是VM,前者划出后者的部分页面作为一个文件系统.

关于tmpfs和ramdisk:

linux下的ramdisk是由内核提供的,要使用之,mount命令挂载即可,不需要第三方工具:)
但因为它会被视为块设备,所以仍然需要格式化该文件系统:使用mkfs命令格式化,
而tmpfs不需要ramdisk一旦创建就会占用固定大小的物理内存,tmpfs则是动态分配

tmpfs的优点: 

一句话概括:像使用磁盘一样简单,获得飞一样的速度

  • 使用方便:因为tmpfs是建立在VM上的,而不是物理磁盘上,所以不需要格式化就可以使用,所以不用尝试mkfs.tmpfs了:没有这条命令
  • 动态调节大小:tmpfs的大小是动态的,用多少才分配多少,删除文件则会释放相应的VM空间,=.=这一点非常令人激动
  • 扩展性好:当您的物理内存不足以支撑分配为tmpfs的大小时,它会自动使用swap的页面
  • 快:tmpfs大部分时间是驻留在物理内存中,这使得其读写速度超快=.=

tmpfs的缺点:

  • 不可持久保存:tmpfs的先天优势变成了他的先天劣势:内存的特性导致位于tmpfs上的数据断电会丢失
  • 成本高:相比较硬盘的价格来说,内存无疑还是很昂贵的,所以用tmpfs的目录不要放太大的东西

tmpfs的应用:

应用场景

  • 天生就是为临时目录而生的。
    例如:作为程序运行产生的临时文件目录,特别是针对服务器上某些Web服务更是前途无量,比如squid,网站,那将如虎添翼,飞一般的感觉啦。

  • Linux系统中的应用

magc@magc-pc:~$ df
文件系统          1K-块     已用    可用 已用% 挂载点
udev            4033116        0 4033116    0% /dev
tmpfs            810744     9452  801292    2% /run
/dev/sda5      39253420 31068724 6167680   84% /
tmpfs           4053708    94236 3959472    3% /dev/shm
tmpfs              5120        4    5116    1% /run/lock
tmpfs           4053708        0 4053708    0% /sys/fs/cgroup
tmpfs            810744       24  810720    1% /run/user/1000

可见,在Linux系统中tmpfs的用武之地还是很多的。

<think>嗯,用户想调整Linux中tmpfs的大小,这个问题我需要仔细想想怎么解决。首先,tmpfs是基于内存的文件系统,通常挂载在/dev/shm这样的地方,但有时候用户可能需要调整它的大小,比如默认可能只有系统内存的一半,如果应用需要更大的空间,就得调整了。 那调整tmpfs的大小有哪些方法呢?我记得可以通过挂载选项来指定大小。比如使用mount命令重新挂载,或者修改/etc/fstab文件永久生效。不过具体步骤可能需要注意一些细节,比如重新挂载时的语法是否正确,还有单位的使用,比如可以使用m或g来表示兆字节或吉字节。 另外,用户可能关心的是临时调整和永久调整的区别。临时调整的话,用mount命令加上remount选项,指定新的size参数。但要注意这会立即生效,不过重启后会恢复原来的设置。如果想要永久生效,就得修改/etc/fstab里的对应条目,添加size参数,然后重新挂载或者重启系统。 不过,这里可能有个误区,用户可能认为tmpfs的大小可以超过物理内存,但实际上tmpfs可以使用交换分区,所以总大小是物理内存加交换空间的总和。不过设置过大的size可能会影响系统性能,导致内存不足,所以需要谨慎设置。 还有,用户可能会问如何验证调整后的结果,这时候可以用df -h命令查看挂载点的大小,确认是否生效。如果修改了/etc/fstab但没有生效,可能需要检查语法是否正确,或者是否有其他挂载点冲突的情况。 另外,可能遇到的问题包括权限问题,比如需要root权限才能执行mount命令,或者在/etc/fstab中写错了参数导致系统启动失败。这时候需要进入恢复模式去修复fstab文件。 总结下来,调整tmpfs大小的步骤包括确定当前挂载参数,使用mount命令临时调整,或者修改fstab永久调整,然后验证结果。同时需要注意系统资源和潜在的问题,确保调整后的设置不会影响系统稳定性。</think>### 调整tmpfs挂载点大小的方法 #### 1. 临时调整(重启失效) 使用`mount`命令重新挂载时指定`size`参数: ```bash sudo mount -o remount,size=4G /dev/shm ``` - `size=4G`表示将tmpfs容量调整为4GB - 使用`df -h /dev/shm`验证结果[^1] #### 2. 永久修改(需修改配置文件) 编辑`/etc/fstab`文件: ```bash sudo nano /etc/fstab ``` 找到或添加tmpfs条目: ```conf tmpfs /dev/shm tmpfs defaults,size=4G 0 0 ``` 保存后执行: ```bash sudo mount -o remount /dev/shm ``` #### 关键参数说明 | 参数 | 说明 | 示例值 | |----------|-------------------------------|-------------| | size | 指定文件系统容量 | 4G, 512M | | nr_inodes| 控制最大文件数量 | 100000 | | mode | 设置目录权限 | 1777 | #### 注意事项 1. 实际可用空间可能受物理内存+swap限制 2. 过度分配可能导致系统内存不足 3. 使用`df -hT`可验证修改结果[^2]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值