在Linux系统中,交换区是虚拟内存实现的一部分,当物理内存(RAM)使用率过高时,系统会将部分不活跃的内存页移动到交换区,从而释放出物理内存给更需要的进程,对于运行内存密集型应用或物理内存较小的服务器来说,适当增加交换区可以有效防止系统因内存耗尽而变得不稳定或崩溃,本文将详细介绍在CentOS系统中如何通过创建交换文件来增加交换区。

检查当前交换区状态
在进行任何更改之前,首先需要了解当前系统的交换区配置,可以通过以下两个命令来查看:
free -h
该命令会以人类可读的格式(如GB、MB)显示系统的内存和交换区使用情况,关注 Swap 行,查看其总量和已用量。
swapon --show
如果系统当前没有配置交换区,此命令将不会有任何输出,如果存在,它会列出所有活跃的交换分区或交换文件的详细信息,如名称、类型、大小等。
创建交换文件
在CentOS中,最灵活和常用的方法是创建一个交换文件,而不是创建一个新的交换分区,我们将使用 fallocate 命令来快速创建一个指定大小的文件,要创建一个4GB大小的交换文件:
sudo fallocate -l 4G /swapfile
此命令会在根目录下创建一个名为 swapfile 的文件,大小为4GB。fallocate 的优点是它几乎瞬间就能完成,因为它只是分配空间而不实际写入数据。
fallocate 命令在你的系统上不可用或报错,可以使用更传统但稍慢的 dd 命令:
sudo dd if=/dev/zero of=/swapfile bs=1G count=4
这个命令会从 /dev/zero 读取数据,并写入 /swapfile,创建一个4GB的文件,过程可能需要一些时间。
设置文件权限
为了安全起见,交换文件应该只允许root用户读写,我们需要修改其权限,防止其他用户访问或修改它。
sudo chmod 600 /swapfile
执行后,可以使用 ls -lh /swapfile 查看权限,确认只有root用户拥有读写权限(-rw-------)。

格式化为交换区并启用
需要将这个文件格式化为交换区格式,然后启用它。
使用 mkswap 命令设置交换区:
sudo mkswap /swapfile
使用 swapon 命令立即启用该交换文件:
sudo swapon /swapfile ` ### 验证设置并永久挂载 再次运行 `free -h` 和 `swapon --show` 命令,你应该能看到交换区的大小已经变成了4GB,并且处于活跃状态。 这种设置是临时的,系统重启后会失效,为了使交换区在系统启动后自动挂载,需要将其信息添加到 `/etc/fstab` 文件中。 备份 `/etc/fstab` 文件是一个好习惯: ```bash sudo cp /etc/fstab /etc/fstab.bak
将交换文件的挂载信息追加到文件末尾,可以使用 echo 命令或直接用文本编辑器(如 vi 或 nano)打开文件:
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
这行字段的含义分别是:设备文件名、挂载点、文件系统类型、挂载选项、是否备份、是否检测,对于交换文件,这些是标准配置。
调整Swappiness值
Swappiness 是一个内核参数,用于控制内核使用交换区的积极程度,其值范围是0到100,值越高,内核越倾向于将内存页移入交换区;值越低,内核则越倾向于保留在物理内存中。
默认值通常是 30,对于桌面系统,这可能合适,但对于服务器,我们通常希望减少对交换区的依赖,可以将其设置为一个较低的值,10。
查看当前值:
cat /proc/sys/vm/swappiness
临时修改:

sudo sysctl vm.swappiness=10
永久修改,需要编辑 /etc/sysctl.conf 文件,在文件末尾添加:
vm.swappiness=10 保存后,设置将在下次重启时生效。
相关问答FAQs
Q1: 交换区应该设置多大?
A: 交换区的大小没有一个绝对的答案,它取决于你的物理内存大小和使用场景,以下是一个通用的参考建议:
| 物理内存 (RAM) | 推荐交换区大小 | 启用休眠功能时的推荐大小 |
|---|---|---|
| ≤ 2GB | 2倍RAM | 3倍RAM |
| 2GB – 8GB | 等于RAM | 2倍RAM |
| 8GB – 64GB | 至少4GB | 5倍RAM |
| > 64GB | 至少4GB | 不建议休眠 |
对于大多数现代服务器,如果物理内存充足(如16GB以上),设置4GB到8GB的交换区通常就足够作为应急缓冲了。
Q2: 使用交换文件和交换分区有什么区别?
A: 两者主要在灵活性、性能和管理上存在差异:
- 交换分区:
- 优点: 传统上被认为性能稍好,因为它是一个独立的磁盘分区,没有文件系统的开销。
- 缺点: 不够灵活,一旦分区创建,大小就难以调整,如果磁盘空间已全部分配,就无法再创建交换分区。
- 交换文件:
- 优点: 非常灵活,可以随时创建、调整大小(通过创建新文件并替换旧文件)或删除,无需重新分区,管理起来更简单。
- 缺点: 在非常旧的Linux内核或文件系统上,性能可能略低于交换分区,但在现代系统(如使用ext4/XFS文件系统和较新内核)上,性能差异微乎其微,几乎可以忽略不计。
在绝大多数情况下,尤其是在CentOS 7/8等现代系统上,推荐使用交换文件,因为它提供了无与伦比的灵活性,且性能损失可以忽略不计。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复