您的位置首页>企业动态>

对Linux系统中/dev/shm的一点认识

导读 大家好,我是极客范的本期栏目编辑小友,现在为大家讲解对Linux系统中 dev shm的一点认识问题。I dev shm理论 dev shm 是linux下一个非

音频解说

大家好,我是极客范的本期栏目编辑小友,现在为大家讲解对Linux系统中/dev/shm的一点认识问题。

I. /dev/shm理论

/dev/shm/是linux下一个非常有用的目录,因为这个目录不在硬盘上,而是在内存中。因此,在linux下,构建ramdisk不需要大费周章,直接使用/dev/shm/就可以达到很好的优化效果。/dev /shm/需要注意的一个问题是容量问题。在linux下,它的默认最大值是内存大小的一半,这可以通过使用df -h命令看到。但并没有真正占据这段记忆。如果/dev/shm/下没有文件,它占用的内存实际上是0字节。如果它的最大大小是1G,里面有1亿个文件,剩下的900M仍然可以被其他应用使用,但是它占用的1亿内存永远不会被系统回收和细分,否则谁还敢在里面存文件?

默认情况下,系统将加载/dev/shm,这称为tmpfs。有人说和ramdisk(虚拟磁盘)一样,其实不一样。像虚拟磁盘一样,tmpfs可以使用您的RAM,但它也可以使用您的交换分区进行存储。而且传统的虚拟磁盘是块设备,需要mkfs这样的命令才能真正使用。tmpfs是一个文件系统,而不是块设备。只要装上就可以用了。

Tmpfs具有以下优点:

1、动态文件系统的大小。

2.tmpfs的另一个主要优势是它的闪电速度。因为典型的tmpfs文件系统将完全驻留在RAM中,所以读写几乎是瞬间完成的。

3.重新启动后,tmpfs数据将不会保留,因为虚拟内存本质上是易失性的。所以需要做一些脚本来做加载、绑定等操作。

其次,修改/dev/shm的大小

在某些情况下,的默认最大半内存大小可能不够,并且默认信息节点数量很低,因此通常应该增加,因此可以使用mount命令来管理它。

# mount-o size=1500m-o NR _ inodes=1000000-o no time,no dir time-o重新挂载/dev/shm

在2G机器上,将最大容量调整为1.5G,将inode数量调整为1,000,000,这意味着大约可以存储一百万个小文件。

如果需要永久修改/dev/shm的值,则需要修改/etc/fstab。

tmpfs /dev/shm tmpfs默认值,大小=1.5G 0 0

#装载-o重新装载/开发/shm

第三,/dev/shm应用程序

首先,在/dev/shm中创建一个tmp文件夹,然后将其绑定到实际的/tmp

#mkdir /dev/shm/tmp

#chmod 1777 /dev/shm/tmp

# mountbind/dev/shm/tmp/tmp(bind)

在使用mount -bind olderdir newerdir命令将一个目录装载到另一个目录后,newerdir的权限和所有者等所有信息都将更改。装载目录继承装载目录的所有属性,除了名称。Oracle 11g的amm内存管理模式是使用/dev/shm,所以有时候在修改MEMORY_TARGET或者MEMORY_MAX_TARGET的时候会出现ORA-00845错误。

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。