前言:还有5天即将元旦,一元初始,如是说:新的黎明希望闪耀。今天为大家分享Linux中交换文件的使用和概念。

一,什么是 Linux 的交换文件?

交换文件允许 Linux 将磁盘空间模拟为内存,当你的系统开始耗尽内存时,它会使用交换空间将内存的一些内容交换到磁盘空间上,这样释放了内存,为更重要的进程服务,当内存再次空闲时,它会从磁盘交换回数据。与传统的交换空间不同,交换文件不再需要单独的分区,你只要根目录下创建一个文件,并告诉你的系统将其用作交换空间就行,而且调整交换空间的大小更加困难。但是调整交换文件的大小就显得简单很多。

二,检查 Linux 的交换空间/文件

本文系统版本:CentOS Linux release 7.6.1810 (Core)

通过如下几个命令,可以查看系统当前交换空间的情况

free -h#或者,swapon可以更清楚的显示当前是交换空间还是文件swapon --show

由上图可见,我有一个4G的交换空间,这是在一个单独的分区上,如果是交换文件,类型应该是 file 而不是 partition(如果没有交换空间,swapon 命令不会显示任何输出)

三,在 Linux 上创建交换文件

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

假设要给系统增加 1GB 的交换空间,可以使用fallocate 命令创建大小为 1GB 的文件。

#一般只允许 root 用户读写该交换文件fallocate -l 1G /swapfile_test#解决类似“不安全权限 0644,建议 0600”的警告。sudo chmod 600 /swapfile_test

交换文件的名称可以是任意的。如果你需要多个交换空间,你可以给它任何合适的名称,如swapfile_test1......swap_file_99 等。

2:将新文件标记为交换空间

使用 mkswap 工具告诉 Linux 系统该文件将被用作交换空间

mkswap /swapfile_test

你应该会看到这样的输出:

3:启用交换文件

启用该交换文件,以便系统可以开始使用该文件作为交换。

swapon /swapfile_test#查看,结果应该如下图swapon --show

4:让改变持久化

如上3步这些都还是暂时的,重新启动系统所有更改都将消失,通过将新创建的交换文件添加到 /etc/fstab 文件来使更改持久化。

提示:对 /etc/fstab 文件进行任何更改之前都要进行备份

#备份/etc/fstab cp /etc/fstab /etc/fstab.back#将以下行添加到 /etc/fstab 文件的末尾:vi /etc/fstabswapfile_test none swap sw 0 0#或者用echo直接添加echo '/swapfile_test none swap sw 0 0' | sudo tee -a /etc/fstab

如上,持久化已经完成,就算重启系统也不会失效

5:调整 swappiness 参数

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

因为交换空间比内存慢,为了获得更好的性能,应该尽可能多地使用内存,所以swappiness 应该尽可能低。

#查看当前或者默认的swappinesscat /proc/sys/vm/swappiness#使用以下系统命令动态更改 swappiness,这种改变只是暂时的sysctl vm.swappiness=15#如果要使其永久化,可以编辑 /etc/sysctl.conf 文件在末尾添加swappiness 值:vi /etc/sysctl.confvm.swappiness=15

四,调整交换空间的大小

在 Linux 上有几种方法可以调整交换空间的大小,更改的前提是系统需要停止将交换文件用于交换空间,因为它会将内存页所有数据传输回内存,所以你应该有足够的物理空闲内存,然后再停止交换。这里正好说明创建和启用另一个临时交换文件是一个好的做法的原因。这样,当你关闭原来的交换空间时,你的系统将使用临时交换文件。

#关闭你原来的交换文件。swapoff /swapfile_test#使用 fallocate 命令来更改文件的大小,比方说,更改为 2GBfallocate -l 2G /swapfile_test#再次将文件标记为交换空间mkswap /swapfile_test#再次启用交换文件swapon /swapfile_test

补充:删除 Linux 中的交换文件

前提,确保你有足够的空闲内存

#现在关闭交换文件:sudo swapoff /swapfile_test#下一步是从 /etc/fstab 文件中删除相应的条目#最后,你可以删除该文件来释放空间:sudo rm /swapfile_test

五,总结

交换空间性能并不能和实际的物理内存相比,但是如果服务器负载很高,使用一点交换空间也是不可避免的,好了,交换空间的介绍就到这里了。

最后的最后(Last but not least),欢迎交流:

关注公众号留言,或者在下方直接留言:

