如何创建交换空间

在 Linux 系统中,交换空间(Swap Space)扮演着至关重要的角色,它相当于系统的 "备用内存"。当物理内存(RAM)不足以满足程序运行需求时,系统会将部分暂时不用的数据转移到交换空间中,从而保证系统的稳定运行。本文将详细介绍交换空间的概念,并分步骤讲解如何在 Linux 系统中创建和管理交换空间。

一、交换空间基础:概念与作用

1. 什么是交换空间?

交换空间是 Linux 系统中专门用于临时存储数据的磁盘空间,它可以是一个独立的分区(Swap Partition),也可以是一个普通文件(Swap File)。与物理内存相比,交换空间的读写速度较慢,但它能有效缓解物理内存不足的问题。

二、创建交换空间前的准备工作

在创建交换空间前,需要完成以下准备工作,确保操作的安全性和准确性。

1. 检查当前系统交换空间状态

首先,通过命令查看系统是否已存在交换空间,以及交换空间的大小和类型。

复制代码
# 查看交换空间详细信息(推荐)
swapon --show

# 或查看简洁的交换空间统计
free -h
  • swapon --show 会显示交换空间的路径(如/dev/sda5/swapfile)、类型(partitionfile)和大小。
  • free -h 中的Swap列会显示总交换空间、已使用和可用空间(单位为 GB 或 MB)。

2. 确定交换空间大小

3. 选择交换空间类型

三、创建交换分区

1. 检查磁盘分区状态

首先通过fdisklsblk命令查看磁盘分区情况,确认是否有未分配空间:

复制代码
# 查看磁盘分区详细信息(推荐,需安装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交互模式后,按以下步骤操作:

  1. 输入n(新建分区),选择分区类型(p为 primary 主分区,e为 extended 扩展分区,根据磁盘分区表类型选择,MBR 磁盘最多 4 个主分区,GPT 磁盘无限制)。
  2. 输入分区编号(如5,根据现有分区编号顺延)。
  3. 输入起始扇区(默认即可,直接按回车)。
  4. 输入结束扇区(指定分区大小,如+8G表示分区大小为 8GB,按回车确认)。
  5. 输入t(修改分区类型),选择刚创建的分区编号(如5)。
  6. 输入13(Linux 交换分区的类型代码,fdisk会自动识别为Linux swap)。
  7. 输入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 --showfree -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验证是否自动挂载成功。

相关推荐
Gavin在路上3 小时前
技术方案之Mysql部署架构
数据库·mysql·架构
洛洛呀。3 小时前
Redis基础概述
数据库·redis·缓存
菜鸡还没找到工作5 小时前
菜鸡还没有找到工作(DAY48)
数据库·sql·mysql
sanguine_boy7 小时前
PLSQL导入excel数据的三种方法
数据库·oracle
冷雨夜中漫步8 小时前
ClickHouse常见问题——ClickHouseKeeper配置listen_host后不生效
java·数据库·clickhouse
小光学长11 小时前
基于vue驾校管理系统的设计与实现5hl93(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
前端·数据库·vue.js
程序猿与金融与科技11 小时前
postgresql_A股2025Q2财报数据
数据库·postgresql
zzhongcy12 小时前
Valkey vs Redis详解
数据库·redis·缓存
技术小泽12 小时前
Redis-底层数据结构篇
数据结构·数据库·redis·后端·性能优化