在Linux系统中,交换空间是物理内存(RAM)的一种扩展,当系统的物理内存被占满时,操作系统会将一部分不常用的内存页数据移动到硬盘上这个专门的区域,从而释放出物理内存给更需要的应用程序使用,这种机制对于防止系统因内存耗尽而崩溃至关重要,尤其对于内存资源有限的服务器或工作站,在CentOS系统中,交换空间可以以两种形式存在:交换分区和交换文件,本文将详细介绍如何在CentOS安装过程中创建交换分区,以及如何在已安装的系统上管理和优化交换空间。

在CentOS安装过程中创建交换分区
对于全新的CentOS安装,在图形化安装程序(Anaconda)中创建交换分区是最直接和推荐的方法,这个过程在“安装目的地”配置阶段完成。
操作步骤详解:
- 启动安装程序:从CentOS安装介质(如USB或DVD)启动计算机,进入图形化安装界面。
- 进入安装位置:在“安装摘要”界面,点击“安装位置”选项。
- 选择磁盘与分区方案:选择您要安装CentOS的目标硬盘(
/dev/sda),在存储配置下,选择“自定义”分区方案,这给予了用户对分区布局的完全控制权,是创建交换分区的最佳方式。 - 手动创建分区:点击“完成”后,会进入手动分区界面,您可以在这里创建
/boot、(根分区)等标准分区。 - 创建交换分区:
- 点击界面下方的“+”号来添加新挂载点。
- 在弹出的窗口中,不要填写“挂载点”。
- 在“文件系统类型”下拉菜单中,选择
swap。 - 在“期望容量”字段中输入您希望分配给交换分区的大小,这个大小的选择至关重要,下面会提供一个参考表格。
- 点击“添加挂载点”保存设置。
- 完成并应用:确认所有分区(包括新创建的交换分区)都符合预期后,点击“完成”按钮,系统会提示您确认更改,接受后即可返回安装摘要,继续后续的安装步骤。
安装程序会自动格式化这个新创建的分区为swap类型,并在系统安装完成后自动启用它。
交换空间大小建议
交换空间的大小并非一成不变,它取决于系统的物理内存大小以及具体用途(例如是否需要支持休眠功能),以下是一个通用的建议表格,可供参考。
| 系统物理内存 (RAM) | 推荐交换空间 (无休眠) | 推荐交换空间 (支持休眠) |
|---|---|---|
| ≤ 2GB | 2倍于RAM | 3倍于RAM |
| 2GB – 8GB | 等于RAM | 2倍于RAM |
| 8GB – 64GB | 至少4GB,至多0.5倍于RAM | 5倍于RAM |
| > 64GB | 至少4GB,无需更多 | 不推荐在服务器上启用休眠 |
对于大多数现代服务器,即使拥有大量内存(如32GB或64GB),保留4GB到8GB的交换空间仍然是一个明智的选择,它作为一道安全防线,可以应对突发的内存峰值。
在已安装的系统上管理交换空间
如果系统已经安装完成,但未创建或需要调整交换空间,可以通过创建交换文件的方式来实现,这种方法无需重新分区,操作灵活。
创建并启用交换文件的步骤:
创建交换文件:使用
fallocate命令可以快速创建一个指定大小的文件,创建一个4GB的交换文件:
sudo fallocate -l 4G /swapfile
fallocate不可用,可以使用dd命令,但速度较慢:sudo dd if=/dev/zero of=/swapfile bs=1G count=4
设置文件权限:为了安全,应确保只有root用户可以读写该文件:
sudo chmod 600 /swapfile
格式化为交换空间:
sudo mkswap /swapfile
启用交换文件:
sudo swapon /swapfile
永久生效:为了让系统在每次启动时自动加载此交换文件,需要将其添加到
/etc/fstab文件中,建议先备份该文件,然后添加以下一行:/swapfile swap swap defaults 0 0验证:使用以下命令检查交换空间是否已成功启用:
free -h swapon --show
交换性能调优
Linux内核通过一个名为 swappiness 的参数来控制使用交换空间的积极性,该值的范围是0到100。
vm.swappiness=60(默认值):内核会 moderately 积极地使用交换空间。vm.swappiness=100:内核会非常积极地使用交换空间。vm.swappiness=0:内核会尽可能避免使用交换空间,直到绝对必要时。
对于服务器,通常建议降低此值(例如设置为10),以优先使用物理内存,提高I/O密集型应用的性能,可以通过以下命令临时修改:

sudo sysctl vm.swappiness=10
要使其永久生效,需在 /etc/sysctl.conf 文件中添加 vm.swappiness=10。
相关问答FAQs
Q1: 交换分区和交换文件有什么区别?我应该选择哪一个?
A: 两者在功能上完全相同,都是用作虚拟内存,主要区别在于实现和管理方式:
- 交换分区:是一个独立的磁盘分区,在传统观念中,它的读写性能略优于交换文件,因为它避免了文件系统层面的开销,它适合在系统安装初期规划好,一旦创建,调整大小比较麻烦。
- 交换文件:是文件系统中的一个普通文件,它的主要优点是灵活性极高,创建、删除和调整大小都非常方便,无需重新分区,在现代Linux内核中,交换文件的性能已经与交换分区非常接近,差距可以忽略不计。
选择建议:
- 新安装系统:如果磁盘分区规划清晰,创建交换分区是一个经典且稳定的选择。
- 已安装系统或需要灵活性:在现有系统上添加交换空间,或者未来可能需要调整大小时,使用交换文件是更现代、更便捷的方法。
Q2: 我的服务器有64GB内存,还需要设置交换分区吗?
A: 是的,仍然强烈建议设置,即使拥有大量物理内存,交换空间也扮演着重要的角色:
- 安全缓冲:它是一个至关重要的安全网,应用程序可能会出现内存泄漏,或者某些任务(如大型数据库查询、数据处理)会瞬间消耗大量内存,交换空间可以防止系统在这些突发情况下因内存耗尽(OOM Killer启动)而变得不稳定或崩溃。
- 内存管理优化:Linux内核会主动将长时间未访问的匿名内存页(不与文件系统关联的内存)换出到交换空间,从而释放出更多的物理内存用于文件系统缓存,这可以提升整体I/O性能。
- 支持休眠:虽然服务器很少使用休眠功能,但如果需要,交换空间是必须的,其大小至少要等于物理内存。
对于64GB内存的服务器,您不需要设置64GB的交换空间,根据上文的建议,设置4GB到8GB的交换空间就足以提供上述所有好处,既能保证系统稳定,又不会过多占用宝贵的磁盘空间。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复