项目下创建文件_Linux 下创建和使用交换文件相关推荐

  1. linux open 头文件_linux下通过共享内存和mmap实现进程间通讯

    前言 最近在学习GNU/Linux内核,看到mmap的时候书上说: mmap/munmap接口函数是用户最常用的两个系统调用接口,无论是在用户程序中分配内存.读写大文件.链接动态库文件,还是多进程间共 ...

  2. linux 解压所有以zip结尾的文件_Linux下的压缩zip,解压缩unzip命令详解及实例

    摘自:https://www.cnblogs.com/yves0923/p/10965021.html Linux下的压缩解压缩命令详解及实例 实例:压缩服务器上当前目录的内容为xxx.zip文件 z ...

  3. linux删除文件夹下所有文件_linux下共享文件夹(windows可访问,linux也可访问)...

    本文是转字网上的两段,如果是菜鸟,想懂有点难度,我这里给点注释 在linux上共享文件夹windows下看 ******************************************* 首先 ...

  4. c语言打开当前目录下的文件_Linux下自定义文件默认打开方式

    这个需求,我很早就已经有了.比如,我之前手动安装了Typora,但一直没有设置好默认打开方式.在Deepin系统下右击.txt或.md文件,在「打开方式」及其下级选项「选择默认程序」下都无法直接看到T ...

  5. gcc编译c文件_Linux下C语言程序的编译过程

    Linux下C语言程序的编译过程 使用gcc编译程序时,编译工程分为4个阶段: (1)预处理:(Pre-Processing) (2)编译:(Compiling) (3)汇编:(Assembling) ...

  6. linux禁止客户端上传文件_Linux下Shell脚本实现FTP自动上传和下载文件

    概述 之前测试写的一个脚本,主要是为了实现FTP自动上传和下载文件.大家可以参考下: 基础环境配置 [root@pxzxdm01 ~]# useradd -d /home/ftp1 ftp1 [roo ...

  7. dll可以在linux下使用吗_Linux下使用rm删除文件,并排除指定文件

    推荐文章 Linux 最常用命令整理,建议收藏! linux ss 命令用法说明 如何配置Linux系统的IP地址? Linux TCP状态TIME_WAIT 过多的处理 rm是我们在Linux下删除 ...

  8. linux java项目 编译报错_Linux下执行Java程序报错

    在linux下编译java程序,执行javac编译生成class文件时,在centos7终端输入如,javac hello.java    会提示未找到指令,但用java -verison测试环境变量 ...

  9. iis多进程下的全局变量_Linux下c程序的内存映像

    前言   -----今天开始分享C语言里面的存储类型.作用域.生命周期.链接属性等知识点,我们写完一个程序,不只说知其,更要知其所以然.    概念简介: - 存储类 - (1)存储类就是存储类型,也 ...

最新文章

  1. 工业安全的未来——IT与OT的融合
  2. 数据挖掘SPSS Clementine 12.0.3 多国语言(含中文)破解版
  3. 【译】Analyzing Token Sale Models
  4. 编程实现newton插值c++_数据体操:数据处理和IDW地理插值算法
  5. android h5页面跳转,android H5 应用内跳转Scheme协议
  6. [windows10系统]mysql8.0最详细的安装指南
  7. php函数 call_user_func
  8. 游戏计算机代码大全,DNF各类错误代码大全及解决方法
  9. MySQL下载步骤详解
  10. 局域网游戏联机原理解析
  11. 机器学习 (十三) 电商O2O优惠券使用预测-1
  12. javascript文字特效
  13. python中node_size是什么意思_python里二叉树pop_node=q.pop(0)什么意思?
  14. 解除文件占用,解决文件被占用不能删除
  15. 小米昨天发布的新机,简直太TM牛了……
  16. quartz定时任务补录处理
  17. 运行winform程序提示:You must install .NET Desktop Runtime 6.0.1(x64)
  18. prtg linux 性能,PRTG 网络监控入门指南
  19. 使用Autobahn的远程调用模式
  20. [PyFlink 从入门到精通] 基于 PyFlink 实现在线机器学习

热门文章

  1. Live Source Address 2019最新的电视广播包_澧县召开非法卫星电视广播地面接收设施专项整治工作会议...
  2. matlab 曲线拟合求导,基于matlab曲线拟合的数据预测分析
  3. python 持续集成部署_Jenkins部署git+python项目实现持续集成
  4. 2021年客户需求的新变化,带来了对程序员能力要求的新高度
  5. 基于博弈论和拍卖的数据定价综述
  6. rabbitmq rpc
  7. spring 多数据源-实现
  8. 【软件架构】三层架构
  9. 质因子分解(洛谷P2043题题解,Java语言描述)
  10. 【面向对象】面向对象程序设计测试题4-Java中的类和对象测试