如何创建交换空间

在 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验证是否自动挂载成功。

相关推荐
Lu Yao_6 小时前
Redis 缓存
数据库·redis·缓存
小桥流水人家哇7 小时前
性能测试单场景测试时,是设置并发读多个文件,还是设置不同的用户读不同的文件?
数据库·性能测试技巧
表示这么伤脑筋的题我不会7 小时前
Oracle 21C 部署ogg踩过的坑
数据库·oracle
你不是我我7 小时前
【Java 开发日记】MySQL 与 Redis 如何保证双写一致性?
数据库·redis·缓存
望获linux7 小时前
【实时Linux实战系列】实时 Linux 在边缘计算网关中的应用
java·linux·服务器·前端·数据库·操作系统
fredinators7 小时前
数据库专家
大数据·数据库
fredinators7 小时前
数据库flask访问
数据库·oracle·flask
向葭奔赴♡8 小时前
Spring Boot 分模块:从数据库到前端接口
数据库·spring boot·后端
JosieBook8 小时前
【数据库】时序数据库选型指南:在大数据与工业4.0时代,为何 Apache IoTDB 成为智慧之选?
大数据·数据库·时序数据库
程序员三明治8 小时前
详解Redis锁误删、原子性难题及Redisson加锁底层原理、WatchDog续约机制
java·数据库·redis·分布式锁·redisson·watchdog·看门狗