Ubuntu怎么创建、删除和调整 SWAP 空间? Linux修改swap交换空间的技巧
<p>当 Linux 系统消耗完物理内存时,非活动页面会被移动到 SWAP 空间。SWAP 空间可以采用<strong>专用的 SWAP 分区</strong>或以 <strong>SWAP 文件</strong>的形式存在。然而,在大多数情况下,在虚拟机中运行 Ubuntu 系统时,并不会自动创建 SWAP 空间。</p><p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202410/2024102114093236.jpg" /></p>
<p>本文就为大家介绍,如何在 Ubuntu 中创建、删除和调整 SWAP 空间。</p>
<h3>Linux 中的 SWAP 空间</h3>
<p>计算机的物理内存(RAM)被 Linux 内核划分为称为「页面」的块,将「页面」复制到预配置的次要存储设备(通常是 HDD 或 SSD)的动作就称为「交换」。预配置的专用空间称为「 SWAP 空间」,物理内存(RAM)和 SWAP 空间的总量称为虚拟内存。</p>
<blockquote><p>推荐阅读:<a href="https://www.jb51.net/os/win11/957599.html" target="_blank">如何在 Windows 11 中设置和管理虚拟内存</a></p></blockquote>
<h3>是否有必要进行交换</h3>
<p>进行交换有几个原因:</p>
<ul><li>当内存需求超过可用物理内存时,交换不太重要的「页面」可以释放更多内存。</li><li>在程序启动期间,大部分「页面」可能很少被使用。交换这些「页面」可以为其他应用程序释放更多内存。</li><li>如果没有分配 SWAP 空间,当 RAM 完全被占用时,可能导致系统崩溃,特别是只有小 RAM 空间的系统。</li></ul>
<p>但是使用 SWAP 也存在一些缺点:</p>
<ul><li>与 RAM 相比,次要存储设备(如 HDD、SSD 等)的速度通常比较慢。以速度对比来看,RAM 的访问速度以纳秒为单位,而磁盘的访问速度以毫秒为单位。</li><li>由于读写速度的差异,交换过程会比较缓慢。当进行大量交换时,最终会导致系统变慢。</li></ul>
<h3>SWAP 空间的类型</h3>
<p>在 Linux 中,通常会遇到两种类型的 SWAP 空间:</p>
<ul><li><strong>专用的 SWAP 分区:</strong>该分区只能用于交换,不能存储其他文件。</li><li><strong>SWAP 文件:</strong>这些文件可以放置在文件系统的任何位置。</li></ul>
<p>根据可用的 RAM 大小,SWAP 空间的大小可以不同。</p>
<h3>Ubuntu 中的 SWAP 文件</h3>
<p>Ubuntu 通常使用专用的 <strong>SWAP 分区</strong>进行交换。在大多数情况下,SWAP 分区会在安装过程中自动创建,但也可以根据需要自由创建和调整 <strong>SWAP 文件</strong>。</p>
<blockquote><p>推荐阅读:<a href="https://www.jb51.net/os/win11/957595.html" target="_blank">Windows 中的 Swapfile.sys 是什么</a></p></blockquote>
<h3>查看 SWAP 空间</h3>
<p>在开始创建之前,请先使用以下命令检查您的 Ubuntu 系统是否已启用 SWAP 空间:</p>
<div class="jb51code"><pre>sudo swapon --show</pre></div>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202410/2024102114093237.jpg" /></p>
<p style="text-align:center">查看 SWAP 空间</p>
<p>该列表会包含所有的 SWAP 空间,包括 <strong>SWAP 分区</strong>和 <strong>SWAP 文件</strong>。如果输出为空,则表示当前系统尚未启用 SWAP 空间。</p>
<blockquote><p>虽然可能,但同一台 Linux 计算机上有多个 SWAP 空间的情况并不常见。</p></blockquote>
<h3>创建 SWAP 文件</h3>
<p>与 SWAP 分区相比,SWAP 文件具有一个重要的优势,即文件大小可以轻松调整,而无需触及磁盘分区来更改交换空间的大小。</p>
<p>在本节中,我们将创建一个新的 SWAP 文件,并将其添加到当前的交换池中。</p>
<p>1、在「终端」中使用以下命令创建一个空白文件:</p>
<div class="jb51code"><pre>sudo dd if=/dev/zero of=/swapfile bs=1M count=2048</pre></div>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202410/2024102114093238.jpg" /></p>
<p style="text-align:center">创建 SWAP 文件</p>
<ul><li>文件大小计算为 1M X 2048 = 2G,要创建不同大小的文件,请更改相应的<code>count</code>参数值。</li><li><code>/dev/zero</code>是 Linux 系统中的一个特殊块设备,在每次读取时输出零字节。</li><li>可以使用其他工具(例如 fallocate)来创建文件,但在某些情况下,可能会引起问题。</li></ul>
<p>2、使用以下命令设置正确的文件权限:</p>
<div class="jb51code"><pre>sudo chmod 600 /swapfile</pre></div>
<p>3、使用使用<code>mkswap</code>实用程序将文件格式化为 SWAP 空间:</p>
<div class="jb51code"><pre>sudo mkswap /swapfile</pre></div>
<p>4、使用以下命令激活 swap 文件并将其添加到交换池中:</p>
<div class="jb51code"><pre>sudo swapon /swapfile</pre></div>
<p>5、要让创建好的 SWAP 空间永久生效,需要将 swapfile 路径内容写入到<code>/etc/fstab</code>文件当中:</p>
<div class="jb51code"><pre>/swapfile swap swap defaults 0 0</pre></div>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202410/2024102114093239.jpg" /></p>
<p style="text-align:center">配置 SWAP 文件永久生效</p>
<p>6、使用<code>swapon</code>或<code>free</code>命令验证 SWAP 文件是否处于活动状态,如下所示:</p>
<div class="jb51code"><pre>sudo swapon --show
##或者
sudo free -h</pre></div>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202410/2024102114093340.jpg" /></p>
<p style="text-align:center">验证 SWAP 文件状态</p>
<h3>调整 Swappiness 值</h3>
<p>Swappiness 是 Linux 内核的一个属性,用于定义 Linux 系统使用 SWAP 空间的频率。<code>swappiness</code>值的范围是<code>0</code> 到<code>100</code>,较低的值会尽量减少内核对 SWAP 空间的使用,而较高的值会使 Linux 内核更积极地使用 SWAP 空间。</p>
<p>Ubuntu 系统的默认 Swappiness 值为<code>60</code>,您可以使用以下命令进行查看:</p>
<div class="jb51code"><pre>cat /proc/sys/vm/swappiness</pre></div>
<p>值为<code>60</code>对于 Ubuntu Desktop 来说还可以,但对于 Ubuntu Server来说,SWAP 的使用频率就比较高了,所以您可能需要将值设置得较低一些。例如,要将<code>swappiness</code>值设置为<code>40</code>,请执行以下命令:</p>
<div class="jb51code"><pre>sudo sysctl vm.swappiness=40</pre></div>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202410/2024102114093341.jpg" /></p>
<p style="text-align:center">查看及调整 Swappiness 值</p>
<p>如果要让设置在系统重启后依然有效,需要在<code>/etc/sysctl.conf</code>文件中添加以下内容:</p>
<div class="jb51code"><pre>vm.swappiness=40</pre></div>
<p>最佳的 swappiness 值取决于 Ubuntu 系统的工作负载和内存使用方式,您应该逐渐调整这个参数,以找到最佳取值。</p>
<h3>删除 SWAP 文件</h3>
<p>要停用并删除 SWAP 文件,请按照下列步骤操作:</p>
<p>1、在「终端」中运行以下命令停用 SWAP 文件:</p>
<div class="jb51code"><pre>sudo swapoff -v /swapfile</pre></div>
<p>2、在<code>/etc/fstab</code>文件中删除 swap 相关的行。</p>
<p>3、最后执行以下命令删除 swapfile 文件:</p>
<div class="jb51code"><pre>sudo rm /swapfile</pre></div>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202410/2024102114093342.jpg" /></p>
<p style="text-align:center">删除 SWAP 文件</p>
<h3>调整 SWAP 空间大小</h3>
<p>根据 SWAP 空间的类型(分区或文件),调整大小的过程可能会有所不同。</p>
<p><strong>调整 SWAP 分区大小</strong></p>
<p>如果分区后面有未分配的空间,才能扩展分区大小。否则,唯一的调整选项是缩小分区大小。这也同样适用于 SWAP 分区。</p>
<p>如果您使用的是 GNOME 桌面环境,「磁盘」应用程序可以提供相关信息。</p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202410/2024102114093343.jpg" /></p>
<p style="text-align:center">使用「磁盘」工具查看及调整 SWAP 分区大小</p>
<p>或者,可以使用 GParted 来进行可视化。</p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202410/2024102114093344.jpg" /></p>
<p style="text-align:center">使用 GParted 工具查看及调整 SWAP 分区大小</p>
<p>如您所见,在这个系统中,交换分区直接紧邻根分区。这样就没有空间来扩展 SWAP 分区了。</p>
<p><strong>调整 SWAP 文件大小</strong></p>
<p>1、要操作 SWAP 文件,请运行以下命令将其从交换池中移除:</p>
<div class="jb51code"><pre>sudo swapoff /swapfile</pre></div>
<p>2、重新运行<code>dd</code>命令来增加文件的大小:</p>
<div class="jb51code"><pre>sudo dd if=/dev/zero of=/swapfile bs=1G count=2 oflag=append conv=notrunc</pre></div>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202410/2024102114093445.jpg" /></p>
<p style="text-align:center">调整 SWAP 文件大小</p>
<p>3、在这里,我们将交换文件增加到 2GB。接下来,使用以下命令将文件重新格式化为交换空间:</p>
<div class="jb51code"><pre>sudo mkswap /swapfile</pre></div>
<p>4、将其作为交换文件启用:</p>
<div class="jb51code"><pre>sudo swapon /swapfile</pre></div>
<p>本文我们详细讨论了在 Ubuntu 中管理 SWAP 空间的示例,探讨了不同类型的 SWAP 空间,并学习了如何调整 SWAP 分区大小以及如何使用 SWAP 文件(创建、删除和调整大小)。</p>
頁:
[1]