在 Linux 系统中,交换空间(Swap Space)扮演着至关重要的角色,它相当于系统的 "备用内存"。当物理内存(RAM)不足以满足程序运行需求时,系统会将部分暂时不用的数据转移到交换空间中,从而保证系统的稳定运行。本文将详细介绍交换空间的概念,并分步骤讲解如何在 Linux 系统中创建和管理交换空间。
一、交换空间基础:概念与作用
1. 什么是交换空间?
交换空间是 Linux 系统中专门用于临时存储数据的磁盘空间,它可以是一个独立的分区(Swap Partition),也可以是一个普通文件(Swap File)。与物理内存相比,交换空间的读写速度较慢,但它能有效缓解物理内存不足的问题。
二、创建交换空间前的准备工作
在创建交换空间前,需要完成以下准备工作,确保操作的安全性和准确性。
1. 检查当前系统交换空间状态
首先,通过命令查看系统是否已存在交换空间,以及交换空间的大小和类型。
# 查看交换空间详细信息(推荐)
swapon --show
# 或查看简洁的交换空间统计
free -h
swapon --show
会显示交换空间的路径(如/dev/sda5
或/swapfile
)、类型(partition
或file
)和大小。free -h
中的Swap
列会显示总交换空间、已使用和可用空间(单位为 GB 或 MB)。
2. 确定交换空间大小
3. 选择交换空间类型
三、创建交换分区
1. 检查磁盘分区状态
首先通过fdisk
或lsblk
命令查看磁盘分区情况,确认是否有未分配空间:
# 查看磁盘分区详细信息(推荐,需安装lsblk:sudo apt install util-linux 或 sudo yum install util-linux)
lsblk
# 或使用fdisk(传统命令)
sudo fdisk -l
例如,若磁盘/dev/sda
有未分配空间(标记为free
),则可直接在未分配空间上创建交换分区;若没有未分配空间,需先缩小现有分区(如/dev/sda5
)腾出空间。
2. 创建交换分区
使用fdisk
命令对磁盘进行分区操作,示例:在/dev/sda
磁盘上创建 8GB 的交换分区:
# 进入fdisk分区工具(指定目标磁盘,如/dev/sda)
sudo fdisk /dev/sda
进入fdisk
交互模式后,按以下步骤操作:
- 输入
n
(新建分区),选择分区类型(p
为 primary 主分区,e
为 extended 扩展分区,根据磁盘分区表类型选择,MBR 磁盘最多 4 个主分区,GPT 磁盘无限制)。 - 输入分区编号(如
5
,根据现有分区编号顺延)。 - 输入起始扇区(默认即可,直接按回车)。
- 输入结束扇区(指定分区大小,如
+8G
表示分区大小为 8GB,按回车确认)。 - 输入
t
(修改分区类型),选择刚创建的分区编号(如5
)。 - 输入
13
(Linux 交换分区的类型代码,fdisk
会自动识别为Linux swap
)。 - 输入
w
(保存分区表并退出)。
退出fdisk
后,重启系统或重新加载磁盘分区表,让系统识别新分区:
# 重新加载磁盘分区表(无需重启,推荐)
sudo partprobe /dev/sda
# 或重启系统(若partprobe无效)
sudo reboot
3. 格式化交换分区
使用mkswap
命令将新创建的分区格式化为交换文件系统(示例中交换分区为/dev/sda5
,需替换为实际分区路径):
sudo mkswap /dev/sda5
执行后会输出类似以下信息,表示格式化成功:
Setting up swapspace version 1, size = 8 GiB (8589934592 bytes)
no label, UUID=yyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy
4. 启用交换分区
使用swapon
命令启用交换分区,让系统立即使用:
sudo swapon /dev/sda5
启用后,通过swapon --show
或free -h
验证:
swapon --show
# 输出示例:NAME TYPE SIZE USED PRIO
# /dev/sda5 partition 8G 0B -2
5. 设置开机自动挂载交换分区
将交换分区添加到/etc/fstab
文件中,实现开机自动挂载:
# 查看交换分区的UUID(推荐使用UUID,避免分区路径变化导致挂载失败)
sudo blkid /dev/sda5
# 输出示例:/dev/sda5: UUID="yyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy" TYPE="swap"
# 将交换分区信息添加到/etc/fstab
sudo echo "UUID=yyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy swap swap defaults 0 0" >> /etc/fstab
重启系统后,通过swapon --show
验证是否自动挂载成功。