当前位置: 首页 > news >正文

27.Linux swap交换空间管理

文章目录

  • Linux交换空间管理
    • 认识swap交换空间
    • SWAP交换空间
      • 查看内存
      • Swap 空间大小
      • 创建交换空间
      • 激活 swap 空间
      • 取消 swap 空间激活
      • 持久化激活 swap 空间

Linux交换空间管理

认识swap交换空间

首先,我们拥有一台电脑,电脑内存(RAM),把这个内存想象成一个办公室的工位,而硬盘相当于一个巨大的档案室。里面的数据存放的特点如下:

工位(内存):

  • 空间有限,但速度快。工作人员(CPU)可以瞬间拿到工位上的任何文件(数据)进行处理
  • 工位是固定的。当需要处理的任务越来越多,文件堆满了所有工位,新任务就没办法开展了

档案室(硬盘):

  • 空间巨大,存放的数据很多,但速度慢。从档案室调取一份文件需要来回跑,花费很长时间。(可以在Windows的文件资源管理器中的搜索试试查找一个文件,一般来说肯定是要等一会才会有结果)
  • 文件可以长期存储

问题来了:如果此时工位堆满了文件,这时候老板突然下发了一个优先级不高但是很占地方的临时任务,工位(内存)满了,怎么办?

swap交换空间就是解决方法:

从档案室(硬盘)里临时划分一部份区域,作为溢出工作区。

  • 将工位上暂时不用的文件打包,贴上标签放到档案室的临时区域
  • 工位上腾出的空间用来存放临时任务的文件
  • 当需要之前打包的文件时,根据标签去档案室取回来即可

计算机内存工作原理也是一样:

  • 工位满了 = 物理内存(RAM)快用完了
  • 档案室里的临时区域 = 硬盘上划出的交换空间(一个特殊的分区或文件)
  • 打包不用的文件放到临时区域 = 操作系统将内存中暂时不活跃的数据“交换”(Swap Out)到硬盘的交换空间里
  • 腾出工位 = 释放出物理内存(RAM)给当前紧急的任务使用
  • 取回文件 = 当需要那些被交换出去的数据时,系统再把它们从交换空间“交换”(Swap In)回内存

**思考:**为什么CPU不直接访问物理地址?

  1. 虚拟内存的容量是物理内存和交换空间的总和,而虚拟地址负责映射到物理内存地址和交换空间地址。
  2. 进程使用内存的过程中,希望内存是连续的。如果进程直接访问物理地址,则内核很难保证进程获得的物理地址空间是连续的,因为进程存在着运行和退出,就会出现内存碎片化。进程的虚拟地址在虚拟内存中是连续的,达到了内存连续的目的,而 MMU 会将进程的虚拟地址映射到物理地址。

在这里插入图片描述

**交换空间只是临时的解决办法。**虽然交换空间能够作为"虚拟"内存使用,但由于交换区位于磁盘上,它的速度比物理内存慢的多,因此如果需要更快的速度的话,最好的办法仍然是加大物理内存。

SWAP交换空间

查看内存

# 默认单位是KiB,使用-m选项,以MiB为单位
[root@server ~ 16:43:24]# freetotal        used        free      shared  buff/cache   available
Mem:        4026116      215572     3478336       11900      332208     3580652
Swap:       2097148           0     2097148[root@server ~ 17:28:51]# free -mtotal        used        free      shared  buff/cache   available
Mem:           3931         210        3404          11         316        3496
Swap:          2047           0        2047

输出说明:

  • Mem:

    • total:物理内存空间大小。

    • used:使用的内存 (total - free - buffers - cache)。

    • free:未使用的内存空间大小(真正的空闲,未被任何程序占用)。

    • shared:多个进程共享的内存空间大小。

    • cached:从磁盘读取的数据占用的内存空间大小,待以后使用(数据没有被修改)。

    • buffers:被更改但未写回磁盘的数据占用的内存空间大小。

  • Swap:

    • total:交换空间大小。

    • used:使用的交换空间大小。

    • free:未使用交换空间大小。

Swap 空间大小

管理员应根据系统的内存工作负载来调整交换空间大小。 应用供应商有时会提供这方面的建议。根据物理内存总量,下表提供了一些指导

物理内存(RAM)交换空间允许HIBERNATE时的交换空间
2GiB或以下两倍的RAM三倍的RAM
2GiB和8GiB之间同等的RAM两倍的RAM
8GiB和64GiB之间至少4GiB1.5倍的RAM
64GiB以上至少4GiB不建议Hibernate

笔记本电脑和台式机的Hibernate功能会在关闭系统电源之前使用交换空间来保存RAM内容。重新打开系统时, 内核将从交换空间恢复RAM内容,无需完全启动。 对于这些系统而言,交换空间需要超过RAM量。

创建交换空间

