本教程讨论了Linux中交换文件的概念、使用它的原因以及它相对于传统交换分区的优势。您将学习如何创建和调整交换文件的大小。什么是Linux交换文件?交换文件允许Linux将磁盘空间模拟为内存。当您的系统开始耗尽内存时,它会使用交换空间将内存中的一些内容交换到磁盘空间。这可以为更重要的进程释放内存。当内存再次空闲时,它会将数据从磁盘换回。我建议阅读这篇文章以了解有关Linux上交换空间的更多信息。传统上,交换空间是磁盘上的一个单独分区。安装Linux时,只需创建一个单独的分区用于交换。但近年来这种趋势发生了变化。使用交换文件,您不再需要单独的分区。您将在根目录中创建一个文件并告诉您的系统将其用作交换空间。对于专用的交换分区,在许多情况下调整交换空间的大小是一项可怕且不可能完成的任务。但是使用交换文件,您可以根据需要调整它们的大小。默认情况下,最新版本的Ubuntu和其他一些Linux发行版已开始使用交换文件。即使不创建交换分区,Ubuntu也会自行创建一个大约1GB的交换文件。让我们看看有关交换文件的更多信息。检查Linux交换空间在开始添加交换空间之前,最好检查一下您的系统上是否已经有交换空间。您可以在Linux上使用free命令查看。就我而言,我的DellXPS有14GB的交换空间。free-htotalusedfreesharedbuff/cacheavailableMem:7.5G4.1G267M971M3.1G2.2GSwap:14G0B14Gfree该命令给出交换空间的大小,但它不会告诉你它是否是真实的交换分区或交换文件。swapon命令在这方面会更好。swapon--showNAMETYPESIZEUSEDPRIO/dev/nvme0n1p4partition14.9G0B-2如您所见,我有14.9GB的交换空间,它位于一个单独的分区上。如果是交换文件,类型应该是文件而不是分区。swapon--showNAMETYPESIZEUSEDPRIO/swapfilefile2G0B-2如果你的系统上没有交换空间,它应该显示如下:free-htotalusedfreesharedbuff/cacheavailableMem:7.5G4.1G267M971M3.1G2.2GSwap:0B0B0B并且swapon命令没有显示任何输出。在Linux上创建一个交换文件如果你的系统没有交换空间,或者你认为你没有足够的交换空间,你可以在Linux上创建一个交换文件。您还可以创建多个交换文件。让我们看看如何在Linux上创建交换文件。我在本教程中使用的是Ubuntu18.04,但它也应该适用于其他Linux发行版。第1步:创建一个新的交换文件首先,创建一个具有所需交换空间大小的文件。假设我想为我的系统添加1GB的交换空间。使用fallocate命令创建一个大小为1GB的文件。sudofallocate-l1G/swapfile建议只允许root用户读取和写入交换文件。当您尝试将此文件用于交换区域时,您甚至会看到诸如“不安全的权限0644、0600推荐”之类的警告。sudochmod600/swapfile请注意,交换文件的名称可以是任意的。如果你需要多个交换空间,你可以给它起任何合适的名字,比如swap_file_1、swap_file_2等。它们只是一个预定义大小的文件。第2步:将新文件标记为交换空间您需要告诉Linux系统该文件将用作交换空间。您可以使用mkswap工具执行此操作。sudomkswap/swapfile你应该看到这样的输出:Settingupswapspaceversion1,size=1024MiB(1073737728bytes)nolabel,UUID=7e1faacb-ea93-4c49-a53d-fb40f3ce016aStep3:Enableswapfile现在,你系统知道了文件交换文件可以用作交换空间。但这还没有完成。您需要启用交换文件,以便系统可以开始将其用作交换文件。sudoswapon/swapfile现在,如果您检查交换空间,您应该会看到您的Linux系统将识别并将其用作交换空间:swapon--showNAMETYPESIZEUSEDPRIO/swapfilefile1024M0B-2第4步:让更改坚持目前为止你所做的一切都是暂时的。重新启动系统,所有更改将消失。您可以通过将新创建的交换文件添加到/etc/fstab文件来使更改持久化。在对/etc/fstab文件进行任何更改之前进行备份是个好主意。sudocp/etc/fstab/etc/fstab.back现在将以下行添加到/etc/fstab文件的末尾:/swapfilenoneswapsw00您可以使用命令行文本编辑器或使用命令:echo'/swapfilenoneswapsw00'|sudotee-a/etc/fstab现在一切就绪。即使在重新启动Linux系统后,您的交换文件也会被使用。调整swappiness参数swappiness参数确定交换空间的使用频率。swappiness的取值范围是0到100,值越大表示swap空间的使用频率会越高。Ubuntu桌面的默认swappiness是60,而服务器的默认swappiness是1。您可以使用以下命令检查swappiness:cat/proc/sys/vm/swappiness为什么服务器应该使用较低的swappiness值?因为交换空间比内存慢,所以您应该使用尽可能多的内存以获得更好的性能。在服务器上,性能因素至关重要,因此交换性应尽可能低。您可以使用以下系统命令动态更改swappiness:sudosysctlvm.swappiness=25此更改只是暂时的。如果想永久化,可以编辑/etc/sysctl.conf文件,在文件末尾添加swappiness值:vm.swappiness=25在Linux上调整swap空间的大小有几种方法调整Linux大小的交换空间大小。但在你看到这个之前,你应该了解一些关于它的事情。当您要求系统停止使用交换文件作为交换空间时,它会将所有数据(确切地说是内存页面)传输回内存。所以在停止交换之前你应该有足够的空闲内存。这就是为什么创建和启用另一个临时交换文件是一个好的做法。这样,当您关闭原始交换空间时,您的系统将使用临时交换文件。现在您可以调整原始交换空间的大小。您可以手动删除临时交换文件或将其保留在那里,它将在下次启动时自动删除。如果您有足够的可用内存或创建了临时交换空间,请关闭原始交换文件。sudoswapoff/swapfile现在您可以使用fallocate命令更改文件的大小。假设您将其大小更改为2GB:sudofallocate-l2G/swapfile现在再次将文件标记为交换空间:sudomkswap/swapfile并再次启用交换文件:sudoswapon/swapfile您还可以选择同时进行多个交换文档。在Linux中删除交换文件您可能有不在Linux上使用交换文件的原因。如果你想删除它,这个过程类似于你刚刚看到的调整交换大小的过程。首先,确保您有足够的可用内存。现在关闭交换文件:sudoswapoff/swapfile下一步是从/etc/fstab文件中删除相应的条目。最后,您可以删除该文件以释放空间:sudorm/swapfile您是否正在使用交换空间?我想您现在已经对Linux中的交换文件概念有了很好的理解。现在您可以轻松创建交换文件或根据需要调整它们的大小。如果您对此主题有任何补充或有任何疑问,请在下面发表评论。
