Linux 创建交换空间文件与设置优先级

By | 最新修改:2024-08-17

本文的主要内容

本文介绍了 Linux 上如何创建和启用 Swap 交换空间文件,以及如何设置优先级。


什么是交换空间

“交换空间(Swap Space)”,作用是把硬盘空间用作物理内存的扩展,操作系统会把一些空闲的数据放到交换空间中;如果需要使用这些数据资源,那么操作系统会把磁盘上的交换空间移交到物理内存上。

无论是 windows,抑或是 linux,都有这个概念。就是当物理内存不够用,或者因由某种情况,操作系统上的程序会自由地从磁盘和物理内存间存取数据。

交换空间可以是磁盘上的一个分区,也可以是一个文件,磁盘分区或文件格式化为交换空间时又分别称为“交换分区”和“交换文件”,

本文的所有命令默认使用 root 权限运行,如果登录用户不是 root 用户,那么请用 sudo 命令来提升权限。


linux 下创建交换空间文件

linux 发行版中,“交换空间”也称为“Swap 空间”。

本文创建了“交换文件”,并在系统上启用“交换空间”,以及设置其优先级。

1. 创建交换文件

  1. 创建虚拟空间文件: touch /var/swap.img
  2. 以空字符填充该文件,直到两倍于物理内存:

    当前机器物理内存大小为 1GB = 1024MB,这里将 Swap 文件的大小设为 2GB,即 2048 MB,也就是 1MB * 2048 —— bs值 * count值

    实际上大小可以自定义,只要磁盘空间允许。

    以下的命令创建一个 2GB 的交换空间文件:

    dd if=/dev/zero of=/var/swap.img bs=1MB count=2048
    

2. 格式化文件为 Swap 分区

將新建的文件格式化为 swap 分区:

mkswap /var/swap.img

3. 启用 Swap 分区

swapon /var/swap.img

这时出现个如下的提示:

swapon: /var/swap.img: insecure permissions 0644, 0600 suggested.

解决办法是將新建的交换空间文件的权限设置为 0600:chmod 600 /var/swap.img

4. 查看已启用的 Swap 分区

查看 swap 分区: swapon --show

执行结果:

name          type      size used prio
/var/swap.img file        2g   0b   -2

上面第二行就是新建的交换空间文件。看最后一列,prio,表示是优先级,数字越大,表示优先级越高。

5. 改变 Swap 优先级

现在改变交换空间的优先级。

首先关闭 Swap

swapoff /var/swap.img

设置优先级并且重新启用 Swap——设置swap优先级

重新启用“交换空间”,并且设置其优先级为“100”:

swapon -p 100 /var/swap.img

再次查看 Swap 的信息:

swapon --show

执行结果:

name          type      size used prio
/var/swap.img file        2g   0b  100

设置物理内存与交换空间之间的权衡——Linux swappiness 设置

sysctl -w vm.swappiness=50

执行结果:

vm.swappiness = 50

意思是随机在物理内存和交换空间之间交换(存取)数据。

永久地设置,即重启系统也有效:

sudo bash -c 'echo "vm.swappiness = 50" >> /etc/sysctl.conf ; sysctl -p'

把 Swap 交换空间的挂载写进系统

启动系统时挂载 Swap 分区/文件:

bash -c 'cat >> /etc/fstab <<EOF
/var/swap.img none swap defaults,pri=100 0 0
EOF'

到下次系统启动之时会自动挂载该交换空间。


删除交换空间文件——linux删除交换文件

1. 关闭交换空间

swapoff /var/swap.img

2. 删除文件

rm -f /var/swap.img


程序知路

鉴于本人的相关知识储备以及能力有限,本博客的观点和描述如有错漏或是有考虑不周到的地方还请多多包涵,欢迎互相探讨,一起学习,共同进步。

本文章可以转载,但是需要说明来源出处!

本文使用的部分图片来源于网上,若是侵权,请与本文作者联系删除: admin@icxzl.com