Linux创建交换分区方式

 更新时间:2026年01月27日 09:06:12   作者:杨了个杨8982  
交换分区(SwapPartition)在Linux系统中作为内存的补充,当物理内存不够用时,将部分不使用的内存数据移动到交换分区中,交换分区大小应依据系统内存大小确定,通常为内存大小的1-2倍,创建交换分区的方法有两种:使用物理分区创建和使用文件创建内存交换文件

交换分区(Swap Partition)在 Linux 系统中是一种特殊的磁盘分区。它的主要功能是作为内存(RAM)的补充,当系统的物理内存(Random Access Memory)不够用的时候,操作系统会将一部分暂时不使用的内存数据移动到交换分区中,从而为当前正在运行的程序腾出物理内存空间。

这就好比是一个备用的 “仓库”,当主仓库(物理内存)装满时,可以把一些暂时不用的 “货物”(数据)存放到备用仓库(交换分区)里。

交换分区大小的选择:交换分区的大小一般依据系统的内存大小来确定。

系统内存(G)交换分区大小(G)说明
<42-4如果系统内存小于 4GB,交换分区大小通常建议设置为内存大小的 1 - 2 倍
4-1612对于内存大小在 4GB - 16GB 之间的系统,交换分区可以设置为内存大小的 1.5 倍左右
>1616-32当系统内存大于 16GB 时,交换分区大小可以设置为内存大小的 0.5 - 1 倍

方法一:使用物理分区创建Swap分区

1.检查磁盘空间

使用命令lsblk来查看磁盘的分区情况和可用空间

[root@centos7-171 ~]# lsblk
NAME                         MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda                            8:0    0   50G  0 disk
├─sda1                         8:1    0    1G  0 part /boot
└─sda2                         8:2    0   49G  0 part
  ├─centos_centos7--171-root 253:0    0 45.1G  0 lvm  /
  └─centos_centos7--171-swap 253:1    0  3.9G  0 lvm  [SWAP]
sdb                            8:16   0    5G  0 disk
sr0                           11:0    1  4.4G  0 rom
[root@centos7-171 ~]#

由上可以看出,sdb盘共5G容量,剩余5G可用,下面就使用该盘创建4G的交换分区。

2.创建分区

命令:fdisk /dev/sdb

(1)建立新的分区:

  • 输入 p 打印现有分区情况(还没有分区)
  • 输入 n 新建分区
  • 输入 p 为建立主分区(此时的p是在n后的,不是打印)
  • 分区号选择可以直接回车,选择默认
  • 分区起始位置可以直接回车,选择默认
  • 分区结束位置输入 +4G(创建4G大小的分区)
  • 输入 p 打印分区情况,发现已建立一个分区/dev/sdb1,但是此分区为 Linux 格式

(2)改变系统标识符:

  • 输入 t 改变分区1的属性
  • 输入 L 查看有个属性对应的命令
  • 输入 82改变分区1为 Linux swap标识
  • 输入 p 打印分区情况,发现建立的分区 /dev/sdb1 为 Linux swap
  • 输入 w 保存并退出分区
