提示:本文原创作品,良心制作,干货为主,简洁清晰,一看就会
文章目录
- [一、什么是 Swap 交换分区?](#一、什么是 Swap 交换分区?)
- [二、Swap 分区的核心作用](#二、Swap 分区的核心作用)
- [三、Swap 分区与物理内存的区别](#三、Swap 分区与物理内存的区别)
- [四、Swap 分区的创建与使用](#四、Swap 分区的创建与使用)
- [五、Swap 分区的注意事项](#五、Swap 分区的注意事项)
- 六、总结
一、什么是 Swap 交换分区?
Swap 分区(交换分区)是 Linux 系统中专门用于内存扩展的磁盘分区,核心作用是当物理内存(RAM)不足时,系统会将部分暂时不用的内存数据"交换"到 Swap 分区中,腾出物理内存供当前运行的程序使用,相当于给内存"加了一块虚拟内存"
二、Swap 分区的核心作用
- 内存不足时的"应急空间"
当物理内存被占满,系统会自动将内存中不活跃的进程数据(如闲置的缓存、后台程序)转移到 Swap 分区,避免系统因内存耗尽而崩溃或卡死。 - 提升系统稳定性
尤其在服务器、嵌入式设备等内存较小的场景中,Swap 能有效缓解内存压力,保障核心程序正常运行。 - 临时数据存储
部分程序运行时会产生临时数据,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 分区的注意事项
- Swap 分区的性能远低于物理内存,仅作为应急方案,不能替代物理内存
- Swap 分区的大小并非越大越好 ,过大的 Swap 会导致系统过度依赖虚拟内存,反而降低运行效率
六、总结
Swap 分区是 Linux 系统的"内存缓冲垫",它通过磁盘空间模拟内存,保障系统在内存不足时的稳定性;在实际应用中,需根据物理内存大小合理设置 Swap 分区的大小,同时避免过度依赖 Swap 导致系统性能下降
注:
文中若有疏漏,欢迎大家指正赐教。
本文为100%原创,转载请务必标注原创作者,尊重劳动成果。
求赞、求关注、求评论!你的支持是我更新的最大动力,评论区等你~