博客
关于我
如何在 Linux 上创建和使用交换文件 | Linux 中国
阅读量:295 次
发布时间:2019-03-03

本文共 1872 字,大约阅读时间需要 6 分钟。

-- Abhishek Prakash

本教程将介绍Linux中的交换文件,探讨其作用及其相较于传统交换分区的优势。通过本教程,你将学会如何创建交换文件并调整其大小。

什么是交换文件?

交换文件允许Linux将磁盘空间模拟为内存。当系统内存耗尽时,交换文件将内存内容暂存到磁盘,以释放内存供更重要进程使用。当内存空闲时,交换文件会将数据恢复回内存。

传统上,交换空间是独立的磁盘分区,但随着技术进步,使用交换文件越来越普遍。这种方式无需预先分配磁盘空间,你可以在根目录下创建文件并指定其作为交换空间。

相较于固定大小的交换分区,交换文件的大小可随意调整,这使得系统管理更加灵活。例如,最新版本的Ubuntu和其他Linux发行版会自动创建一个1GB左右的交换文件,即使你没有手动创建交换分区。

检查现有的交换空间

在创建交换文件前,先检查系统是否已有交换空间。可以通过以下命令获取交换空间信息:

free -h

输出结果会显示系统的内存使用情况,包括交换空间的大小和使用情况。然而,这些信息并不能直接告诉你交换空间是使用分区还是文件。

swapon --show

通过这个命令,你可以看到交换空间的类型。如果是文件,类型显示为file,否则显示为partition。如果系统没有交换空间,swapon --show命令不会输出任何信息。

创建交换文件

如果你的系统没有交换空间或交换空间不足,可以通过以下步骤创建交换文件:

步骤1:创建交换文件

使用fallocate命令创建一个大小为1GB的交换文件:

sudo fallocate -l 1G /swapfile

为确保交换文件的安全性,设置适当的权限:

sudo chmod 600 /swapfile

步骤2:标记文件为交换空间

使用mkswap命令标记文件为交换空间:

sudo mkswap /swapfile

完成后,系统会输出交换文件的相关信息,包括文件的大小和唯一标识符(UUID):

Setting up swapspace version 1, size = 1024 MiB (1073737728 bytes) no label, UUID=7e1faacb-ea93-4c49-a53d-fb40f3ce016a

步骤3:启用交换文件

将交换文件启用以供系统使用:

sudo swapon /swapfile

启用成功后,你可以通过swapon --show命令查看交换文件的详细信息:

swapon --showNAME       TYPE   SIZE USED PRIO/swapfile  file 1024M   0B   -2

步骤4:使更改持久化

为了让交换文件在系统重启后仍然生效,你需要将其添加到/etc/fstab文件中:

sudo cp /etc/fstab /etc/fstab.back
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

调整swappiness参数

swappiness参数决定了交换空间的使用频率,值范围为0到100。较高的值意味着交换空间会更频繁地被使用。

服务器环境通常应设置较低的swappiness值,以优化性能。检查当前swappiness值:

cat /proc/sys/vm/swappiness

如果需要临时更改swappiness值,可以使用以下命令:

sudo sysctl vm.swappiness=25

如果希望更改持久化,编辑/etc/sysctl.conf文件:

vm.swappiness=25

调整交换空间大小

在Linux中调整交换空间大小的步骤如下:

步骤1:关闭现有的交换文件

如果你有临时创建的交换文件,先关闭它:

sudo swapoff /swapfile

步骤2:调整交换文件大小

将交换文件的大小调整为2GB:

sudo fallocate -l 2G /swapfile

重新标记并启用交换文件:

sudo mkswap /swapfile
sudo swapon /swapfile

删除交换文件

如果不再需要交换文件,可以按照以下步骤删除它:

步骤1:关闭交换文件

sudo swapoff /swapfile

步骤2:删除文件

sudo rm /swapfile

总结

通过本教程,你已经掌握了创建和管理Linux交换文件的基本技能。你可以根据需要灵活调整交换文件的大小和配置来优化系统性能。

转载地址:http://wcpl.baihongyu.com/

你可能感兴趣的文章
Objective-C实现factorial recursive阶乘递归算法(附完整源码)
查看>>
Objective-C实现factorial阶乘算法(附完整源码)
查看>>
Objective-C实现Fast Powering算法(附完整源码)
查看>>
Objective-C实现fenwick tree芬威克树算法(附完整源码)
查看>>
Objective-C实现FenwickTree芬威克树算法(附完整源码)
查看>>
Objective-C实现fft2函数功能(附完整源码)
查看>>
Objective-C实现fibonacci斐波那契算法(附完整源码)
查看>>
Objective-C实现FigurateNumber垛积数算法(附完整源码)
查看>>
Objective-C实现first come first served先到先得算法(附完整源码)
查看>>
Objective-C实现Gale-Shapley盖尔-沙普利算法(附完整源码)
查看>>
Objective-C实现hamiltonianCycle哈密尔顿图算法(附完整源码)
查看>>
Objective-C实现hamming numbers汉明数算法(附完整源码)
查看>>
Objective-C实现hanning 窗(附完整源码)
查看>>
Objective-C实现hanoiTower汉诺塔算法(附完整源码)
查看>>
Objective-C实现hardy ramanujana定理算法(附完整源码)
查看>>
Objective-C实现harris算法(附完整源码)
查看>>
Objective-C实现haversine distance斜距算法(附完整源码)
查看>>
Objective-C实现highest response ratio next高响应比优先调度算法(附完整源码)
查看>>
Objective-C实现hill climbing爬山法用来寻找函数的最大值算法(附完整源码)
查看>>
Objective-C实现Hopcroft算法(附完整源码)
查看>>