惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Recent Announcements
Recent Announcements
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
B
Blog
T
The Blog of Author Tim Ferriss
J
Java Code Geeks
腾讯CDC
D
Docker
G
Google Developers Blog
D
DataBreaches.Net
雷峰网
雷峰网
Blog — PlanetScale
Blog — PlanetScale
S
SegmentFault 最新的问题
The Cloudflare Blog
有赞技术团队
有赞技术团队
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Stack Overflow Blog
Stack Overflow Blog
大猫的无限游戏
大猫的无限游戏
量子位
美团技术团队
aimingoo的专栏
aimingoo的专栏
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Engineering at Meta
Engineering at Meta
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More

山月

在VS Code配置Obsidian風格Markdown編輯環境 – 山月 在Windows通过LM Studio使用Zotero MCP – 山月 禁用WordPress中Jetpack的AI助手按钮 – 山月 WordPress/MCP Adapter安装与维护指南 – 山月 WordPress服务器权限与所有权配置详解 – 山月 在Windows上為GnuCash啟用線上報價 (Finance::Quote) – 山月 Gitea Docker /var/empty 权限问题除错总结 – 山月 Bookwyrm由0.7.5升级至Production(e217a17)完整过程及疑难解答 – 山月 用正则表达式修改ruby标签 – 山月 为WordPress Syndication Links插件添加新的站点与图标的实现方法 – 山月 进入不断重启的Docker容器的命令行之方法 – 山月 自建Bookwyrm无法查询远端用户?——开启数据库扩展 – 山月 BookWyrm无法增添书本、作者、阅读进度……?——解决数据库自增序列问题 – 山月 俾Docker容器中的应用访问宿主机上的数据库服务 – 山月 QNAP NAS使用者注意!千万莫对MariaDB做这件事…… – 山月 解决Wikibase手动导入数据后无法新建实体之问题 – 山月 辰年再訪神保町 – 山月 PHP-FPM站点池配置调优以解决WordPress过度占用系统资源之问题 – 山月 如果Linux软件包常规升级失败——以python3-update-manager为例 – 山月 解决站点526报错:SSL证书配置错误 – 山月 風挾着陽光來 – 山月 和A.N.R.GHG插件说bye-bye – 山月 WordPress页面链接末尾出现“?swcfpc=1”后缀,是怎么回事? – 山月 安装、维护Monica PRM的一些笔记 – 山月 清理服务器空间的着手点 – 山月 关于Joplin Server文件上传大小上限 – 山月 如何优化PHP文件上传大小:完整指南 – 山月 WordPress站点部分地出现“严重错误”的一些可能的解法 – 山月 批量更改WordPress媒体URL – 山月 自托管WordPress编辑文章出现问题的排查法 – 山月
Linux的SWAP配置建议与方法 – 山月
2023-10-05 · via 山月

什么是SWAP

根据英文《维基百科》,SWAP空间是计算机数据存储的一个分区,用作虚拟内存,当物理内存(RAM)不足时,系统会将一些数据临时移动到SWAP空间中,以释放RAM空间给当前活跃的应用程序使用。

推荐大小

推荐的SWAP大小有很多不同的建议和规则。搜集了一些信息,以下是一些常见的建议:

  1. 系统内存的两倍:传统上,推荐的SWAP空间大小是系统内存的两倍,但随着时间的推移,这个规则已经不再那么适用[1]
  2. 与系统内存大小相等:Debian官方推荐将SWAP空间大小设置为与系统内存大小相等,但也不应该小于512MB[2]
  3. 现代服务器推荐:对于现代服务器,通常建议至少有2GB的SWAP空间。如果服务器的RAM超过8GB,那么SWAP空间应该是RAM的25%[3]

以上建议主要依赖于服务器的RAM大小,而非存储容量。
要确定最适合的SWAP空间大小,可能需要考虑具体的服务器的RAM大小以及其预期用途。在确定SWAP大小时,还可能需要考虑服务器的其他硬件和软件配置,以及应用程序的特定需求。

检查现有SWAP空间

如果是租赁的服务器(如VPS),一般都有配好SWAP空间。
要检查服务器上的现有SWAP空间大小,可以使用以下命令:

free -m | grep Swap

这个命令将以MB为单位显示当前的SWAP空间大小及其使用情况。

停用旧有SWAP

