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

Linux 交换空间管理

文章目录

  • Linux 交换空间管理
    • 计算机存储器的层次结构
    • 计算机存储器的工作原理
    • 物理内存
    • Swap 空间
      • 查看内存
      • Swap 空间大小
      • 创建交换空间
      • 激活与取消swap 空间
      • 持久化激活 swap 空间

Linux 交换空间管理

计算机存储器的层次结构

计算机存储器的速度与成本通常成正比,为了实现良好的性能 / 价格比,各种存储器组成一个层状的塔式结构,相互配合工作。

  • CPU 寄存器:是 CPU 内部用于存放数据的小型存储区域,可暂时存放参与运算的数据、运算结果以及 CPU 运行所需的信息。

  • CPU 高速缓存(CPU Cache):一种容量小、速度快的高缓冲存储器,由 SRAM 组成,直接制作在 CPU 芯片内,速度接近 CPU。在存储体系中位于第二层,仅次于 CPU 寄存器,容量远小于内存,但速度可接近处理器频率。

  • 主存储器(Main memory,简称主存或内存)

    :用于存放指令和数据,能由中央处理器直接随机存取。其速度比 CPU 高速缓存慢,但存储容量大得多。

    • 速度:一般用存取时间衡量,即每次与 CPU 间数据处理耗费的时间,单位为纳秒 (ns),多数 SDRAM 内存芯片的存取时间为 5、6、7、8 或 10ns。

    • 带宽

      :计算公式为带宽=频率 × 位宽 ÷8。例如,DDR4 内存频率是 3600MHz,在 64 位系统中:

      • 单通道 DDR4 - 3600:3600MHz×64bit÷8 = 28800MB/S
      • 双通道 DDR4 - 3600:3600MHz×64bit×2÷8 = 57600MB/S
  • 辅助存储器:速度较慢,但容量大,可实现持久化存储,如机械磁盘、光盘、U 盘等。

计算机存储器的工作原理

CPU 运行程序时,数据读取遵循以下流程:

  1. 先从寄存器中读取数据,若找到则直接读取;若未找到,从 CPU Cache 中读取,并将数据缓存在 CPU Cache 中。
  2. 若在 CPU Cache 中找到数据,直接读取;若未找到,从主存储器(内存)中读取,并将数据缓存在主存储器中。
  3. 若在内存中找到数据,直接读取;若未找到,从辅助存储器中读取,并将数据缓存在内存中。

物理内存

计算机系统将内存划分为固定大小的块,称为 page,标准 page 大小为 4KiB。进程不直接对物理内存寻址,每个进程都有虚拟地址空间(virtual address space)。当进程请求内存时,内存管理单元(MMU)会将进程获得的虚拟地址(VA,Virtual Address)映射到物理地址(PA,Physical Address)。

MMU 是 CPU 中用于管理虚拟存储器、物理存储器的控制线路,负责虚拟地址到物理地址的映射,并提供硬件机制的内存访问授权。

Swap 空间

在 Linux 系统中,Swap(交换)空间是受内核内存子系统控制的磁盘区域,其核心作用是在物理内存不足时提供辅助支持,类似于 Windows 系统中的虚拟内存(pagefile.sys)。

Swap,意思是“交换”、“实物交易”。Linux Swap(交换)空间是受Linux内核内存子系统控制的磁盘区域。

  • 功能1:当内存使用量超过定义的限制时,内核寻找已分配给进程但空闲的内存页,将该空闲的内存页写入到交换空间,并向其他进程重新分配RAM页面。
  • 功能2:如果某个程序需要访问磁盘上的页面,则内核会找到另一个空闲的内存页, 将其写入到磁盘,然后从交换区重新调用所需的页面。
  • 功能3:如果某个程序需要访问数据,访问的数据存放在交换空间,则该程序直接从交换空间读取数据,而不需要从磁盘原始位置读取,进而提高速度。

主要功能

  1. 内存调剂:当物理内存使用量超过设定限制时,内核会找出已分配给进程但暂时空闲的内存页,将其写入交换空间,释放出的物理内存供其他进程使用。
  2. 页面调度:若程序需要访问已被换出到磁盘的页面,内核会先将另一块空闲内存页写入磁盘,再从交换空间调回所需页面。
  3. 加速访问:若程序所需数据已在交换空间中,可直接从交换空间读取,无需从原始磁盘位置读取,提升访问速度。

查看内存

可使用 free 命令查看内存情况,默认单位是 KiB,使用 -m 选项可改为以 MiB 为单位:

[root@centos7 ~]# free total        used        free      shared  buff/cache   available
Mem:        4026156      330460     3528844       12136      166852     3485576
Swap:       4063228           0     4063228

输出说明:

  • 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 量。

创建交换空间

