SWAP交换空间

发布于 2021-08-05  141 次阅读


简介

Linux 将物理内存分为内存段,叫做页面。交换是指内存页面被复制到预先设定好的硬盘空间(叫做交换空间)的过程,目的是释放这份内存页面。物理内存和交换空间的总大小是可用的虚拟内存的总量。

交换空间通常是一个磁盘分区,但是也可以是一个文件。

使用swap扩展您的虚拟内存是否有好处取决与您的物理内存。如果物理内存不足以支撑您日常使用全部的程序的话(体现在日常使用时内存满了导致的卡顿,死机),使用swap也许会对您有些帮助。启用交换的最大缺点是性能较低.

查看交换空间状态

 swapon --show

显示物理内存以及交换使用情况

 free -h

交换分区

交换分区可以用大多数 GNU/Linux 分区工具(例如 fdisk, cfdisk) 创建。交换分区被分配为类型 82。尽管可以使用任何分区类型作为交换分区,但是在大多数情况下,建议使用 82,因为 systemd 会自动检测并挂载它(见下文)。

启用一个设备作为交换分区:

 swapon /dev/sdxy

启动时自动启用交换分区,添加一个条目到 /etc/fstab,参考自动挂载文章

 UUID=device_UUID none swap defaults 0 0

命令关闭交换分区

 swapoff /dev/sdxy

交换文件

相比于使用一个磁盘分区作为交换空间,使用交换文件可以更方便地随时调整大小或者移除。当磁盘空间有限(例如常规大小的SSD)时,使用交换文件更加理想

使用 dd 去创建一个由你自己指定大小的交换文件。例如,创建一个 512 MiB 的交换文件

 dd if=/dev/zero of=/swapfile bs=1M count=512 status=progress

为交换文件设置权限(交换文件全局可读是一个巨大的本地漏洞)

 chmod 600 /swapfile

创建正确大小的文件后,将其格式化用来作为交换文件

 mkswap /swapfile

启用交换文件

 swapon /swapfile

最后,编辑 /etc/fstab,在为交换文件添加一个条目

 /swapfile none swap defaults 0 0

注意:交换文件必须由文件系统上的位置指定,而不是由UUID或标签指定。

停用交换文件

 swapoff /swapfile