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

推荐订阅源

AI
AI
博客园 - 叶小钗
Blog — PlanetScale
Blog — PlanetScale
Microsoft Azure Blog
Microsoft Azure Blog
Vercel News
Vercel News
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
MyScale Blog
MyScale Blog
大猫的无限游戏
大猫的无限游戏
A
About on SuperTechFans
量子位
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
博客园 - 【当耐特】
Martin Fowler
Martin Fowler
阮一峰的网络日志
阮一峰的网络日志
D
Docker
Jina AI
Jina AI
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
The Register - Security
The Register - Security
J
Java Code Geeks
S
SegmentFault 最新的问题
月光博客
月光博客
G
Google Developers Blog
美团技术团队
Last Week in AI
Last Week in AI
L
LangChain Blog
Apple Machine Learning Research
Apple Machine Learning Research
T
The Blog of Author Tim Ferriss
腾讯CDC
Recent Announcements
Recent Announcements
Recorded Future
Recorded Future
The Cloudflare Blog
有赞技术团队
有赞技术团队
博客园_首页
博客园 - 聂微东
人人都是产品经理
人人都是产品经理
B
Blog
I
InfoQ
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
F
Fortinet All Blogs
B
Blog RSS Feed
Engineering at Meta
Engineering at Meta
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Microsoft Security Blog
Microsoft Security Blog
MongoDB | Blog
MongoDB | Blog
爱范儿
爱范儿
D
DataBreaches.Net
F
Full Disclosure
M
MIT News - Artificial intelligence
博客园 - 司徒正美
H
Help Net Security

山月

在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编辑文章出现问题的排查法 – 山月 於Docker安裝sudo之方法 – 山月 于YunoHost网页版后台装pgAdmin4失败之解决方法 – 山月 解决WordPress多站点网络下异域名子站登录失败的问题 – 山月 如何从一个.sql文件中恢复(导入)数据到MySQL数据库 – 山月 橙色的天,金色的鯉魚 – 山月 設置SoftBank光IP地址固定分配時MAC地址報錯之解決方法 – 山月 解决自托管WordPress与Jetpack通信之不畅 – 山月 解决WordPress上传超过100M文件失败的问题——用Cloudflare作为CDN服务时 – 山月 自托管WordPress迁至新服务器时可能遇到的一些问题 – 山月 Jetpack server port value报错之解决方法 – 山月 Nextcloud服务器目录中/data/updater-(12个英数字)文件夹可删除 – 山月 使WP IndieBlocks、Webmention两插件配合工作 – 山月 导致WordPress钩子(hooks)重复调用的一个可能性——插件重复安装 – 山月 为WordPress自定义贴文类型设置默认格式(post format) – 山月 为Micropub客户端所发内容设置默认post type – 山月 让WordPress的自定义post type支持post formats – 山月 在WordPress通过古腾堡块编辑器验证您的Mastodon身份 – 山月 如何将Mastodon上关注的人导入至Friendica – 山月 在WordPress上发Mastodon的一个选项:Shortnotes+Share on Mastodon – 山月 祝WordPress 20周年快乐!(节译) – 山月 更改IndieBlocks札记(note)、喜欢(like)slug之方法 – 山月 改变Friendica域名之方法 – 山月 爲WordPress添上在線Markdown、HTML互轉工具 – 山月 內排散記 – 山月 长毛象(Mastodon)简介:多中心化、细粒度公开、多样时间轴 – 山月 教ChatGPT讲福州话 – 山月 WordPress项目管理插件使用心得 – 山月 汉字词“地震”之前,日语中表达地震的本土词 – 山月 “幸”与“福”的区别 – 山月 Koha 22.05安装教程(于Ubuntu 20.04 LTS) – 山月 《日本外來語辭典》讀書筆記 – 山月 “传毒”——童年游戏回忆一则 – 山月 WordPress多站点网络分布于不同主域名时登录管理后台出现cookie错误的解决方案 – 山月 如何为WordPress多站点设置不同的子目录、子域名,甚至主域名? – 山月 重温《日语的历史》 – 山月 东京教父:关于爱与救赎 – 山月 2021年末,豆瓣更新了它的条款…… – 山月 WordPress报错“Briefly unavailable for scheduled maintenance.”的解决方法 – 山月 日语里的「原形」「辞书形」「终止形」是什么? – 山月 《福州方言大词典》读后感 – 山月 一種美觀的由Hubzilla分享RSS資訊的方法 – 山月 《我们仨》中与《宋诗选注》相关的记载 – 山月 亂彈文忠公宴番仔事 – 山月 一本清代土腔谜语集引发的回忆 – 山月 迎圣火 – 山月 凝滞在方言里的时光 – 山月 站在新庄园门前 – 山月 长星照耀州府 – 山月 虚拟币与赛博矿难 – 山月 记忆、记录与创造 – 山月 几日来写作微信推文的反思 – 山月 对OKR工作管理法的归纳总结 – 山月 同人誌之夢 – 山月 那里人很爱诗词 – 山月 从语言学看两性语言差异 – 山月 南门兜素菜馆 – 山月 闽海痛史 – 山月 东京的西方建筑遗产 – 山月 真实的华人电影 – 山月 记观《只有野兽知道》 – 山月 记早稻田祭 – 山月 《鬼灭之刃》日语札记 – 山月 颱風前夜的仙草凍 – 山月 首篇博文 – 山月 我到底是转厝了 – 山月 CM96暴走记 – 山月 薄暮逐島 – 山月 人与神的共振 – 山月 逐集罔讲罔听 – 山月 以往不谏 – 山月
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空间通常不会导致硬件损坏或数据损坏,但是应该采取适当的预防措施来优化系统性能和保护数据。

参考资料