linux tmpfs /dev/shm 简述

简单描述下什么是tmpfs和/dev/shm

tmpfs是Linux/Unix系统上的一种基于内存的文件系统。可以简单理解为内存文件系统,所以优点就是快。那么缺点就是重启后,内容就没了。
/dev/shm 是一个设备文件,它使用就是tmpfs文件系统。

/dev/shm 这个目录不在硬盘上,而是在内存里,它就所谓的tmpfs。在Redhat/CentOS等linux发行版中默认大小为物理内存的一半。
/dev/shm 是个动态文件系统,如果没有任何文件,它占用的内存实际上就是0字节。
查看 linux 7.2 的 /dev/shm

# free -m
              total        used        free      shared  buff/cache   available
Mem:           7823         133        6817           8         872        7614
Swap:          8191           0        8191

# df -hT
Filesystem              Type      Size  Used Avail Use% Mounted on
/dev/mapper/centos-root xfs        40G  5.4G   35G  14% /
devtmpfs                devtmpfs  3.9G     0  3.9G   0% /dev
tmpfs                   tmpfs     3.9G     0  3.9G   0% /dev/shm
tmpfs                   tmpfs     3.9G  8.6M  3.9G   1% /run
tmpfs                   tmpfs     3.9G     0  3.9G   0% /sys/fs/cgroup
/dev/sda1               xfs       497M  125M  372M  26% /boot
tmpfs                   tmpfs     783M     0  783M   0% /run/user/0
tmpfs                   tmpfs     783M     0  783M   0% /run/user/1001

如果觉得/dev/shm 不够用,可以调整
临时修改

# mount -o size=1500M -o nr_inodes=1000000 -o noatime,nodiratime -o remount /dev/shm

在2G的机器上,将最大容量调到1.5G,并且inode数量调到1000000,这意味着大致可存入最多一百万个小文件。
永久修改

# vi /etc/fstab
tmpfs /dev/shm tmpfs defaults,size=1.5G 0 0

oracle 11g的 amm 内存管理模式就是使用 /dev/shm,所以有时候修改 MEMORY_TARGET 或者 MEMORY_MAX_TARGET 会出现ORA-00845的错误
此时必须满足条件 memory_max_target <= /dev/shm

### 修改或配置 `/dev/shm` 的方法 #### 配置持久化设置 为了使对 `/dev/shm` 的修改在系统重启后仍然生效,在统信操作系统中可以通过编辑 `fstab` 文件来实现。具体操作如下: 打开终端并使用管理员权限编辑 `/etc/fstab` 文件: ```bash sudo vi /etc/fstab ``` 向文件末尾追加一行,指定新的挂载参数以覆盖默认设置[^1]: ```text tmpfs /dev/shm tmpfs defaults,size=2G 0 0 ``` 这行配置表示将 `tmpfs` 类型的虚拟文件系统挂载至 `/dev/shm` 路径下,并设定其容量上限为2GB。 #### 动态调整当前会话中的 `/dev/shm` 如果仅需临时更改而不希望影响后续启动,则可以直接运行带有适当选项的 `mount` 命令来进行即时调整: ```bash sudo mount -o remount,size=4G /dev/shm ``` 上述命令重新挂载现有的 `/dev/shm` 并将其大小更改为4GB。 #### 绑定其他路径到 `/dev/shm` 对于某些特定需求,可能还需要创建子目录或将外部位置绑定到这里面。例如先建立一个名为 `tmp` 的新文件夹再做绑定[^2]: ```bash mkdir /dev/shm/tmp sudo mount --bind /path/to/source /dev/shm/tmp ``` 这里假设源路径位于 `/path/to/source` 下;此方式允许应用程序透明地访问该共享内存区域内的资源而无需改变原有逻辑。 #### 检查改动效果 完成以上任一形式的操作之后,建议立即验证结果是否符合预期。可以借助于 `df -h` 工具查看最新的空间分配情况[^3]: ```bash df -h /dev/shm ``` 这条指令能清晰展示出目标分区的实际可用存储量以及已占用比例等重要信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数据库人生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值