[root@server ~ 14:57:06]# lsblk
NAME                MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda                   8:0    0   50G  0 disk 
├─sda1                8:1    0    1G  0 part /boot
└─sda2                8:2    0   49G  0 part ├─centos_c01-root 253:0    0   47G  0 lvm  /└─centos_c01-swap 253:1    0    2G  0 lvm  [SWAP]
sdb                   8:16   0   20G  0 disk 
sdc                   8:32   0   20G  0 disk 
sdd                   8:48   0   20G  0 disk 
sde                   8:64   0   20G  0 disk 
sdf                   8:80   0   20G  0 disk 
sdg                   8:96   0   20G  0 disk 
sr0                  11:0    1  4.4G  0 rom  
[root@server ~ 14:57:10]# parted /dev/sdb mklabel gpt
信息: You may need to update /etc/fstab.# 使用parted创建所需大小的分区并将其文件系统类型设置为linux-swap
[root@server ~ 15:00:34]# parted /dev/sdb unit MiB mkpart swap linux-swap 1 2049
信息: You may need to update /etc/fstab.[root@server ~ 15:01:57]# 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               swap[root@server ~ 15:02:15]# lsblk /dev/sdb
NAME   MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdb      8:16   0  20G  0 disk 
└─sdb1   8:17   0   2G  0 part # 格式化swap空间
[root@server ~ 15:03:03]# mkswap /dev/sdb1
mkswap: /dev/sdb1: warning: wiping old xfs signature.
正在设置交换空间版本 1,大小 = 2097148 KiB
无标签,UUID=7c677930-d6a3-499b-8699-8fc153d608b9

激活与取消swap 空间

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

[root@server ~ 15:10:22]# swapoff -a
[root@server ~ 15:10:36]# swapon -s
[root@server ~ 15:10:39]# swapon -a
[root@server ~ 15:10:43]# swapon -s
文件名                          类型            大小    已用    权限
/dev/dm-1                               partition       2097148 0       -2
/dev/sdb1                               partition       2097148 0       -3

持久化激活 swap 空间

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

UUID=7c677930-d6a3-499b-8699-8fc153d608b9  swap                    swap    defaults        0 0

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

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

[root@server ~ 15:07:40]# blkid /dev/sdb1
/dev/sdb1: UUID="7c677930-d6a3-499b-8699-8fc153d608b9" TYPE="swap" PARTLABEL="swap" PARTUUID="21241760-2b20-42a5-8559-f259536b3a48" 
[root@server ~ 15:09:07]# vim /etc/fstab 
[root@server ~ 15:13:08]# cat /etc/fstab #
# /etc/fstab
# Created by anaconda on Tue Sep  2 10:18:33 2025
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos_c01-root /                       xfs     defaults        0 0
UUID=4cedadff-6f74-4816-8b1c-ffff69c5ba45 /boot                   xfs     defaults        0 0
/dev/mapper/centos_c01-swap swap                    swap    defaults        0 0
UUID=7c677930-d6a3-499b-8699-8fc153d608b9  swap                    swap    defaults        0 0
[root@server ~ 15:13:19]# freetotal        used        free      shared  buff/cache   available
Mem:        4026116      170400     2821032       11852     1034684     3624488
Swap:       4194296           0     4194296
[root@server ~ 15:13:33]# reboot连接断开
连接主机...
连接主机成功
Last login: Tue Sep 23 10:43:07 2025 from 10.1.8.1
[root@server ~ 15:14:44]# swapon -s
文件名                          类型            大小    已用    权限
/dev/sdb1                               partition       2097148 0       -2
/dev/dm-1                               partition       2097148 0       -3
[root@server ~ 15:14:53]# freetotal        used        free      shared  buff/cache   available
Mem:        4026124      163396     3746420       11860      116308     3678092
Swap:       4194296           0     4194296
http://www.dtcms.com/a/400561.html

相关文章:

  • 网站网页设计培训做企业平台的网站有哪些内容
  • 网站开发 前端 外包网站出现风险如何处理方法
  • 北京规划网站wordpress 去掉 index.php
  • 如何搭建网站赚点击网站开发作业总结
  • 赤峰是住房和城乡建设局网站萍乡网站建设公司
  • 淘宝网站开发实训报告企业网站开发报告
  • 莘县网站建设公司宝安做网站公司乐云seo
  • 如何评价网站是否做的好坏用手机自创游戏
  • 余姚建设公司网站苏州建设工程协会网站
  • 阿克苏市建设银行网站深圳58同城招聘网最新招聘
  • 东莞国网站建设云南省疾控中心最新提示
  • 邢台网站建设联系电话北京网站推广价格
  • 简述如何让网站排名快速提升网站建设方案 规划
  • Wan2.2-Animate开源发布:一个模型通吃两大视频玩法
  • 直接进网站的浏览器打开网站右侧浮动代码
  • 湖南做网站问磐石网络专业一键生成广告
  • 允许发外链的网站珠海网站制作公
  • 网站优化外包费用465端口 WordPress
  • 深圳网站建设i9988wordpress发布网站
  • 限制标签与FFD在3D建模中的深入应用与实战解析
  • 介绍一下 ros moveit
  • 建设网站郑州小猪网站怎么做的
  • php网站开发实例教程 课件seo网站整站优化
  • 免费网站怎么做好享购物官方网站购物
  • dw做的个人网站做电影网站要多少钱
  • 帝国做网站是选择静态还是伪静态跳转中
  • 建个门户网站wordpress网站嵌入商城
  • oppo手机网站建设策划方案网络营销案例100例
  • 建设公众号官方网站me域名公司网站
  • 10-Redis 列表类型实战指南:从命令解析到场景落地(基于双向链表特性)