Linux

Centos 设置交换空间(swap)

背景🔖


在 CentOS 系统中,交换空间(swap)是一种将硬盘空间模拟成内存使用的机制,用于在物理内存不足时提供额外的虚拟内存,保障系统的稳定运行,以下是详细介绍:

交换空间的作用

  • 临时内存扩展:当系统中的物理内存(RAM)被程序占用殆尽时,操作系统会将一部分暂时不活跃的内存数据转移到交换空间中存储,释放出物理内存给急需内存的程序使用。比如同时运行多个大型程序,物理内存不够用,系统就可以把其中一个程序当前不用的数据存到交换空间,等需要用的时候再读取回来,这样能避免因内存不足导致程序崩溃或系统死机。
  • 保证系统运行:交换空间能让系统在内存紧张的情况下继续运行一些低优先级的任务,虽然读写交换空间的速度比物理内存慢很多,但能维持系统的基本功能,不至于完全无法操作。例如,在服务器内存接近耗尽时,交换空间可让管理员有时间去排查和解决内存占用过高的问题,而不是立刻失去对服务器的控制。

交换空间的类型

  • 交换文件:在硬盘上创建一个普通文件来充当交换空间,例如在 CentOS 中使用fallocate -l [大小] [文件名]命令创建指定大小的文件(如fallocate -l 2G /swapfile创建一个 2GB 的交换文件 ),然后通过格式化和启用操作,使其成为交换空间。这种方式灵活方便,可根据需要随时调整交换文件的大小或删除。
  • 交换分区:在硬盘上划分专门的分区作为交换空间。在安装系统时可以直接划分交换分区,也可以后期使用工具(如fdisk)来创建。交换分区相对更稳定,性能上也可能略优于交换文件,但调整大小相对麻烦,需要谨慎操作。

交换空间的优缺点

  • 优点:
    • 提供额外内存:在物理内存不足时,为系统和程序提供临时内存支持,避免因内存不足导致程序崩溃,增强系统的稳定性和可用性。
    • 灵活配置:交换文件的方式可以根据实际需求随时调整大小或删除,方便在不同的使用场景下进行优化。
  • 缺点:
    • 性能降低:硬盘的读写速度远低于物理内存,频繁使用交换空间会导致系统性能明显下降,程序运行速度变慢。
    • 占用磁盘空间:交换空间会占用硬盘空间,如果设置过大,可能会影响其他数据和程序的存储。

虽然交换空间能在一定程度上缓解内存不足的问题,但不能完全替代物理内存,并且过度依赖交换空间会对系统性能产生较大负面影响。在实际使用中,应合理配置物理内存,并结合优化系统和应用程序来提高整体性能。

 

启用交换空间的步骤(以交换文件为例)🔖


在 CentOS 系统中启用交换空间(swap)可以按照以下步骤进行操作,以下以创建一个 2GB 大小的交换文件为例(你可以根据实际需求调整大小):

  • 步骤一:检查当前交换空间状态

在创建交换空间之前,可以使用 free -m 命令查看当前系统的内存和交换空间使用情况。从你提供的信息来看,当前系统的交换空间大小为 0,即没有启用交换空间:

[root@aliyun ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:           1837         945         539          33         352         711
Swap:             0           0           0
  • 步骤二:创建交换文件

使用 fallocate 命令创建一个指定大小的文件作为交换空间,命令格式为 fallocate -l [大小] [文件名] ,其中 [大小] 是你想要创建的交换空间大小,[文件名] 是交换文件的名称。执行以下命令创建一个 2GB 的交换文件:

fallocate -l 2G /swapfile

如果系统没有安装 fallocate 命令,对于 CentOS 7 及以上版本,可以使用 yum install util-linux -y 进行安装。

  • 步骤三:设置交换文件权限

为了保证系统安全,需要设置交换文件的权限,确保只有 root 用户可以访问:

chmod 600 /swapfile

600 权限表示只有文件所有者(root 用户)具有读写权限,其他用户没有任何权限。

  • 步骤四:格式化交换文件

使用 mkswap 命令将创建的文件格式化为交换分区:

mkswap /swapfile

执行该命令后,系统会将指定文件格式化为交换空间格式。

  • 步骤五:启用交换文件

使用 swapon 命令启用刚刚创建的交换文件:

swapon /swapfile

此时,再次使用 free -m 命令查看,就可以看到交换空间已经启用,并且有了相应的大小显示:

[root@aliyun ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:           1837         945         539          33         352         711
Swap:           2047           0        2047
  • 步骤六:设置开机自动挂载交换空间(可选)

如果希望系统在每次开机时自动启用交换空间,可以编辑 /etc/fstab 文件,在文件末尾添加一行内容:

/swapfile none swap defaults 0 0

保存并关闭文件后,系统在下次开机时会自动识别并启用交换空间。

需要注意的是,虽然交换空间可以在内存不足时提供一定的缓冲,但由于交换空间是使用硬盘存储数据,读写速度远低于物理内存,过度依赖交换空间可能会导致系统性能下降。因此,在条件允许的情况下,还是建议优先考虑增加物理内存来提升系统性能。