Linux 添加交换文件教程
在 Linux 中,与大多数其他类 Unix 操作系统一样,通常使用硬盘的整个分区进行交换。但是,使用 2.6 Linux 内核,交换文件与交换分区一样快,尽管我建议使用交换分区。交换文件的管理灵活性超过了分区;由于现代高容量硬盘可以重新映射物理扇区,因此没有分区可以保证是连续的。您可以将交换文件添加为专用分区,也可以使用以下说明创建交换文件。
教程详细信息 | |
---|---|
难度等级 | 中间的 |
Root 权限 | 是的 |
要求 | Linux 终端 |
类别 | 系统管理 |
操作系统兼容性 | Alma • Alpine • Amazon Linux • Arch • CentOS • Debian • Fedora • Linux • Mint • openSUSE • Pop!_OS • RHEL • Rocky • Stream • SUSE • Ubuntu |
预计阅读时间 | 5 分钟 |
在 Linux 下添加交换文件的步骤
您需要使用dd命令来创建交换文件。该mkswap命令用于在设备或文件中设置 Linux 交换区域。
步骤 1 - 以 Root 用户身份登录
打开终端窗口(选择应用程序 > 附件 > 终端)或使用 ssh 客户端登录远程服务器。在出现提示时,键入su -(或sudo -s)并输入 root 密码,切换到 root 用户:
$ su -
或
$ sudo -s
步骤 2 – 创建存储文件
输入以下命令来创建 512MB 交换文件(1024 * 512MB = 524288 块大小):
# dd if=/dev/zero of=/swapfile1 bs=1024 count=524288
示例输出:
524288+0 records in 524288+0 records out 536870912 bytes (537 MB) copied, 3.23347 s, 166 MB/s
在哪里,
- if=/dev/zero:从 /dev/zero 文件读取。/dev/zero 是一个特殊文件,它提供尽可能多的空字符来构建名为 /swapfile1 的存储文件。
- of=/swapfile1:从/dev/zero读取写入存储文件到/swapfile1。
- bs=1024:每次读写1024BYTES字节。
- count=524288:仅复制 523288 BLOCKS 输入块。
步骤 3 – 保护交换文件
出于安全原因,设置正确的文件权限,输入:
一个全球可读的交换文件是一个巨大的本地漏洞。上述命令确保只有 root 用户可以读取和写入文件。
# chown root:root /swapfile1
# chmod 0600 /swapfile1
步骤 4 - 设置 Linux 交换区域
键入以下命令在文件中设置 Linux 交换区域:
# mkswap /swapfile1
示例输出:
Setting up swapspace version 1, size = 524284 KiB no label, UUID=0e5e7c60-bbba-4089-a76c-2bb29c0f0839
步骤 5 – 启用交换文件
最后立即激活/swapfile1交换空间,输入:
# swapon /swapfile1
步骤 6 - 更新 /etc/fstab 文件
要在 Linux 系统重启后激活 /swapfile1,请将条目添加到/etc/fstab文件。使用文本编辑器(如 vi)打开此文件:
# vi /etc/fstab
附加以下行:
/swapfile1 none swap sw 0 0
保存并关闭文件。下次重启后 Linux 启动时,它会自动为您启用新的交换文件。
如何验证 Linux 交换文件是否已激活?
只需使用免费命令:
$ free -m
total used free shared buffers cached
Mem: 1876 1798 77 0 119 1440
-/+ buffers/cache: 237 1638
Swap: 4607 0 4607
看
如何在 Linux 上显示交换使用情况摘要?
键入以下 swapon 命令:
# swapon -s
示例输出:
Filename Type Size Used Priority
/dev/sda6 partition 4194296 0 0
/swapfile1 file 524280 0 -1
另一个选择是查看 /proc/meminfo 文件:
示例输出:
$ less /proc/meminfo
$ grep -i --color swap /proc/meminfo
SwapCached: 30748 kB SwapTotal: 6291448 kB SwapFree: 6154008 kB
您还可以使用 top 命令、atop 命令和/或 htop 命令来显示有关交换使用情况的信息:
在 CentOS Linux 服务器上运行的数据库服务器的示例输出:
# top
# atop
# htop
1 [|| 3.9%] Tasks: 171, 106 thr; 1 running 2 [ 0.0%] Load average: 0.06 0.12 0.09 3 [|| 2.0%] Uptime: 22 days, 07:07:28 4 [ 0.0%] 5 [ 0.0%] 6 [ 0.0%] 7 [ 0.0%] 8 [ 0.0%] Mem[||||||||||||||||||2112/11909MB] Swp[| 134/6143MB] PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command 8523 mysql 20 0 4545M 414M 4816 S 0.0 3.5 0:00.00 /usr/libexec/mysq 8524 mysql 20 0 4545M 414M 4816 S 0.0 3.5 0:02.74 /usr/libexec/mysq 8525 mysql 20 0 4545M 414M 4816 S 0.0 3.5 0:16.17 /usr/libexec/mysq 8526 mysql 20 0 4545M 414M 4816 S 0.0 3.5 0:06.33 /usr/libexec/mysq 8528 mysql 20 0 4545M 414M 4816 S 0.0 3.5 4:02.14 /usr/libexec/mysq 8529 mysql 20 0 4545M 414M 4816 S 0.0 3.5 5:22.00 /usr/libexec/mysq 8530 mysql 20 0 4545M 414M 4816 S 0.0 3.5 0:04.63 /usr/libexec/mysq 8531 mysql 20 0 4545M 414M 4816 S 0.0 3.5 0:50.95 /usr/libexec/mysq 8532 mysql 20 0 4545M 414M 4816 S 0.0 3.5 0:08.10 /usr/libexec/mysq 9359 mysql 20 0 4545M 414M 4816 S 0.0 3.5 22:53.28 /usr/libexec/mysq
如何在 Linux 上禁用设备和文件的分页和交换?
您需要使用 swapoff 命令:
# swapoff /swapfile1
# swapon -s
如何在 Linux 服务器上设置 swappiness?
sysctl 命令的语法如下:
或文件
中的值控制内核交换内存页面的积极程度。值越高,积极程度越高,值越低,积极程度越低。默认值为 60。要使更改永久生效,请将以下行添加到:
# sysctl vm.swappiness=VALUE
# sysctl vm.swappiness=20
# echo VALUE > /proc/sys/vm/swappiness
# echo 30 > /proc/sys/vm/swappiness
/proc/sys/vm/swappiness/etc/sysctl.conf
# echo 'vm.swappiness=30' >> /etc/sysctl.conf
如何在运行时禁用设备和文件的分页和交换?
输入 swapoff 命令:
$ sudo swapoff -a
结论
您学习了如何在 Linux 操作系统下添加交换文件。请使用 man 命令/info 命令或 help 命令查看 Linux 云服务器或机器上的以下手册页:
另请参阅:
$ man 'mkswap(8)'
$ man 'swapon(8)'
$ man 'dd(1)'
$ man 'free(1)'
$ man 'vmstat(1)'
$ man 'top(1)'
- Linux 以简单格式显示从 /proc 文件系统收集的系统硬件状态信息(包括交换信息)
- 如何在 Linux 中检查交换使用大小和利用率
- Linux 找出哪些进程正在使用交换空间
- Linux 使用 CLI 和 GUI 检查内存使用情况
- 如何检查 Linux 中的内存利用率和使用情况