【Linux Swap 交换分区:定义、作用与操作指南】

提示:本文原创作品,良心制作,干货为主,简洁清晰,一看就会

文章目录

  • [一、什么是 Swap 交换分区?](#一、什么是 Swap 交换分区?)
  • [二、Swap 分区的核心作用](#二、Swap 分区的核心作用)
  • [三、Swap 分区与物理内存的区别](#三、Swap 分区与物理内存的区别)
  • [四、Swap 分区的创建与使用](#四、Swap 分区的创建与使用)
  • [五、Swap 分区的注意事项](#五、Swap 分区的注意事项)
  • 六、总结

一、什么是 Swap 交换分区?

Swap 分区(交换分区)是 Linux 系统中专门用于内存扩展的磁盘分区,核心作用是当物理内存(RAM)不足时,系统会将部分暂时不用的内存数据"交换"到 Swap 分区中,腾出物理内存供当前运行的程序使用,相当于给内存"加了一块虚拟内存"

二、Swap 分区的核心作用

  1. 内存不足时的"应急空间"
    当物理内存被占满,系统会自动将内存中不活跃的进程数据(如闲置的缓存、后台程序)转移到 Swap 分区,避免系统因内存耗尽而崩溃或卡死。
  2. 提升系统稳定性
    尤其在服务器、嵌入式设备等内存较小的场景中,Swap 能有效缓解内存压力,保障核心程序正常运行。
  3. 临时数据存储
    部分程序运行时会产生临时数据,Swap 可作为这些数据的临时存储区域,减少对物理内存的占用。

三、Swap 分区与物理内存的区别

特性 物理内存(RAM) Swap 分区(虚拟内存)
读写速度 极快(硬件直接访问) 较慢(磁盘 I/O 操作)
容量 受硬件限制(如 8G/16G) 受磁盘空间限制(可与磁盘容量相当)
持久性 断电后数据丢失 断电后数据不丢失(存储在磁盘)
用途 运行中程序的实时数据存储 内存数据的"临时备份"

四、Swap 分区的创建与使用

bash 复制代码
#方法一:增加磁盘做swap
root@ubuntu:~# free -m  #查看交换分区信息
               total        used        free      shared  buff/cache   available
Mem:            3875         305        3330           1         239        3337
Swap:              0           0           0
root@ubuntu:~# lsblk      #查看磁盘情况
NAME                      MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
loop0                       7:0    0   87M  1 loop /snap/lxd/29351
loop1                       7:1    0 63.9M  1 loop /snap/core20/2318
loop2                       7:2    0 38.8M  1 loop /snap/snapd/21759
sda                         8:0    0   20G  0 disk 
|-sda1                      8:1    0    1M  0 part 
|-sda2                      8:2    0  1.8G  0 part /boot
`-sda3                      8:3    0 18.2G  0 part 
  `-ubuntu--vg-ubuntu--lv 253:0    0   10G  0 lvm  /
sdb                         8:16   0    5G  0 disk   #可以看到/dev/sdb未使用,没有的可以添加
sr0                        11:0    1    2G  0 rom  
root@ubuntu:~# fdisk /dev/sdb  #给/dev/sdb做分区,用这个分区来做swap分区

Command (m for help): n  #制作分区
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p): p  #设置主分区
Partition number (1-4, default 1): 
First sector (2048-10485759, default 2048): 
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-10485759, default 10485759): +2G  #分配2G

Created a new partition 1 of type 'Linux' and of size 2 GiB.

Command (m for help): w  #保存并退出
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

root@ubuntu:~# lsblk
NAME                      MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
loop0                       7:0    0   87M  1 loop /snap/lxd/29351
loop1                       7:1    0 63.9M  1 loop /snap/core20/2318
loop2                       7:2    0 38.8M  1 loop /snap/snapd/21759
sda                         8:0    0   20G  0 disk 
|-sda1                      8:1    0    1M  0 part 
|-sda2                      8:2    0  1.8G  0 part /boot
`-sda3                      8:3    0 18.2G  0 part 
  `-ubuntu--vg-ubuntu--lv 253:0    0   10G  0 lvm  /
sdb                         8:16   0    5G  0 disk 
`-sdb1                      8:17   0    2G  0 part  #分区成功
sr0                        11:0    1    2G  0 rom  
root@ubuntu:~# mkswap /dev/sdb1 #初始化交换分区
Setting up swapspace version 1, size = 2 GiB (2147479552 bytes)
no label, UUID=6733fc41-5373-4147-b033-1dd26ca38a03
root@ubuntu:~# blkid /dev/sdb1  #查看UUID
/dev/sdb1: UUID="6733fc41-5373-4147-b033-1dd26ca38a03" TYPE="swap" PARTUUID="e027cc12-01"
root@ubuntu:~# vim /etc/fstab   #制作开机挂载
/dev/sdd1       swap    swap    defaults        0 0
root@ubuntu:~# swapon -a  #激活swap分区(读取/etc/fstab)
root@ubuntu:~# swapon -s  #查看交换分区信息
Filename                                Type            Size            Used            Priority
/dev/sdb1                               partition       2097148         0               -2
root@ubuntu:~# free -m
               total        used        free      shared  buff/cache   available
Mem:            3875         301        3328           1         246        3341
Swap:           2047           0        2047
root@ubuntu:~# swapoff /dev/sdb1  #关闭交换分区
root@ubuntu:~# free -m
               total        used        free      shared  buff/cache   available
Mem:            3875         300        3329           1         246        3342
Swap:              0           0           0
bash 复制代码
#文件制作swap
root@ubuntu:~# dd if=/dev/zero of=/swap.img bs=1M count=512
#解释:dd 读入  从空设备里面拿空块 到交换分区                块多大  一共多少兆
root@ubuntu:~# mkswap /swap.img  #初始化swap
root@ubuntu:~# vim /etc/fstab
/swap.img      swap    swap    defaults        0 0
root@ubuntu:~# chmod 600 /swap.img 
root@ubuntu:~# swapon -a  #交换分区权限需要设置为600,默认644权限不安全
root@ubuntu:~# free -h  ##查看交换分区信息
               total        used        free      shared  buff/cache   available
Mem:           3.8Gi       289Mi       2.5Gi       1.0Mi       1.0Gi       3.3Gi
Swap:          511Mi          0B       511Mi

五、Swap 分区的注意事项

  1. Swap 分区的性能远低于物理内存,仅作为应急方案,不能替代物理内存
  2. Swap 分区的大小并非越大越好 ,过大的 Swap 会导致系统过度依赖虚拟内存,反而降低运行效率

六、总结

Swap 分区是 Linux 系统的"内存缓冲垫",它通过磁盘空间模拟内存,保障系统在内存不足时的稳定性;在实际应用中,需根据物理内存大小合理设置 Swap 分区的大小,同时避免过度依赖 Swap 导致系统性能下降


注:

文中若有疏漏,欢迎大家指正赐教。

本文为100%原创,转载请务必标注原创作者,尊重劳动成果。

求赞、求关注、求评论!你的支持是我更新的最大动力,评论区等你~

相关推荐
祁鱼鱼鱼鱼鱼3 小时前
rhce-shell条件测试
linux·运维
wefg13 小时前
【Linux】文件管理
linux·运维·服务器
hweiyu003 小时前
Linux 命令:split
linux·运维·服务器
lihe7584 小时前
每天凌晨3点自动同步UBUNTU源
linux·运维·ubuntu·本地源
添砖java‘’4 小时前
线程的互斥与同步
linux·c++·操作系统·线程·信息与通信
tod1135 小时前
Makefile进阶(上)
linux·运维·服务器·windows·makefile·进程
阳光九叶草LXGZXJ5 小时前
达梦数据库-学习-50-分区表指定分区清理空洞率(交换分区方式)
linux·运维·数据库·sql·学习
zbliquan5 小时前
SS928v100远程ubuntu交叉编译开发环境搭建
linux·运维·ubuntu
我爱加班、、5 小时前
new Map()+Array.from()整理elementPlus的级联器数据
linux·前端·javascript