如何创建 Linux 交换文件
交换空间只不过是 Linux 内核内存子系统对磁盘、分区或文件的控制。当服务器开始耗尽物理 RAM(随机存取内存)时,Linux 内核将使用交换空间。换句话说,交换空间将保存不活动的页面。物理 RAM 和交换的组合被称为虚拟内存。交换空间对于 Linux 笔记本电脑和台式机用户的休眠目的也至关重要。Linux 台式机用户使用交换空间在休眠前保存 RAM 内容。
教程要求 | |
---|---|
要求 | Linux |
Root 权限 | 是的 |
难度等级 | 简单的 |
预计阅读时间 | 4 分钟 |
创建 Linux 交换文件的步骤
- 显示 Linux 上当前的交换空间和 RAM 使用情况:
$ free -h
$ swapon --summary - 接下来,使用 dd 命令创建一个用于交换空间的新文件:
# Example: 2 Gib Linux swap file #
$ sudo dd if=/dev/zero of=/swap-file count=2 bs=1GiB - 出于安全原因,请确保使用 chmod 命令和 chown 命令设置正确的 Linux 文件系统权限:
$ sudo chmod -v 0600 /swap-file
$ sudo chown -v root:root /swap-file
# List permissions #
$ ls -l /swap-file - 运行以下 mkswap 命令使用文件设置 Linux 交换区域:
$ sudo mkswap /swap-file
- 通过输入 swapon 命令激活交换空间:
$ sudo swapon /swap-file
使用 CLI 在 Linux 上添加交换文件
显示 Linux 上的 RAM 和交换使用情况
您可以使用以下任一命令:
$ swapon --summary
$ free -h
$ top
$ htop
$ vmstat
在 Linux 上显示交换使用情况摘要
如何在 Linux 上持久激活交换空间文件
确保我们的交换文件在 Linux 系统重启后激活。要使更改永久生效,请编辑 /etc/fstab 文件:
$ sudo vi /etc/fstab
附加以下配置指令:
/swap-file swap swap defaults 0 0
保存并关闭文件。
如何设置交换空间和文件优先级
默认情况下,Linux 内核使用第一个激活的交换空间,直到它满了为止。然后内核开始使用第二个交换空间,依此类推。不过,Linux 允许我们定义优先级。默认优先级为 -2,Linux 可以首先使用最高优先级。编辑 /etc/fstab 并添加以下内容pri:
/dev/sdb none swap sw 0 0 /swap-file swap swap pri=5 0 0 /swap-file-2 swap swap pri=10 0 0
现在我的 Linux 内核首先使用 /swap-file-2 ,优先级为 10。当该空间已满时,Linux 将使用 /swap-file ,优先级为 5 。最后,Linux 使用优先级为-2的 /dev/sdb 。
关于 swappiness 的说明
swappiness值在 /proc/sys/vm/swappiness 文件中定义。它控制 Linux 内核交换内存页面的积极程度。值越高,积极程度越高,值越低,积极程度越低。默认值为 60。使用cat 命令查看值:
我建议保留默认值,这对大多数用户来说都很好。但是,您可以按如下方式将其更改为 40:有关更多信息,
请参阅“如何在 Linux 或 Unix 上使用 sudo 命令时将文本附加到文件”和“如何使用 sysctl.conf 永久更改 /proc/ 文件系统”。
$ cat /proc/sys/vm/swappiness
60
$ sudo echo "vm.swappiness=10" | sudo tee -a /etc/sysctl.d/99-swappiness.conf
删除交换文件
想要删除交换文件吗?尝试:
- 禁用交换文件:
$ sudo swapoff -v /swap-file
- 使用 rm 命令删除物理交换文件:
$ sudo rm -v -i /swap-file
- 编辑 /etc/fstab 并删除交换文件的条目。例如:
/swap-file swap swap defaults 0 0
结论
您了解了如何在 Linux 上创建交换文件以优化虚拟机/裸机服务器或 Linux 桌面以增加可用的交换空间。通过键入 man 命令查看以下手册页/文档以获取更多信息:
$ man 8 mkswap
$ man 8 swapon
$ man 8 swapoff
$ man 8 mount
$ man 5 fstab