Swap分区简介
即为交换分区(Windows系统称其为虚拟内存),它是一块特殊的硬盘空间,当实际物理内存不够用的时候,操作系统会从物理内存中取出一部分暂时不用的数据,放在swap交换分区中,从而为当前正在运行的程序腾出足够的物理内存空间。简而言之,就是当物理内存不够用时,使用swap分区来临时顶替。通过使用swap分区,在操作系统的调度下,应用程序实际可以使用的内存空间大小将远远超过系统的物理内存空间。如果我们在安装操作系统时,忘记分配swap分区或者已经在运行的操作系统需要扩容swap分区,又该如何操作呢?
Swap分区扩容
查看当前swap分区大小
[root@localhost ~]# free -h
total used free shared buff/cache available
Mem: 2.8Gi 604Mi 1.6Gi 11Mi 625Mi 2.0Gi
Swap: 0B 0B 0B
新建磁盘分区作为swap空间
备注:由于此次实验环境中的磁盘是逻辑卷,所以下述步骤中创建磁盘是以LVM命令方式进行操作的。如果实际环境中是裸硬盘的方式,那么就可以使用fdisk命令或者parted命令进行磁盘分区。
- 新建一个4GB的swap分区;
[root@localhost ~]# lvcreate -L 4GB -n swap klas
Logical volume "swap" created.
- 格式化为swap分区;
[root@localhost ~]# mkswap /dev/mapper/klas-swap
正在设置交换空间版本 1,大小 = 4 GiB (4294963200 个字节)
无标签,UUID=c219433d-b5ee-454f-af79-0fb373caf5a4
- 激活swap分区并确认;
[root@localhost ~]# swapon /dev/mapper/klas-swap
[root@localhost ~]# free -h
total used free shared buff/cache available
Mem: 2.8Gi 626Mi 1.6Gi 11Mi 629Mi 1.9Gi
Swap: 4.0Gi 0B 4.0Gi
- 配置开机自动挂载swap分区并重启系统验证;
[root@localhost ~]# echo "/dev/mapper/klas-swap swap swap defaults 0 0" >> /etc/fstab
[root@localhost ~]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Wed Dec 7 11:00:38 2022
#
# Accessible filesystems, by reference, are maintained under '/dev/disk/'.
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info.
#
# After editing this file, run 'systemctl daemon-reload' to update systemd
# units generated from this file.
#
/dev/mapper/klas-root / xfs defaults 0 0
/dev/mapper/klas-backup /backup xfs noauto 0 0
UUID=84f8e782-e1b6-4462-9f86-d08bd019219e /boot xfs defaults 0 0
/dev/mapper/klas-swap swap swap defaults 0 0
新建文件用来扩容swap空间
备注:当然也可以根据上述新建磁盘分区或者扩展逻辑卷的方式的步骤来进行swap分区扩容。
- 新建一个2GB的文件作为swap分区;
[root@localhost ~]# free -h
total used free shared buff/cache available
Mem: 2.8Gi 589Mi 1.6Gi 11Mi 617Mi 2.0Gi
Swap: 4.0Gi 0B 4.0Gi
[root@localhost ~]# dd if=/dev/zero of=/swapfile1 bs=1M count=2048
记录了2048+0 的读入
记录了2048+0 的写出
2147483648字节(2.1 GB,2.0 GiB)已复制,6.23587 s,344 MB/s
- 格式化swap分区文件;
[root@localhost ~]# mkswap /swapfile1
mkswap: /swapfile1:不安全的权限 0644,建议使用 0600。
正在设置交换空间版本 1,大小 = 2 GiB (2147479552 个字节)
无标签,UUID=0e48ab71-6391-43a6-8b00-65fdc898834e
[root@localhost ~]# chmod 600 /swapfile1
- 激活swap分区文件;
[root@localhost ~]# swapon /swapfile1
[root@localhost ~]# free -h
total used free shared buff/cache available
Mem: 2.8Gi 586Mi 69Mi 11Mi 2.2Gi 2.0Gi
Swap: 6.0Gi 0.0Ki 6.0Gi
- 配置开机自动激活swap分区文件并重启系统验证;
[root@localhost ~]# echo "/swapfile1 swap swap defaults 0 0" >> /etc/fstab
[root@localhost ~]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Wed Dec 7 11:00:38 2022
#
# Accessible filesystems, by reference, are maintained under '/dev/disk/'.
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info.
#
# After editing this file, run 'systemctl daemon-reload' to update systemd
# units generated from this file.
#
/dev/mapper/klas-root / xfs defaults 0 0
/dev/mapper/klas-backup /backup xfs noauto 0 0
UUID=84f8e782-e1b6-4462-9f86-d08bd019219e /boot xfs defaults 0 0
/dev/mapper/klas-swap swap swap defaults 0 0
/swapfile1 swap swap defaults 0 0
相关命令解析
swapon命令用于激活Linux系统中交换空间,Linux系统的内存管理必须使用交换区来建立虚拟内存。
- 语法
swapon (选项) (参数) - 选项
-a:将/etc/fstab文件中所有设置为swap的设备,启动为交换区;
-h:显示帮助;
-p<优先顺序>:指定交换区的优先顺序;
-s:显示交换区的使用状况;
-V:显示版本信息。 - 参数
交换空间:指定需要激活的交换空间,可以是交换文件和交换分区,如果是交换分区则指定交换分区对应的设备文件。 - 实例
swapon /dev/sda1 激活swap分区/dev/sda1
swapoff /dev/sda1 取消激活swap分区/dev/sda1
swapon -a 激活/etc/fstab文件中所有设置为swap的分区或文件