旧的SWAP空间如果不再需要,可以通过以下步骤来禁用并删除:

  1. 禁用旧的SWAP空间
       sudo swapoff -a
  1. /etc/fstab中移除旧的SWAP条目
    打开/etc/fstab文件:
       sudo nano /etc/fstab

    找到类似于以下的SWAP条目,并将其删除或注释掉(在行的开头添加#):

       /old_swapfile swap swap defaults 0 0
  1. 删除旧的SWAP文件
       sudo rm /old_swapfile

注意:应替换/old_swapfile为旧SWAP文件的实际路径。

完成上述步骤后,旧的SWAP空间将被禁用并删除。之后,可以按照接落来提供的指令来创建和启用新的SWAP空间。

增加SWAP空间

使用fallocate

假设要将SWAP空间增加到2048MB,可以按照以下步骤操作:

  1. 创建一个SWAP文件
       sudo fallocate -l 2G /swapfile
  1. 设置正确的权限
       sudo chmod 600 /swapfile
  1. 设置SWAP空间
       sudo mkswap /swapfile
  1. 启用SWAP文件
       sudo swapon /swapfile
  1. 使SWAP设置持久化
    为了确保每次重启系统后都能自动启用SWAP文件,需要将其添加到/etc/fstab文件中。打开该文件:
       sudo nano /etc/fstab

    然后,在文件的末尾添加以下行:

       /swapfile swap swap defaults 0 0

以上步骤将在Linux服务器上创建并启用一个2GB的SWAP文件,并确保每次系统重启后都能自动启用该SWAP文件。

使用dd

fallocate命令可能不受某些文件系统或内核版本的支持。例如,在笔者使用Debian 11的情况下,该命令就未能奏效。
作为替代,可以使用dd命令来创建SWAP文件。以下是使用dd命令创建2GB SWAP文件的步骤:

  1. 创建SWAP文件
       sudo dd if=/dev/zero of=/swapfile bs=1M count=2048 status=progress
  1. 设置正确的权限
       sudo chmod 600 /swapfile
  1. 设置SWAP空间
       sudo mkswap /swapfile
  1. 启用SWAP文件
       sudo swapon /swapfile
  1. 使SWAP设置持久化
    打开/etc/fstab文件:
       sudo nano /etc/fstab

    在文件的末尾添加以下行:

       /swapfile swap swap defaults 0 0

通过这些步骤,应该能够以dd命令成功地创建并启用一个2GB的SWAP文件。

持久化SWAP设置的另一方法

nano命令之外,也可以使用echo命令:

echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

这将为/swapfile添加一个条目,确保在每次启动时都会启用它作为交换空间。

若先启用了新SWAP才想起要删除旧者,怎么办?

正确的顺序,应该是先停用旧SWAP,然后再启用新者。如果搞错顺序的话,在执行sudo swapoff -a(禁用已有SWAP空间)时会出现一个逻辑问题:即该命令执行后,不论旧的SWAP还是新的,都被禁用了。如果之后放着不管的话,那等于实质上没有启用任何SWAP,还放了一个2GB(如果是按着拙文的示例来的话)的未启用SWAP文件在那边占空间。

但即便弄反了顺序,也不庸慌张。

要重新启用新的/swapfile(或者实际取的其他名字)作为交换空间,应该执行:

sudo swapon /swapfile

潜在风险?

SWAP可不可以有RAM的两倍大?会不会造成硬件损坏或服务器内数据的损坏?

SWAP空间的大小可以设定为RAM的两倍,甚至更大,但它通常不会对硬件造成损害。作为磁盘上的一块区域,SWAP空间用于在RAM用完时存储额外的数据。虽然大量使用SWAP空间可能会降低系统性能,因为磁盘访问速度远远低于RAM,但它不会对硬件造成损害。

然而,如果频繁地读写SWAP空间,特别是在使用固态硬盘(SSD)的情况下,可能会稍微增加硬盘的磨损。SSD具有有限的写入周期,因此频繁的写入操作可能会缩短其寿命。不过,现代的SSD具有很高的耐用性和写入周期,因此在实际中可能不会出现明显的问题。

关于数据损坏的风险,通常情况下,合理地配置和使用SWAP空间不会导致数据损坏。但是,如果系统配置不正确,或者系统中存在bug,可能会增加数据损坏的风险。例如,如果SWAP空间被错误地配置为一个不稳定的存储设备上,或者如果系统无法正确地管理内存和SWAP空间,可能会出现问题。

为了降低数据损坏的风险和提高系统性能,可能需要考虑以下几点:

  1. 确保系统软件和固件是最新的:这可以帮助修复可能影响内存和SWAP管理的bug。
  2. 监视系统的内存和SWAP使用情况:如果发现系统频繁地使用SWAP空间,可能需要考虑增加RAM的大小,以减少对SWAP空间的依赖。
  3. 在可靠的存储设备上配置SWAP空间:确保您的存储设备是可靠和稳定的,以减少数据损坏的风险。
  4. 定期备份重要数据:定期备份是预防数据损失的最好方法,确保您有一个有效的备份和恢复策略。

综上所述,合理配置和使用SWAP空间通常不会导致硬件损坏或数据损坏,但是应该采取适当的预防措施来优化系统性能和保护数据。

参考资料