<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" xmlns:content="http://purl.org/rss/1.0/modules/content/">

  <channel>
    <title>inasayang&#39;s blog</title>
    <link>/</link>
    <description>Recent blog posts on inasayang&#39;s blog</description>
    
    <generator>Hugo (https://gohugo.io)</generator>
    
    <language>zh-cn</language>
    
    <managingEditor>xiayangzzw@gmail.com (inasayang)</managingEditor>
    
    <webMaster>xiayangzzw@gmail.com (inasayang)</webMaster>
    
    <lastBuildDate>Sun, 26 Feb 2023 00:00:00 Z</lastBuildDate>
    
    <atom:link href="/tags/tmpfs/index.xml" rel="self" type="application/rss+xml" />
    

    <item>
      <title>Linux | tmpfs &amp; tmpdir</title>
      <link>/posts/230226_linuxtmpfs/</link>
      <pubDate>Sun, 26 Feb 2023 00:00:00 Z</pubDate>
      
      <author>xiayangzzw@gmail.com (inasayang)</author>

      
      
      
      

      <description>
      
      </description>
      <content:encoded>&lt;h2 id=&#34;tmpfs&#34; &gt;
&lt;div&gt;
    &lt;a href=&#34;#tmpfs&#34;&gt;
        #
    &lt;/a&gt;
    tmpfs
&lt;/div&gt;
&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;T&lt;/strong&gt;e&lt;strong&gt;mp&lt;/strong&gt;orary &lt;strong&gt;F&lt;/strong&gt;ile &lt;strong&gt;S&lt;/strong&gt;ystem的简称，数据存储在易失性内存中，而不是一个持久的存储设备。一个类似的结构是RAM磁盘，它显示为一个虚拟磁盘驱动器，并承载一个磁盘文件系统。&lt;/p&gt;
&lt;p&gt;存储在tmpfs中的所有内容都是临时性的，即不会在非易失性存储器如硬盘上直接创建文件（尽管根据操作系统的页面替换策略，交换空间被用作备份存储）。重启时，tmpfs中的所有内容都会丢失。&lt;/p&gt;
&lt;p&gt;临时文件所使用的内存会随着它所包含的文件而增长和缩小。&lt;/p&gt;
&lt;p&gt;许多 Unix 发行版默认为文件系统的 /tmp 分支或共享内存启用和使用 tmpfs。可以通过 df 观察到。&lt;/p&gt;
&lt;p&gt;而在几乎所有的Linux发行版上，都会在/run/或/var/run/上挂载一个tmpfs，以存储临时的运行时文件，如PID文件和Unix域套接字。临时的系统文件，如固件变量，存放在/sys。&lt;/p&gt;
&lt;p&gt;由于RAM的速度比磁盘存储的速度高，tmpfs允许缓存在其中时速度更快，导致整个系统的效率更高，尽管带有页面缓存的操作系统看到的好处较少，因为如果可用内存足够，最近使用的文件页面会保留在内存中。由于RAM在重启时被清除，tmpfs防止系统变得过于杂乱，而不需要用户手动删除临时文件。此外，在RAM中存储文件可以防止磁盘过快填充，并通过减少写入量延长固态硬盘的寿命。&lt;/p&gt;
&lt;p&gt;使用RAM来存储文件，而不是物理磁盘，这可以提高性能，减少由于磁盘故障造成的数据丢失风险。与物理磁盘相比，tmpfs的一个优点是速度更快，因为读写是在内存中进行的，而不是在较慢的物理磁盘上。然而，需要注意的是，tmpfs受到系统可用内存数量的限制，文件系统可能需要定期调整大小或清除，以避免内存耗尽。&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;┌───────────┬──────────────┬────────────────┐
│ /dev/shm  │ always tmpfs │ Linux specific │
├───────────┼──────────────┼────────────────┤
│ /tmp      │ can be tmpfs │ FHS 1.0        │
├───────────┼──────────────┼────────────────┤
│ /var/tmp  │ never tmpfs  │ FHS 1.0        │
└───────────┴──────────────┴────────────────┘
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;tmp&#34; &gt;
&lt;div&gt;
    &lt;a href=&#34;#tmp&#34;&gt;
        ##
    &lt;/a&gt;
    /tmp
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;/tmp是一个目录，被系统和应用程序用来存储只在短时间内需要的临时文件。这些文件通常在系统重新启动时被删除。正因为如此，/tmp经常被用来存储运行中的应用程序需要的文件，如日志文件或临时数据。&lt;/p&gt;
&lt;h3 id=&#34;vartmp&#34; &gt;
&lt;div&gt;
    &lt;a href=&#34;#vartmp&#34;&gt;
        ##
    &lt;/a&gt;
    /var/tmp
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;/var/tmp用于长期存储临时文件，这些文件应在重启后持续存在。&lt;/p&gt;
&lt;p&gt;一般来说，存储在/var/tmp中的文件不会被自动删除，而且它们的目的是在重启后仍然存在。然而，在某些情况下，/var/tmp中的文件可能会被删除，例如，当系统管理员进行系统维护或磁盘空间变满时。&lt;/p&gt;
&lt;p&gt;值得注意的是，Linux文件系统层次标准（FHS）建议不要自动删除/var/tmp中的文件。然而，一些系统管理员可能会选择配置他们的系统来删除/var/tmp中一定时间内没有被访问或修改的文件。&lt;/p&gt;
&lt;h3 id=&#34;devshm&#34; &gt;
&lt;div&gt;
    &lt;a href=&#34;#devshm&#34;&gt;
        ##
    &lt;/a&gt;
    /dev/shm
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;/dev/shm是基于Unix的操作系统中的一个特殊目录，用于创建和访问共享内存段。共享内存是一种技术，它允许多个进程访问一个共同的内存区域，该区域可用于在它们之间共享数据。&lt;/p&gt;
&lt;p&gt;在基于Unix的系统中，/dev/shm是一个虚拟文件系统，它提供了一个使用RAM磁盘的共享内存实现。当一个进程在/dev/shm中创建一个共享内存段时，操作系统会在RAM盘中创建一个新的文件，该文件有一个代表共享内存段的唯一名称。然后，这个文件可以被其他有必要权限的进程作为共享内存段使用，以访问它。&lt;/p&gt;
&lt;p&gt;通过/dev/shm使用共享内存的好处是，它比其他进程间的通信方法（如管道或套接字）更快，因为数据不在进程间复制。相反，进程可以直接访问同一区域的内存，这可以提高性能并减少开销。&lt;/p&gt;
&lt;p&gt;需要注意的是，/dev/shm中的共享内存段的内容是不稳定的，当系统重启或创建共享内存段的进程明确删除这些内存段时，这些内容就会丢失。因此，确保使用/dev/shm中的共享内存段的进程正确管理它们的创建和删除，以避免任何数据丢失或系统不稳定是很重要的。&lt;/p&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&#34;https://en.wikipedia.org/wiki/Tmpfs&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;https://en.wikipedia.org/wiki/Tmpfs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://superuser.com/questions/45342/when-should-i-use-dev-shm-and-when-should-i-use-tmp&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;https://superuser.com/questions/45342/when-should-i-use-dev-shm-and-when-should-i-use-tmp&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://en.wikipedia.org/wiki/Temporary_folder&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;https://en.wikipedia.org/wiki/Temporary_folder&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;chatGPT&lt;/li&gt;
&lt;/ol&gt;</content:encoded>
      
      <category>linux</category>
      
      <category>tmpfs</category>
      
      
      <guid isPermaLink="true">/posts/230226_linuxtmpfs/</guid>
    </item>
    
  </channel>
</rss>