[root@centos7-171 ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。

Device does not contain a recognized partition table
使用磁盘标识符 0x3975c095 创建新的 DOS 磁盘标签。

命令(输入 m 获取帮助):p

磁盘 /dev/sdb:5368 MB, 5368709120 字节,10485760 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x3975c095

   设备 Boot      Start         End      Blocks   Id  System

命令(输入 m 获取帮助):n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
分区号 (1-4,默认 1):
起始 扇区 (2048-10485759,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-10485759,默认为 10485759):+4G
分区 1 已设置为 Linux 类型,大小设为 4 GiB

命令(输入 m 获取帮助):t
已选择分区 1
Hex 代码(输入 L 列出所有代码):L

 0  空              24  NEC DOS         81  Minix / 旧 Linu bf  Solaris
 1  FAT12           27  隐藏的 NTFS Win 82  Linux 交换 / So c1  DRDOS/sec (FAT-
 2  XENIX root      39  Plan 9          83  Linux           c4  DRDOS/sec (FAT-
 3  XENIX usr       3c  PartitionMagic  84  OS/2 隐藏的 C:  c6  DRDOS/sec (FAT-
 4  FAT16 <32M      40  Venix 80286     85  Linux 扩展      c7  Syrinx
 5  扩展            41  PPC PReP Boot   86  NTFS 卷集       da  非文件系统数据
 6  FAT16           42  SFS             87  NTFS 卷集       db  CP/M / CTOS / .
 7  HPFS/NTFS/exFAT 4d  QNX4.x          88  Linux 纯文本    de  Dell 工具
 8  AIX             4e  QNX4.x 第2部分  8e  Linux LVM       df  BootIt
 9  AIX 可启动      4f  QNX4.x 第3部分  93  Amoeba          e1  DOS 访问
 a  OS/2 启动管理器 50  OnTrack DM      94  Amoeba BBT      e3  DOS R/O
 b  W95 FAT32       51  OnTrack DM6 Aux 9f  BSD/OS          e4  SpeedStor
 c  W95 FAT32 (LBA) 52  CP/M            a0  IBM Thinkpad 休 eb  BeOS fs
 e  W95 FAT16 (LBA) 53  OnTrack DM6 Aux a5  FreeBSD         ee  GPT
 f  W95 扩展 (LBA)  54  OnTrackDM6      a6  OpenBSD         ef  EFI (FAT-12/16/
10  OPUS            55  EZ-Drive        a7  NeXTSTEP        f0  Linux/PA-RISC
11  隐藏的 FAT12    56  Golden Bow      a8  Darwin UFS      f1  SpeedStor
12  Compaq 诊断     5c  Priam Edisk     a9  NetBSD          f4  SpeedStor
14  隐藏的 FAT16 <3 61  SpeedStor       ab  Darwin 启动     f2  DOS 次要
16  隐藏的 FAT16    63  GNU HURD or Sys af  HFS / HFS+      fb  VMware VMFS
17  隐藏的 HPFS/NTF 64  Novell Netware  b7  BSDI fs         fc  VMware VMKCORE
18  AST 智能睡眠    65  Novell Netware  b8  BSDI swap       fd  Linux raid 自动
1b  隐藏的 W95 FAT3 70  DiskSecure 多启 bb  Boot Wizard 隐  fe  LANstep
1c  隐藏的 W95 FAT3 75  PC/IX           be  Solaris 启动    ff  BBT
1e  隐藏的 W95 FAT1 80  旧 Minix
Hex 代码(输入 L 列出所有代码):82
已将分区“Linux”的类型更改为“Linux swap / Solaris”

命令(输入 m 获取帮助):p

磁盘 /dev/sdb:5368 MB, 5368709120 字节,10485760 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x3975c095

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     8390655     4194304   82  Linux swap / Solaris

命令(输入 m 获取帮助):w
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@centos7-171 ~]#

3.格式化分区

创建分区后,需要将其格式化为交换分区格式,使用mkswap命令。

[root@centos7-171 ~]# mkswap /dev/sdb1
正在设置交换空间版本 1,大小 = 4194300 KiB
无标签,UUID=89d90739-5def-44aa-9273-d3dea6310714
[root@centos7-171 ~]#

4.永久挂载(/etc/fstab)

blkid    #查询分区的UUID
 
#将挂载内容配置到/etc/fatab文件下,实现永久挂载
echo 'UUID=89d90739-5def-44aa-9273-d3dea6310714 swap swap defaults 0 0' >> /etc/fstab

5.启用交换分区

使用swapon命令来启用新创建的交换分区。

swapon -a    //刷新swap分区,测试 fstab 挂载是否正常
swapon -s	//列出正在使用的Swap分区设备

方法二:使用文件创建内存交换文件

dd if=/dev/zero of=/var/swapd bs=1G count=4    #创建交换文件
mkswap /var/swapd        #格式化为交换空间
chmod 0644 /var/swapd        #设置文件权限
echo '/var/swapd swap swap default 0 0' >> /etc/fstab    #配置永久挂载
swapon -a    #刷新swap分区,测试 fstab 挂载是否正常

dd命令的用法:

dd if=/dev/zero of=/var/swapd bs=1G count=4
  • if 是input file的意思(输入文件),/dev/zero是一直输入0的设备
  • of 是output file的意思(输出文件),一般指定到目标文件
  • bs 是每个block 的大小,就像文件系统那样的block意义
  • count 则是总共几个bs的意思,故bs*count就是文件容量
  • of 的目标文件不需要提前touch创建,如果文件不存在会自动创建

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 使用ElasticSearch集群搭建步骤

    使用ElasticSearch集群搭建步骤

    本文详细阐述了Elasticsearch搜索引擎的安装与配置过程,包括使用RPM进行安装,设置基本安全性,加密HTTP客户端通信,以及配置集群等步骤,Elasticsearch是一个开源的分布式搜索和分析引擎,适用于全文搜索、结构化搜索、分析和可视化大规模数据
    2024-10-10
  • Apache 高级配置实战之从连接保持到日志分析的完整指南

    Apache 高级配置实战之从连接保持到日志分析的完整指南

    本文带你从连接保持优化开始,一路走到访问控制和日志管理,最后用 AWStats 来分析网站数据,对Apache配置日志分析相关知识感兴趣的朋友一起看看吧
    2025-05-05
  • 在Linux中列出Systemd下所有正在运行的服务的方法指南

    在Linux中列出Systemd下所有正在运行的服务的方法指南

    Systemd是Linux的系统和服务管理器; init进程的替代品,与SysV 和LSB init脚本兼容,systemctl命令是管理systemd的主要工具,在这篇文章中,我们将演示如何 Linux中列出systemd下所有正在运行的服务,感兴趣的同学可以借鉴阅读
    2023-06-06
  • 详解linux tail命令显示最后n行

    详解linux tail命令显示最后n行

    这篇文章给大家分享了linux tail命令显示最后n行的具体代码方法,有需要的朋友可以参考学习下。
    2018-07-07
  • linux下system函数的简单分析

    linux下system函数的简单分析

    这篇文章主要简单分析了linux下system函数,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-05-05
  • Linux调整系统最大文件打开数限制的实战指南

    Linux调整系统最大文件打开数限制的实战指南

    在现代高并发服务架构中,Linux系统的文件描述符(File Descriptor)管理能力直接决定了应用的稳定性和吞吐量,本文将带你深入理解Linux文件描述符机制,手把手教你如何正确调整系统最大文件打开数限制,并结合真实Java代码示例,让你的应用稳如泰山
    2026-04-04
  • Linux系统开机无限重启的解决方案

    Linux系统开机无限重启的解决方案

    这篇文章主要介绍了Linux系统开机无限重启的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • 阿里云Linux主机安装WDCP管理面板(包含lamp+lnmp+lanmp环境)

    阿里云Linux主机安装WDCP管理面板(包含lamp+lnmp+lanmp环境)

    这篇文章主要介绍了阿里云Linux主机安装WDCP管理面板(包含lamp+lnmp+lanmp环境),需要的朋友可以参考下
    2017-08-08
  • IO多路复用之poll全面总结(必看篇)

    IO多路复用之poll全面总结(必看篇)

    下面小编就为大家带来一篇IO多路复用之poll全面总结(必看篇)。小编觉得挺不错的。现在就分享给大家。也给大家做个参考。一起跟随小编过来看看吧
    2016-12-12
  • linux如何将环境文件或者文件夹打包

    linux如何将环境文件或者文件夹打包

    这篇文章主要介绍了linux如何将环境文件或者文件夹打包问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12

最新评论