linux下修改/dev/shm tmpfs文件系统大小

本文介绍了在RHEL5.4系统中调整/dev/shm文件系统大小的方法,以满足创建11gr2数据库时自动内存管理的需求。步骤包括查看当前大小、修改fstab配置、重新挂载等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天在rhel 5.4下创建11gr2数据库时使用自动内存管理选项的时候提示/dev/shm文件系统必须大于1g,df -h看下了只有700多M,google下,调整tmpfs文件系统的大小方法如下:

 

1)查看大小 
df -h /dev/shm 

 

2)修改大小 
vi /etc/fstab 
tmpfs /dev/shm tmpfs defaults,size=4096M 0 0

 

3)重新挂载 
umount /dev/shm 
mount /dev/shm

 

4)查看修改后的大小 
df -h /dev/shm 

在umount的时候可能会提示“设备正忙”,这个时候可以使用fuser -km /dev/shm查看哪些用户正在使用。kill它们,或者使用umount -l卸载文件系统,不用fuser -m也可以的。

转载于:https://www.cnblogs.com/chinajsks/p/5113461.html

<think>嗯,用户的问题是关于Linux系统中/dev/shm目录下的文件大小超过了df-h显示的Used值,需要解释原因并找到解决方法。首先,我得回忆一下/dev/shm是什么。这个目录是tmpfs文件系统挂载的,用于共享内存,数据存储在内存中,可能也会用交换分区。tmpfs的特点就是动态分配空间,按需使用,所以df -h显示的Used值可能和实际目录中的文件大小不一致。接下来,用户提到文件大小超过Used值,这种情况可能是什么原因呢?可能的原因有几个:首先,tmpfs本身会统计所有文件占用的内存,包括被删除但仍被进程占用的文件,这些文件虽然不可见,但空间未被释放。其次,如果文件被稀疏文件处理,可能显示的大小和实际占用的空间不同。另外,可能有进程还在占用已经删除的文件,导致df的Used值没有及时更新。然后,我需要验证这些可能性。例如,使用lsof检查是否有已删除但仍被进程打开的文件。或者使用du命令查看实际磁盘使用情况,与df对比。还有,检查是否有稀疏文件,用ls -l和du -sh对比文件大小。如果发现差异,可能是稀疏文件的问题。解决方案方面,可能需要清理被进程占用的文件,使用fuser或lsof找到并终止相关进程。或者调整tmpfs大小限制,通过重新挂载指定大小。另外,检查系统内存和交换空间是否不足,导致tmpfs无法正确释放空间。最后,重启系统作为最后手段,释放所有tmpfs占用的资源。 需要确保回答结构清晰,分点解释原因和解决方法,同时引用相关的引用资料。比如引用[2]和[4]中关于df-h的输出解释,以及引用[3]中提到的fuser命令来处理占用问题。可能还需要提到tmpfs的动态分配机制,帮助用户理解根本原因。</think>### 现象解释 `/dev/shm`是Linux系统中基于内存的临时文件系统tmpfs),其空间使用量由`df -h`显示的**Used值**与实际文件大小出现差异的原因如下: 1. **tmpfs动态分配机制** tmpfs文件系统按需分配内存,文件写入时实际占用内存可能小于文件大小(例如稀疏文件)。当文件被删除但仍有进程占用时,`df -h`的Used值不会立即减少[^2][^4]。 2. **内存与交换空间混合计算** tmpfs可能同时使用内存和交换空间,`df -h`的Used值包含两者总和,而实际目录中文件大小可能仅统计内存占用部分。 3. **文件系统元数据开销** tmpfs为每个文件维护inode和目录结构,这些元数据占用空间会计入Used值,但不会直接反映在文件大小中[^4]。 --- ### 验证与排查方法 #### 1. 检查进程占用已删除文件 ```bash # 查看/dev/shm中已被删除但仍被进程占用的文件 lsof +L1 /dev/shm | grep deleted ``` 若存在输出,表示有进程未释放文件句柄,需终止相关进程[^3]。 #### 2. 对比实际占用空间 ```bash # 显示文件逻辑大小(可能包含稀疏部分) ls -lh /dev/shm/* # 显示实际占用的内存空间 du -sh /dev/shm/* ``` 若`ls`显示的大小显著大于`du`结果,说明存在稀疏文件或空洞文件。 #### 3. 检查tmpfs挂载参数 ```bash # 查看/dev/shm的挂载配置 mount | grep shm ``` 输出示例: `tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev,size=16G)` 若`size`参数限制过小,可能导致统计异常。 --- ### 解决方案 #### 方案1:清理残留进程 ```bash # 强制释放被占用的文件 fuser -km /dev/shm # 终止所有相关进程 umount /dev/shm && mount -a # 重新挂载 ``` #### 方案2:调整tmpfs大小限制 ```bash # 修改挂载配置(示例调整为32GB) sudo mount -o remount,size=32G /dev/shm ``` #### 方案3:检查系统内存状态 ```bash free -h # 确认内存和交换空间余量 ``` 若内存耗尽,tmpfs可能无法正确释放空间,需增加内存或优化应用。 #### 方案4:重启服务或系统(最终手段) ```bash systemctl restart proc-sys-fs-binfmt_misc.automount # 重启tmpfs相关服务 reboot # 强制释放所有tmpfs资源 ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值