千锋扣丁学堂Linux培训之如何创建和使用交换文件

2019-09-17 15:00:18 2975浏览

今天千锋扣丁学堂Linux培训老师给大家分享一篇关于如何在Linux上创建和使用交换文件的详细介绍,为什么使用它以及它相对于传统交换分区的优势。你将学习如何创建交换文件和调整其大小,下面我们一起来看一下吧。



什么是Linux的交换文件?

交换文件允许Linux将磁盘空间模拟为内存。当你的系统开始耗尽内存时,它会使用交换空间将内存的一些内容交换到磁盘空间上。这样释放了内存,为更重要的进程服务。当内存再次空闲时,它会从磁盘交换回数据。我建议阅读这篇文章,了解Linux上的交换空间的更多内容。

传统上,交换空间是磁盘上的一个独立分区。安装Linux时,只需创建一个单独的分区进行交换。但是这种趋势在最近几年发生了变化。

使用交换文件,你不再需要单独的分区。你会根目录下创建一个文件,并告诉你的系统将其用作交换空间就行了。

使用专用的交换分区,在许多情况下,调整交换空间的大小是一个可怕而不可能的任务。但是有了交换文件,你可以随意调整它们的大小。

最新版本的Ubuntu和其他一些Linux发行版已经开始默认使用交换文件。甚至如果你没有创建交换分区,Ubuntu也会自己创建一个1GB左右的交换文件。

让我们看看交换文件的更多信息。

检查Linux的交换空间

在你开始添加交换空间之前,最好检查一下你的系统中是否已经有了交换空间。

你可以用Linux上的free命令检查它。就我而言,我的戴尔XPS有14GB的交换容量。

free -h
              total        used        free      shared  buff/cache   available
Mem:           7.5G        4.1G        267M        971M        3.1G        2.2G
Swap:           14G          0B         14G

free命令给出了交换空间的大小,但它并没有告诉你它是真实的交换分区还是交换文件。swapon命令在这方面会更好。

swapon --show
NAME           TYPE       SIZE USED PRIO
/dev/nvme0n1p4 partition 14.9G   0B   -2

如你所见,我有14.9GB的交换空间,它在一个单独的分区上。如果是交换文件,类型应该是file而不是partition。

swapon --show
NAME      TYPE SIZE USED PRIO
/swapfile file   2G   0B   -2

如果你的系统上没有交换空间,它应该显示如下内容:

free -h
              total        used        free      shared  buff/cache   available
Mem:           7.5G        4.1G        267M        971M        3.1G        2.2G
Swap:           0B          0B         0B

而swapon命令不会显示任何输出。

在Linux上创建交换文件

如果你的系统没有交换空间,或者你认为交换空间不足,你可以在Linux上创建交换文件。你也可以创建多个交换文件。

让我们看看如何在Linux上创建交换文件。我在本教程中使用Ubuntu18.04,但它也应该适用于其他Linux发行版本。

步骤1:创建一个新的交换文件

首先,创建一个具有所需交换空间大小的文件。假设我想给我的系统增加1GB的交换空间。使用fallocate命令创建大小为1GB的文件。

sudo fallocate -l 1G /swapfile

建议只允许root用户读写该交换文件。当你尝试将此文件用于交换区域时,你甚至会看到类似“不安全权限0644,建议0600”的警告。

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 --show
NAME       TYPE   SIZE USED PRIO
/swapfile  file 1024M   0B   -2

步骤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,而服务器的默认swappiness是1。你可以使用以下命令检查swappiness:

cat /proc/sys/vm/swappiness

为什么服务器应该使用低的swappiness值?因为交换空间比内存慢,为了获得更好的性能,应该尽可能多地使用内存。在服务器上,性能因素至关重要,因此swappiness应该尽可能低。

你可以使用以下系统命令动态更改swappiness:

sudo sysctl vm.swappiness=25

这种改变只是暂时的。如果要使其永久化,可以编辑/etc/sysctl.conf文件,并在文件末尾添加swappiness值:

vm.swappiness=25

在Linux上调整交换空间的大小

在Linux上有几种方法可以调整交换空间的大小。但是在你看到这一点之前,你应该了解一些关于它的事情。

当你要求系统停止将交换文件用于交换空间时,它会将所有数据(确切地说是内存页)传输回内存。所以你应该有足够的空闲内存,然后再停止交换。

这就是为什么创建和启用另一个临时交换文件是一个好的做法的原因。这样,当你关闭原来的交换空间时,你的系统将使用临时交换文件。现在你可以调整原来的交换空间的大小。你可以手动删除临时交换文件或留在那里,下次启动时会自动删除(LCTT译注:存疑?)。

如果你有足够的可用内存或者创建了临时交换空间,那就关闭你原来的交换文件。

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中的交换文件概念。现在,你可以根据需要轻松创建交换文件或调整它们的大小。

以上就是关于千锋扣丁学堂Linux培训之如何创建和使用交换文件的全部内容,想了解更多内容的小伙伴可以登录扣丁学堂官网咨询。想要学好Linux开发小编给大家推荐口碑良好的扣丁学堂,扣丁学堂有专业老师制定的Linux学习路线图辅助学员学习,此外还有与时俱进的Linux课程体系和Linux视频教程供大家学习,想要学好Linux开发技术的小伙伴快快行动吧。扣丁学堂Linux技术交流群:422345477。


                          JavaEE/微服务/源码解析/分布式/企业级架构【VIP体验课】


     【关注微信公众号获取更多学习资料】        【扫码进入JavaEE/微服务VIP免费公开课】



查看更多关于“Linux培训资讯”的相关文章>>

标签: Linux培训 Linux视频教程 红帽Linux视频 Linux学习视频 Linux入门视频 红帽RHCE/RHCSA考试

热门专区

暂无热门资讯

课程推荐

微信
微博
15311698296

全国免费咨询热线

邮箱:codingke@1000phone.com

官方群:148715490

北京千锋互联科技有限公司版权所有   北京市海淀区宝盛北里西区28号中关村智诚科创大厦4层
京ICP备12003911号-6   Copyright © 2013 - 2019

京公网安备 11010802030908号