在Linux系统中,交换分区(Swap Partition)作为虚拟内存的延伸,当物理内存不足时,系统会将部分数据临时写入交换分区,以保障应用程序的稳定运行,合理配置交换分区对于提升系统性能、防止内存溢出至关重要,本文将详细介绍Linux系统中交换分区的设置方法、配置技巧及注意事项。

交换分区的作用与适用场景
交换分区的核心作用是为系统提供额外的内存空间,当物理内存(RAM)被完全占用时,内核会将不常用的内存页交换到硬盘中,从而释放内存供活跃进程使用,虽然交换分区的读写速度远低于物理内存,但在以下场景中仍不可或缺:一是运行内存密集型应用(如虚拟机、大型数据库)时,可扩展可用内存;二是系统物理内存较小(如2GB以下)时,避免因内存不足导致系统卡顿;三是作为休眠功能的存储区域,系统休眠时将内存内容写入交换分区,唤醒时再恢复。
需要注意的是,交换分区并非越大越好,过量配置会浪费磁盘空间,且可能因频繁的磁盘I/O操作降低系统响应速度,通常建议交换分区大小为物理内存的1-2倍,若内存超过8GB,可适当减少至1倍或更少(如4-16GB内存配置8-16GB交换分区)。
交换分区的前期准备
在配置交换分区前,需确认系统环境并做好规划,通过free -h或swapon --show命令查看当前交换分区状态,确认是否已存在配置,若需新增交换分区,需确保磁盘有可用空间,可通过fdisk -l或lsblk查看磁盘分区情况,选择未分配的空间进行操作。
若选择新建分区,推荐使用fdisk或parted工具,使用fdisk /dev/sdb对磁盘/dev/sdb进行分区操作,创建类型为”Linux swap”(分区ID为82)的新分区,若无需新建分区,也可使用现有文件作为交换空间(如/swapfile),但文件方式性能略低于分区方式,且需注意文件系统的权限管理。
交换分区的格式化与启用
创建分区后,需使用mkswap命令将其格式化为交换分区格式,对新创建的分区/dev/sdb1执行:

sudo mkswap /dev/sdb1
格式化完成后,可通过swapon --show或swapon -s查看交换分区信息,确认是否生效,若需开机自动挂载,需编辑/etc/fstab文件,添加以下行:
/dev/sdb1 swap swap defaults 0 0
使用文件方式创建交换空间时,步骤略有不同:首先使用fallocate或dd命令创建指定大小的文件(如fallocate -l 8G /swapfile),然后设置权限(chmod 600 /swapfile),执行mkswap /swapfile和swapon /swapfile,最后在/etc/fstab中添加/swapfile swap swap defaults 0 0。
交换分区的优化与调整
为提升交换分区的使用效率,可调整内核参数,编辑/etc/sysctl.conf文件,添加或修改以下参数:
vm.swappiness:控制交换分区的积极程度,取值范围为0-100,默认值为60,可根据需求调整(如内存充足时可设为30,减少交换频率;内存紧张时可设为80,提高交换主动性)。vm.vfs_cache_pressure:调整文件系统缓存回收倾向,默认值为100,建议调整为50-150之间以平衡性能。
修改后执行sysctl -p使配置生效,若系统配置了多个交换分区(如分区+文件),可通过pri参数在/etc/fstab中设置优先级(如/dev/sdb1 swap swap pri 10 0 0),优先级高的分区会被优先使用。
交换分区的监控与维护
定期监控交换分区的使用情况,有助于及时发现内存瓶颈,使用free -h可查看实时内存和交换空间使用量;vmstat 1命令可监控内存、交换区及CPU的活动情况,其中si(从交换区读入)和so(写入交换区)指标反映交换频率;top或htop命令中,%swap列可直观查看进程的交换占用。

若需调整交换分区大小,可先禁用现有交换空间(sudo swapoff /dev/sdb1或sudo swapoff /swapfile),然后重新分区或调整文件大小,再重新格式化并启用,若要删除交换分区,需先取消/etc/fstab中的挂载项,执行swapoff命令,再通过fdisk或parted删除分区。
注意事项与最佳实践
- SSD磁盘的使用:在SSD上配置交换分区时,需注意闪存写入寿命限制,建议适当减小交换分区大小,并禁用交换分区上的
discard选项(在/etc/fstab中添加discard=0)。 - RAID环境:若交换分区位于RAID磁盘上,需确保RAID级别适合随机读写(如RAID 10性能优于RAID 5/6)。
- 内存充足时的配置:对于拥有16GB以上内存的服务器,可考虑配置较小的交换分区(如4-8GB)或仅保留休眠功能所需的交换空间(约等于物理内存大小)。
- 安全权限:交换分区包含敏感数据,需确保权限为600(仅root可读写),避免信息泄露。
通过合理配置与维护,交换分区能有效提升Linux系统的稳定性和性能,是系统管理中不可或缺的一环,管理员需根据实际硬件和应用场景,灵活调整交换策略,以实现资源的最优利用。

















