本文介绍如何在Ubuntu 18.04 Linux系统上创建和使用交换文件,内容有:什么是Linux中的交换文件、检查Linux中的交换空间、在Linux上创建交换文件、调整swappiness、调整Linux上的交换空间大小、在Linux中删除交换文件。即将讨论Linux中交换文件的概念,使用它的原因以及它相对于传统交换分区的优势,将学习如何创建交换文件或调整其大小。
什么是Linux中的交换文件? 交换文件允许Linux将磁盘空间模拟为RAM,当你的系统开始耗尽RAM时,它会使用交换空间并将RAM的某些内容交换到磁盘空间,这释放了RAM以服务于更重要的进程,当RAM再次空闲时,它会从磁盘中交换数据。 传统上,交换空间用作磁盘上的单独分区,安装Linux时,只需为swap创建一个单独的分区,但近年来这种趋势发生了变化。 使用交换文件,你不再需要单独的分区,你在root下创建一个文件,并告诉你的系统将其用作交换空间。 使用专用的交换分区,在许多情况下,调整交换空间的大小是一场噩梦,也是一项不可能完成的任务,但是使用交换文件,你可以根据需要调整它们的大小。 最近版本的Ubuntu和其他一些Linux发行版默认使用交换文件,即使你不创建交换分区,Ubuntu也会创建一个大约1GB的交换文件。
检查Linux中的交换空间 在开始添加交换空间之前,最好检查系统中是否有可用的交换空间。 你可以使用Linux中的free命令进行检查,在我的情况下,我的戴尔XPS有14GB的交换空间: free -h
free命令为你提供交换空间的大小,但它不会告诉你它是真正的交换分区还是交换文件,在这方面,swapon命令更好: swapon --show
如你所见,我有14.9GB的交换空间,它位于一个单独的分区上,如果它是交换文件,则类型将是文件而不是分区: swapon --show
如果你的系统上没有交换空间,则应显示如下内容: free -h
swapon命令不会显示任何输出。
在Linux上创建交换文件 如果你的系统没有交换空间,或者你认为交换空间不够,则可以在Linux上创建交换文件,你也可以创建多个交换文件。 我们来看看如何在Linux上创建交换文件,我在本教程中使用的是Ubuntu 18.04,但它也适用于其他Linux发行版。 第1步:创建一个新的交换文件 首先,创建一个所需交换空间大小的文件,假设我想为我的系统添加1GB的交换空间,使用fallocate命令创建大小为1GB的文件: sudo fallocate -l 1G /swapfile 建议仅允许root读取和写入交换文件,当你尝试将此文件用于交换区域时,你甚至会看到类似“insecure permissions 0644, 0600 suggested”的警告: 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步:启用交换文件 现在你的系统知道文件交换文件可以用作交换空间,但它还没有完成,你需要启用交换文件,以便系统可以开始将此文件用作交换: sudo swapon /swapfile 现在,如果检查交换空间,你应该看到Linux系统识别并将其用作交换区域: swapon --show
第4步:永久更改 无论你到目前为止做了什么都是暂时的,重新启动系统,所有更改都将消失。 可以通过将新创建的交换文件添加到/etc/fstab文件来永久更改。 在对/etc/fstab文件进行任何更改之前进行备份: sudo cp /etc/fstab /etc/fstab.back 现在,可以将以下行添加到/etc/fstab文件的末尾: /swapfile none swap sw 0 0 可以使用命令行文本编辑器手动执行此操作,也可以使用以下命令: echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab 现在你已经掌握了一切,即使重新启动Linux系统,也将使用你的交换文件。
调整swappiness swappiness参数确定交换空间应使用的频率,swappiness值的范围是0到100,值越大意味着交换空间的使用频率越高。 Ubuntu桌面中的默认swappiness为60,而在服务器中为1,你可以使用以下命令检查swappiness: cat /proc/sys/vm/swappiness 为什么服务器应该使用低swappiness?由于交换速度比RAM慢,并且为了获得更好的性能,因此应尽可能利用RAM,在服务器上,性能因素至关重要,因此swappinness尽可能低。 可以使用以下systemd命令动态更改swappiness: sudo sysctl vm.swappiness=25 这只是暂时改变它,如果要使其永久化,可以编辑/etc/sysctl.conf文件并在文件末尾添加swappiness值: vm.swappiness=25 参考:在Debian 10 Linux上添加Swap交换空间和调整Swappiness值。
调整Linux上的交换空间大小 有几种方法可以在Linux上调整交换空间的大小。 当你要求系统停止使用交换区域的交换文件时,它会将所有数据(准确的页面)传输回RAM,所以你在交换之前应该有足够的空闲RAM。 这就是为什么一个好的做法是创建和启用另一个临时交换文件,这样,当你关闭原始交换区域时,系统将使用临时交换文件,现在你可以调整原始交换空间的大小,可以手动删除临时交换文件或保持原样,并在下次引导时自动删除。 如果有足够的可用RAM或创建了临时交换空间,请交换原始文件: sudo swapoff /swapfile 现在,你可以使用fallocate命令更改文件的大小,假设你将其更改为2GB大小: sudo fallocate -l 2G /swapfile 现在再次将文件标记为交换空间: sudo mkswap /swapfile 然后再次打开交换: sudo swapon /swapfile 你也可以选择同时拥有多个交换文件。
在Linux中删除交换文件 你可能不想在Linux上使用交换文件,如果要删除它,该过程类似于你在调整交换大小时所看到的过程。 首先,确保你有足够的可用内存,现在交换文件: sudo swapoff /swapfile 下一步是从/etc/fstab文件中删除相应的条目。 最后,可以删除文件以释放空间: sudo rm /swapfile
总结 我想你现在对Linux中的交换文件概念有了很好的理解,现在可以根据本文介绍的方法轻松创建交换文件或根据需要调整它们的大小。
相关主题 |