Linux系统并非强制要求配置交换分区,是否设置交换分区取决于具体的使用场景和硬件配置,很多情况下新安装的Linux系统没有交换分区属于正常现象。

什么是Linux交换分区
交换分区(Swap Partition)是Linux系统中一块特殊的磁盘空间,当系统的物理内存(RAM)被占满时,内核会将内存中暂时不常用的数据移动到交换分区中,释放出物理内存供活跃进程使用。如果后续这些数据需要被访问,内核会再将其从交换分区读回物理内存。
简单来说,交换分区相当于内存的扩展空间,不过因为磁盘的读写速度远慢于内存,所以交换分区的性能比物理内存低很多,仅作为内存不足的兜底方案使用。
为什么有的Linux系统没有交换分区
Linux系统没有交换分区通常有以下几种常见原因:
- 安装时手动选择了不创建交换分区,部分用户为了简化分区结构或者认为自身内存足够,会跳过交换分区的创建步骤。
- 使用自动分区安装时,安装程序根据内存大小自动判断不需要创建交换分区,比如内存大于8G且服务器不需要休眠功能时,很多发行版的安装器会默认不分配交换分区。
- 使用云服务器或者容器环境时,服务商默认提供的系统镜像可能没有配置交换分区,这类环境通常内存配置相对充足,或者由上层调度系统管理资源。
- 使用交换文件替代了交换分区,部分系统会选择创建交换文件而不是独立的交换分区,从功能上来说二者没有本质区别,只是存储形式不同。
没有交换分区会有什么影响
如果系统物理内存充足,且没有需要大量内存的进程运行,没有交换分区通常不会产生明显影响,系统可以正常运行。但如果出现物理内存耗尽的情况,没有交换分区的系统会触发内存溢出(OOM)机制,内核会强制终止占用内存最高的进程,严重时可能导致系统卡顿甚至崩溃。
另外,如果Linux系统需要开启休眠功能,必须要有交换分区或者交换文件,因为休眠时系统会将内存中的所有数据写入交换空间,唤醒时再读回,没有交换空间则无法使用休眠功能。
如何检查系统是否有交换分区
可以通过free命令快速查看系统当前的交换空间情况,执行以下命令:
# 查看内存和交换空间使用情况,-h参数表示以人类可读的单位显示 free -h
如果输出结果中Swap一行的total值为0,说明当前系统没有可用的交换空间。也可以通过swapon命令查看已启用的交换设备:
# 查看已启用的交换设备 swapon --show
如果该命令没有输出任何内容,同样说明系统当前没有启用交换空间。
如何手动添加交换分区
如果需要为没有交换分区的系统添加交换空间,可以选择创建交换分区或者交换文件,以下是创建交换文件的完整步骤,操作前请确保磁盘有足够的剩余空间:
1. 创建交换文件
首先创建一个指定大小的空文件,比如创建4G的交换文件:
# 创建一个4G大小的空文件,路径为/swapfile,bs是块大小,count是块数量 sudo dd if=/dev/zero of=/swapfile bs=1M count=4096
2. 设置文件权限
交换文件的权限需要设置为仅root用户可读写,避免其他用户修改交换文件内容:
# 设置/swapfile的权限为600 sudo chmod 600 /swapfile
3. 格式化交换文件
使用mkswap命令将创建的文件格式化为交换空间格式:
# 格式化/swapfile为交换空间 sudo mkswap /swapfile
4. 启用交换文件
使用swapon命令启用刚刚创建的交换文件:
# 启用/swapfile作为交换空间 sudo swapon /swapfile
启用后可以再次执行free -h命令,查看交换空间是否已经生效。
5. 设置开机自动挂载
上述操作仅在当前运行时生效,重启系统后交换文件会失效,需要将其添加到/etc/fstab文件中实现开机自动挂载:
# 将交换文件挂载信息写入/etc/fstab echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
交换分区的配置建议
是否需要配置交换分区以及配置多大的交换空间,可以根据以下场景判断:
| 场景 | 交换空间建议 |
|---|---|
| 物理内存小于2G的桌面设备 | 配置2倍于物理内存的交换空间,或者至少4G |
| 物理内存2G-8G的桌面设备 | 配置与物理内存大小相等的交换空间 |
| 物理内存大于8G的桌面设备,需要休眠功能 | 配置至少等于物理内存大小的交换空间 |
| 内存充足的生产服务器,运行内存密集型应用 | 可以不配置交换分区,避免交换带来的性能损耗 |
| 内存较小的云服务器或者测试环境 | 配置1-2倍物理内存的交换空间,避免OOM终止进程 |
需要注意的是,交换空间并不是越大越好,过大的交换空间会占用大量磁盘空间,而且如果频繁发生内存和交换空间的换入换出操作,会严重降低系统性能,因此需要根据实际需求合理配置。