# 使用parted创建所需大小的分区并将其文件系统类型设置为linux-swap
[root@server ~ 17:32:00]# parted /dev/sdb mklabel gpt
[root@server ~ 17:32:20]# parted /dev/sdb unit mib mkpart swap linux-swap 1 2049
[root@server ~ 17:33:01]# parted /dev/sdb unit mib print                  
Model: ATA VMware Virtual S (scsi)
Disk /dev/sdb: 20480MiB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: Number  Start    End      Size     File system  Name  标志1      1.00MiB  2049MiB  2048MiB  xfs          swap# 格式化swap空间
[root@server ~ 17:33:14]# mkswap /dev/sdb1
mkswap: /dev/sdb1: warning: wiping old xfs signature.
正在设置交换空间版本 1,大小 = 2097148 KiB
无标签,UUID=f5015001-86bb-4cba-ab23-4965aa81647e
[root@server ~ 17:33:36]# parted /dev/sdb unit mib print
Model: ATA VMware Virtual S (scsi)
Disk /dev/sdb: 20480MiB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: Number  Start    End      Size     File system     Name  标志1      1.00MiB  2049MiB  2048MiB  linux-swap(v1)  swap

激活 swap 空间

# 激活swap空间
[root@server ~ 17:33:44]# swapon /dev/sdb1# 查看swap设备列表
[root@server ~ 17:35:57]# swapon -s
文件名                          类型            大小    已用    权限
/dev/dm-1                               partition       2097148 0       -2
/dev/sdb1                               partition       2097148 0       -3

默认情况下,多个交换空间具有相同的优先级时,系统会按顺序使用交换空间,即内核先使用第一个已激活交换空间,直至其空间已满,然后开始使用第二个交换空间。在激活交换分区的时候,可以为每个交换空间定义一个优先级,从而强制按该顺序使用交换空间。

swapon 命令使用-p选项指定优先级,优先级介于-1和32767之间,值越大优先级越高。

示例:

# 修改优先级前要先把该交换空间停掉
[root@server ~ 17:36:08]# swapon -p 4 /dev/sdb1
[root@server ~ 17:38:14]# swapon -s
文件名                          类型            大小    已用    权限
/dev/dm-1                               partition       2097148 0       -2
/dev/sdb1                               partition       2097148 0       4

取消 swap 空间激活

[root@server ~ 17:38:29]# swapoff /dev/sdb1
[root@server ~ 17:38:42]# swapon -s
文件名                          类型            大小    已用    权限
/dev/dm-1                               partition       2097148 0       -2

持久化激活 swap 空间

修改/etc/fstab文件,添加如下类似记录:

UUID=f5015001-86bb-4cba-ab23-4965aa81647e swap swap pri=4 0 0

使用命令swapon -a激活/etc/fstab中所有交换设备。

使用命令swapoff -a取消/etc/fstab中所有交换设备激活。

[root@server ~ 17:38:49]# swapon -a
[root@server ~ 17:39:52]# swapon -s
文件名                          类型            大小    已用    权限
/dev/dm-1                               partition       2097148 0       -2
/dev/sdb1                               partition       2097148 0       -3[root@server ~ 17:39:55]# swapoff -a
[root@server ~ 17:40:18]# swapon -spartition       2097148 0       -2
/dev/sdb1                               partition       2097148 0       -3[root@server ~ 17:39:55]# swapoff -a
[root@server ~ 17:40:18]# swapon -s
http://www.dtcms.com/a/403339.html

相关文章:

  • 2024-WSDM-DeSCo: Towards Generalizable and Scalable Deep Subgraph Counting
  • 黄山最佳旅游攻略青岛网络优化费用
  • 人脸图像识别实战:使用 LFW 数据集对比四种机器学习模型(SVM、逻辑回归、随机森林、MLP)
  • unity+trae国际版开发环境
  • wordpress网站图片丢失网站备案找谁
  • 从编程到合规:构建安全随机数生成体系
  • 在Word中,如何引入λ γ δ α ε
  • 同步辐射X射线磁圆二色性(XMCD)测试能力和技术应用
  • 基于UML/MARTE的汽车安全关键系统设计方法
  • 新网$网站优化建筑机械人才培训网官网
  • 【Java八股文】12-分布式面试篇
  • 星环科技TDH社区版详解:从零搭建企业级大数据平台
  • 网站建设的运用场景男女做暖暖免费网站
  • APP应用接入华为推送SDK
  • 网站建设整个过程全网搜索指数
  • 安科瑞ADL200N-CT 单相户用储能表
  • 网站如何建立这么做简单的网站
  • Zabbix7.4.8(一):通过Zabbix agent 2监控postgresql相关指标
  • 实战:基于 BRPC+Etcd 打造轻量级 RPC 服务 —— 从注册到调用的完整实现
  • 企业为什么建设网站万网主机怎么上传网站吗
  • 【C++】Visual Studio+CMake 开发 C++ 入门指南:从环境搭建到项目实战
  • web3hardhat 框架实战-ERC20
  • Linux《线程同步和互斥(上)》
  • Hibernate批量操作详解及最优实践
  • 住房与建设部网站如何修改dns 快速使用境外网站
  • 【复习】计网每日一题--PPP链路
  • cpt和pretrain的差别,IFT和SFT的差别是怎么样的
  • RTX5060 Ti显卡安装cuda版本PyTorch踩坑记录
  • MongoDB数据类型与python操作
  • 脑电模型实战系:脑电模型进阶-构建一个高效的全连接网络