前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >在Ubuntu 20.04上添加swap交换空间

在Ubuntu 20.04上添加swap交换空间

作者头像
小锋学长生活大爆炸
发布2022-09-08 11:53:24
2.9K0
发布2022-09-08 11:53:24
举报
文章被收录于专栏:小锋学长生活大爆炸

原文的布局排版看起来比较舒服,建议优先去原文看: https://www.myfreax.com/how-to-add-swap-space-on-ubuntu-20-04/


很多认为swap是物理RAM内存已满时才使用swap。 这是一个错误的认知,因为内核会将非活动页面将从内存移动到交换空间swap。

如你需要了解更多关于这方面知识,请阅读我们的教程:Linux性能:为什么你应该添加交换空间swap

交换空间swap可以采用专用交换分区或交换文件的形式创建。 通常,在虚拟机上运行Ubuntu时,不存在交换分区,唯一的选择是创建交换文件。

交换空间swap不应视为物理内存的替代。由于交换空间是硬盘驱动器的一部分,因此它的访问速度比物理内存慢。

如果您的系统不断出现内存不足的情况,则应添加更多内存RAM。交换空间旨在改善系统的性能,并不会增加系统的总内存。

至于交互空间如何改善Linux系统的性能,我们在教程Linux性能:为什么你应该添加交换空间swap有详细的说明。

创建交换空间文件

在此教程中,我们将创建2 GB大小的交换空间文件。如果要添加更多交换空间,请将2G替换为你所需交换空间的大小。

创建一个指定大小文件的方式在Ubuntu 20.04中有两种,分别fallocate和dd命令。但是可使用你喜欢创建文件的方式创建交换空间文件,

fallocate和dd命令都可以帮助快速创建指定大小的文件,fallocate比dd命令更易于理解。具体选择取决于你。

如果您的系统上没有fallocate命令,或者您收到一条错误消息,提示fallocate failed: Operation not supported操作不支持。

你可使用dd命令创建swap交换空间文件。以下fallocatedd命令将会在你Ubuntu 20.04 Linux的根目录中创建交换空间文件swapfile,大小是2G。

代码语言:javascript
复制
sudo fallocate -l 2G /swapfile
sudo dd if=/dev/zero of=/swapfile bs=1024 count=2097152

默认交换空间文件的权限只有root用户才能写入和读取交换文件的数据。因此我们需要修改交换空间文件的权限为600

在Linux中可使用chmod修改文件权限,除此之外你还需要格式化交换空间的文件。交换空间文件所使用的文件系统与普通文件系统不一样,

交换空间它有自己的文件系统格式和专用个格式化工具mkswap。以下命令将修改交换空间文件的权限为600,并使用mkswap格式化文件:

代码语言:javascript
复制
sudo chmod 600 /swapfile
sudo mkswap /swapfile

启用交换空间

当你格式化完成后,为了让系统识别交换空间文件,因此还需要手动启用交换空间文件。

在Ubuntu 20.04 Linux中你可以使用swapon命令启用交换空间文件,它将会在自动挂载到系统中。运行以下swapon命令启用交换空间

代码语言:javascript
复制
sudo swapon /swapfile

swapon命令启用交换空间仅此次会话可用,重启后将不会自动挂载。为了让交换空间永久启用,并在开机启动时自动挂载

要在Linux系统启动时自动挂载分区,你需要在/etc/fstab文件中定义挂载配置选项。

/etc/fstab文件存储着文件系统的静态挂载信息,可用于定义磁盘分区,各种其他块设备或远程文件系统,告知Linux内核如何在挂载这些设备文件。

以下命令使用echotee命令以及管道追加行/swapfile swap swap defaults 0 0到将/etc/fstab文件文件:

代码语言:javascript
复制
echo "/swapfile swap swap defaults 0 0" | sudo tee -a /etc/fstab

当计算机在重启时,交换空间将会自动启用。通过使用swaponfree命令验证交换空间是否处于活动状态。

代码语言:javascript
复制
sudo swapon --show
sudo free -h

Swappiness

Swappiness是一个Linux内核属性,用于定义系统使用交换空间的频率。Swappiness可以是0到100之间的值。

swappiness=0的时候表示最大限度使用物理内存,然后才是swap空间,swappiness=100的时候表示积极的使用交换空间。

如果你不能确定该值大小,请参考我们的教程:Linux性能:为什么你应该添加交换空间swap空闲内存与可用内存的区别

Linux的初始默认设置为60, 你可以使用cat /proc/sys/vm/swappiness命令查看当前swappiness值的大小。

如果你需要对swappiness的值作出更改,请运行sudo sysctl -w vm.swappiness=10命令。

sysctl命令用于在运行时配置Linux内核的参数,更改仅在当前会话中可用,即重启会恢复为默认值。

为让swappiness的值持久化,则需要将值写入到/etc/sysctl.conf文件中。sysctl.conf是Linux内核的配置文件。在Linux内核启动是将会次配置文件的参数。

运行以下命令持久化Linux内核参数swappiness的值:

代码语言:javascript
复制
echo "/swapfile swap swap defaults 0 0" | sudo tee -a /etc/sysctl.conf

删除交换空间

如果你因某些原因需要关闭并且删除交换文件。你必须首先使用swapoff命令关闭交换空间。

如果你的交换空间文件还启用fstab方式的自动挂载,你还需要删除/etc/fstab文件中定义的自动挂载配置。

代码语言:javascript
复制
sudo swapoff -v /swapfile

接着,使用你喜欢的编辑器打开文件/etc/fstab,并移除行定义交换空间自动挂载的行。在本教程中,我们将使用vim命令打开文件

代码语言:javascript
复制
sudo vim /etc/fstab

最后保存并退出。最后的一步是使用命令删除交换空间文件。你将使用rm命令删除文件sudo rm /swapfile

结论

我们向您展示了如何在Ubuntu 20.04系统上创建交换文件以及激活和配置交换空间。如果您遇到问题或有反馈,请在下面发表评论。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-07-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 创建交换空间文件
  • 启用交换空间
  • Swappiness
  • 删除交换空间
  • 结论
相关产品与服务
文件存储
文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档