当前位置: 首页 > news >正文

CentOS交换区处理

文章目录

    • 前言
    • 创建交换文件(推荐)
    • 清理旧交换区

前言

很多刚开始使用 CentOS 的用户都会遇到。1GB 的交换分区在现代应用环境下确实偏小,很容易在内存压力大时导致系统性能下降甚至应用程序被强制终止。

关于交换分区的大小,没有一成不变的强制规则 ,但有一些被广泛接受和遵循的最佳实践和建议 。这些建议也随着服务器内存(RAM)容量的增长而演变。

交换分区大小的传统规则与现代建议
1. 传统规则(适用于旧时代,当内存以 MB 或少量 GB 计)
在过去,Linux 交换分区的大小通常遵循一个经验法则:

如果内存不足 2GB :交换分区大小设置为物理内存的 2 倍 。
如果内存大于 2GB :交换分区大小设置为 物理内存 + 2GB 。
这个规则在现代大内存服务器上已经不再适用(例如,为 64GB 内存的服务器分配 66GB 的交换区是巨大且不必要的浪费)。

2. 现代最佳实践(适用于当前时代,内存通常 >= 4GB)
现在的建议更侧重于系统的用途允许的休眠(Hibernate)需求

  • 服务器工作负载 :
    • 最小化建议 :对于拥有充足物理内存(例如 16GB 或更多)的服务器,至少 4GB 的交换分区是一个常见的起点。这可以应对偶尔的内存峰值。
    • 内存工作集建议 :一个更科学的方法是,根据系统监控(如使用 free -h 或 vmstat 命令)观察到的常驻内存集大小 来设置。交换分区应至少能容纳这部分数据,以便在极端情况下内核有空间可以转移内存页。
    • 通用建议 :对于生产服务器,一个安全且常见的做法是:
      • 物理内存 < 8GB:设置交换分区为 物理内存的 1.5 倍
      • 物理内存 >= 8GB:设置交换分区为 4GB 到 8GB
  • 桌面/工作站工作负载(允许休眠) :
    • 如果您希望使用休眠(Hibernate / Suspend-to-Disk) 功能,交换分区必须 大于或等于物理内存的大小。因为休眠时,会将整个内存的内容转储到交换分区中。
    • 如果不需休眠,可以参考服务器建议,通常 4GB-8GB 即可。
  • 特殊情况 :
    • 内存极度充裕 :如果您的服务器有非常大量的内存(如 128GB、256GB 甚至更多),并且运行的应用非常稳定,几乎不会出现内存耗尽的风险,那么甚至可以只设置一个 1GB 甚至 0.5GB 的交换分区。但强烈不建议完全禁用交换分区 ,因为即使内存很大,内核的一些内部机制(如交换倾向 swappiness)仍然会与交换区交互,完全禁用可能在某些边缘情况下导致非预期行为(如 kswapd 进程高CPU占用)。
  • 应用程序要求 :
    • 某些特定软件(如 Oracle Database、SAP HANA)对其运行环境的交换空间有明确的要求,请务必遵循其官方文档。

在这里插入图片描述

创建交换文件(推荐)

这种方法不需要重新分区,是最安全、最便捷的方式。

检查当前交换空间 :

sudo swapon --show
free -h

创建用于交换的文件 (这里以创建 4GB 文件为例):

# 使用 dd 命令创建一个 4GB 的空文件
sudo dd if=/dev/zero of=/swapfile bs=1M count=4096 status=progress
# 或者使用 fallocate(更快,但某些旧文件系统不支持)
# sudo fallocate -l 4G /swapfile

设置正确的权限 :

sudo chmod 600 /swapfile

格式化为交换分区格式 :

sudo mkswap /swapfile

启用交换文件 :

sudo swapon /swapfile

验证新交换空间是否生效 :

sudo swapon --show
free -h

永久生效 :编辑 /etc/fstab 文件,在文件末尾添加一行,确保系统启动时自动挂载交换文件。

sudo vim /etc/fstab

添加以下内容:

/swapfile swap swap defaults 0 0

清理旧交换区

1.禁用旧的交换空间 :

sudo swapoff /www/swap

执行这个命令后,内核会将 /www/swap 中的数据(如果有的话)移回内存或转移到其他交换空间(即您新加的 /swapfile),然后将其从交换池中移除。
2.再次检查交换空间状态 :

sudo swapon --show
free -h

现在您应该看到只有 /swapfile 这一项,总交换空间大小约为 4G。

3.确保永久生效(您已经做了,这是关键) :
您已经编辑了 /etc/fstab,注释或删除了 /www/swap 的那一行,并添加了 /swapfile 的行。

