如何在 Linux 上创建和使用交换文件


如何在 Linux 上创建和使用交换文件

文章插图
 
本教程讨论了 linux 中交换文件的概念,为什么使用它以及它相对于传统交换分区的优势 。你将学习如何创建交换文件和调整其大小 。
-- Abhishek Prakash(作者)
本教程讨论了 Linux 中交换文件的概念,为什么使用它以及它相对于传统交换分区的优势 。你将学习如何创建交换文件和调整其大小 。
什么是 Linux 的交换文件?交换文件允许 Linux 将磁盘空间模拟为内存 。当你的系统开始耗尽内存时,它会使用交换空间将内存的一些内容交换到磁盘空间上 。这样释放了内存,为更重要的进程服务 。当内存再次空闲时,它会从磁盘交换回数据 。我建议 阅读这篇文章,了解 Linux 上的交换空间的更多内容。
传统上,交换空间是磁盘上的一个独立分区 。安装 Linux 时,只需创建一个单独的分区进行交换 。但是这种趋势在最近几年发生了变化 。
使用交换文件,你不再需要单独的分区 。你会根目录下创建一个文件,并告诉你的系统将其用作交换空间就行了 。
使用专用的交换分区,在许多情况下,调整交换空间的大小是一个可怕而不可能的任务 。但是有了交换文件,你可以随意调整它们的大小 。
最新版本的 Ubuntu 和其他一些 Linux 发行版已经开始 默认使用交换文件。甚至如果你没有创建交换分区,Ubuntu 也会自己创建一个 1GB 左右的交换文件 。
让我们看看交换文件的更多信息 。
检查 Linux 的交换空间在你开始添加交换空间之前,最好检查一下你的系统中是否已经有了交换空间 。
你可以用 Linux 上的 free 命令 检查它 。就我而言,我的 戴尔 XPS 有 14GB 的交换容量 。
free -h total used free shared buff/cache availableMem: 7.5G 4.1G 267M 971M 3.1G 2.2GSwap: 14G 0B 14Gfree 命令给出了交换空间的大小,但它并没有告诉你它是真实的交换分区还是交换文件 。swapon 命令在这方面会更好 。
swapon --showNAME TYPE SIZE USED PRIO/dev/nvme0n1p4 partition 14.9G 0B -2如你所见,我有 14.9GB 的交换空间,它在一个单独的分区上 。如果是交换文件,类型应该是 file 而不是 partition 。
swapon --showNAME TYPE SIZE USED PRIO/swapfile file 2G 0B -2如果你的系统上没有交换空间,它应该显示如下内容:
free -h total used free shared buff/cache availableMem: 7.5G 4.1G 267M 971M 3.1G 2.2GSwap: 0B 0B 0B而 swapon 命令不会显示任何输出 。
在 Linux 上创建交换文件如果你的系统没有交换空间,或者你认为交换空间不足,你可以在 Linux 上创建交换文件 。你也可以创建多个交换文件 。
让我们看看如何在 Linux 上创建交换文件 。我在本教程中使用 Ubuntu 18.04,但它也应该适用于其他 Linux 发行版本 。
步骤 1:创建一个新的交换文件首先,创建一个具有所需交换空间大小的文件 。假设我想给我的系统增加 1GB 的交换空间 。使用fallocate 命令创建大小为 1GB 的文件 。
sudo fallocate -l 1G /swapfile建议只允许 root 用户读写该交换文件 。当你尝试将此文件用于交换区域时,你甚至会看到类似“不安全权限 0644,建议 0600”的警告 。
【如何在 Linux 上创建和使用交换文件】sudo chmod 600 /swapfile请注意,交换文件的名称可以是任意的 。如果你需要多个交换空间,你可以给它任何合适的名称,如 swap_file_1、swap_file_2 等 。它们只是一个预定义大小的文件 。
步骤 2:将新文件标记为交换空间你需要告诉 Linux 系统该文件将被用作交换空间 。你可以用 mkswap 工具做到这一点 。
sudo mkswap /swapfile你应该会看到这样的输出:
Setting up swapspace version 1, size = 1024 MiB (1073737728 bytes)no label, UUID=7e1faacb-ea93-4c49-a53d-fb40f3ce016a步骤 3:启用交换文件现在,你的系统知道文件 swapfile 可以用作交换空间 。但是还没有完成 。你需要启用该交换文件,以便系统可以开始使用该文件作为交换 。
sudo swapon /swapfile现在,如果你检查交换空间,你应该会看到你的 Linux 系统会识别并使用它作为交换空间:
swapon --showNAME TYPE SIZE USED PRIO/swapfile file 1024M 0B -2步骤 4:让改变持久化迄今为止你所做的一切都是暂时的 。重新启动系统,所有更改都将消失 。
你可以通过将新创建的交换文件添加到 /etc/fstab 文件来使更改持久化 。
对 /etc/fstab 文件进行任何更改之前,最好先进行备份 。
sudo cp /etc/fstab /etc/fstab.back现在将以下行添加到 /etc/fstab 文件的末尾:


推荐阅读