# 删除这行旧的
/www/swap    swap    swap    defaults    0 0
  • 删除旧行 :确保下次重启时,系统不会自动重新激活旧的 /www/swap。
  • 添加新行 :确保下次重启时,系统会自动激活新的 /swapfile。

4.(可选)删除旧的交换文件以释放磁盘空间 :
既然已经不再使用,您可以安全地删除它:

sudo rm /www/swap

总结:
现象是正常的 :swapon 命令是添加 (Add)交换空间,而不是替换 (Replace)。
要达到替换目的 ,需要先用手动 swapoff 命令移除 旧的,然后再用 swapon 添加新的。
修改 /etc/fstab 是为了保证这个“替换”操作在重启后也能持久化生效。
所以,您接下来只需执行 sudo swapoff /www/swap,就完成了从旧交换空间到新交换空间的切换。


文章转载自:

http://mqySAQsP.wpsfc.cn
http://APA4rzvJ.wpsfc.cn
http://DVec20vT.wpsfc.cn
http://mR3BVpkw.wpsfc.cn
http://7sU527MK.wpsfc.cn
http://tQbx1FQX.wpsfc.cn
http://o4jSJsUp.wpsfc.cn
http://hQ3fNWA1.wpsfc.cn
http://KbNHpzmB.wpsfc.cn
http://62phOBLS.wpsfc.cn
http://XMeXen9r.wpsfc.cn
http://ZHNgUyHI.wpsfc.cn
http://fmvWHKiT.wpsfc.cn
http://XAxa6tvi.wpsfc.cn
http://Yx6AG7tO.wpsfc.cn
http://PJl9mDzv.wpsfc.cn
http://Qo8oxo7a.wpsfc.cn
http://okTRZsmU.wpsfc.cn
http://AuGQxCtl.wpsfc.cn
http://k7Hbqmch.wpsfc.cn
http://WRBVSVgm.wpsfc.cn
http://fpSr0u3Y.wpsfc.cn
http://aYr4uTLO.wpsfc.cn
http://egG0wCdm.wpsfc.cn
http://m7yl1OZM.wpsfc.cn
http://BvpzBOVY.wpsfc.cn
http://N0VjZ5lP.wpsfc.cn
http://v9sVqcsY.wpsfc.cn
http://5LHSkRoF.wpsfc.cn
http://mEVQtwYv.wpsfc.cn
http://www.dtcms.com/a/362450.html

相关文章:

  • 第5节:分布式文件存储
  • Nginx 全攻略:从部署到精通的实战指南(CentOS 环境)
  • CentOS 7/8 单用户模式重置 root 密码完整流程
  • 解析ELK(filebeat+logstash+elasticsearch+kibana)日志系统原理以及k8s集群日志采集过程
  • 鸿蒙HarmonyOS应用开发者认证:抢占万物智联时代先机
  • C++之基于正倒排索引的Boost搜索引擎项目介绍
  • mac 本地安装maven环境
  • hadoop 框架 jar下载
  • Python面试题及详细答案150道(91-100) -- 迭代器与生成器篇
  • 大数据生态系统全景图:Hadoop、Spark、Flink、Hive、Kafka 的关系
  • 传统大数据 Hadoop 和 云原生湖仓 Databend 对比
  • 科学研究系统性思维的方法体系:数据分析方法
  • 【AI - nlp】Transformer输入部分要点
  • 3dmax烘培插件3dmax法线贴图烘焙教程glb和gltf元宇宙灯光效果图烘焙烘焙光影贴图支持VR渲染器
  • 为什么同步是无线通信的灵魂?WiFi 与 5G 帧结构中的关键技术
  • 10G网速不是梦!5G-A如何“榨干”毫米波,跑出比5G快10倍的速度?
  • 为什么神经网络网络算法比机器学习模型算法更加强大?
  • 神经网络|(十八)概率论基础知识-伽马函数溯源-阶乘的积分表达式
  • 如何将大疆无人机拍摄到的图像回传到应急指挥中心大屏?5G单兵图传轻松解决图传问题|伟博视讯
  • Java基础(十):关键字static详解
  • 一文带你入门 AT 指令集:从串口通信到模块控制
  • 【Qt开发】按钮类控件(二)-> QRadioButton
  • lua脚本在redis中执行是否是原子性?
  • 每次开机弹出‘killer network manager launcher’链接无应用打开”解决方案
  • 【Lua】题目小练13
  • CodeForge v25.0.3 发布:Web 技术栈全覆盖,编辑器个性化定制新时代
  • 分页功能设计
  • Docker镜像指南:从核心命令到离线迁移实战
  • 实时视频链路的产业化路径:多场景应用与长期思考
  • 力扣:2458. 移除子树后的二叉树高度(dfs序)