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

一分钟学会Linux交换分区

华子目录

  • 前言
  • 管理交换分区的命令
    • `mkswap`
      • 命令语法
      • 常用选项(`一般不会带选项`)
      • 示例
    • `swapon`命令
      • 命令语法
      • 常用选项
      • 示例
    • `swapoff`命令
      • 命令语法
      • 常用选项
      • 示例
    • `free`命令
      • 命令格式与参数
      • 输出信息解释
      • 使用实例
  • 实验1:扩展交换空间
    • 1.查看之前的交换空间
    • 2.创建`磁盘分区`
    • 3.创建交换空间
    • 4.启动交换空间
  • 实验2:禁用交换空间

前言

  • Linux系统中,swap交换分区的作用类似于Windows系统中“虚拟内存”。当有程序被调入内存后,但是该程序不是常被CPU所取用时,那么这些不常被使用程序将会被放到硬盘swap交换分区当中,而将速度较快内存空间释放给真正需要的程序使用,以避免由于物理内存不足而造成的系统效能低的问题。如果系统没有swap交换分区,或者现有交换分区容量不够用时,可扩展swap交换分区。

管理交换分区的命令

mkswap

  • mkswap 命令在 Linux 系统中用于将指定的分区格式化为swap交换文件系统交换空间硬盘上的一个区域,当系统的物理内存(RAM)不足时,系统会使用交换空间来存储暂时不使用的内存页面,从而允许系统继续运行而不会耗尽内存。

命令语法

mkswap [选项]... [设备]
  • 设备:指定要创建为交换空间的设备或分区,如 /dev/sda2/swapfile

常用选项(一般不会带选项

  • -c:在创建交换空间之前,先执行一个坏的块检查。
  • -f强制创建交换空间,即使该设备似乎已经包含文件系统。
  • -L 标签:设置交换空间的标签
  • -p 优先级:设置交换空间的优先级(0 到 32767,0 为最低)。
  • -s 大小:指定交换空间的大小(以字节为单位)。这主要用于文件交换空间。
  • -U UUID:为交换空间设置 UUID
  • -v:显示详细信息,执行时更详细地输出操作。

示例

  1. 为分区创建交换空间

    假设 /dev/sdb1 是一个未使用的硬盘分区,你可以使用以下命令将其格式化为交换空间:

    mkswap /dev/sdb1
    

    然后,你需要启用这个交换空间:

    swapon /dev/sdb1
    

    如果你想在启动时自动启用这个交换空间,可以编辑 /etc/fstab 文件并添加相应的行。

  2. 为文件创建交换空间

    首先,创建一个文件作为交换空间(这里以 2GB 为例):

    fallocate -l 2G /swapfile
    

    或者,如果你的系统不支持 fallocate,可以使用 dd 命令(但会比较慢):

    dd if=/dev/zero of=/swapfile bs=1G count=2
    
    • 创建一个文件/swapfile,从无限零资源去读,每一块大小为1G,一共有2块,不能用cat去查看,不然会卡死

    然后,将文件格式化为交换空间:

    mkswap /swapfile
    

    启用交换空间:

    swapon /swapfile
    

    设置权限

    chmod 0600 /swapfile
    

    查看当前虚拟内存

    swapon -s
    

    写入/etc/fstab,实现开机挂载

    vim /etc/fstab
    

swapon命令

swapon 命令在 Linux 系统中用于启用或激活交换空间(swap space)。

命令语法

swapon [选项]... [设备]
  • 设备:指定要启用的交换设备或文件的路径,如 /dev/sda2/swapfile

常用选项

  • -a:从 /etc/fstab 文件中读取所有标记为“swap”的行,并启用它们。这是启动系统时常用的选项,用于自动启用所有配置的交换空间
  • -h:显示帮助信息。
  • -p 优先级:设置交换设备的优先级(0 到 32767,其中 0 是最低优先级)。如果未指定,swapon 将使用默认值。
  • -s:显示当前启用交换设备和它们的统计信息,如总大小、已用空间等。这个选项不会启用任何交换设备,只是显示信息

示例

  1. 启用一个交换分区

    假设 /dev/sdb1 是一个已经被格式化交换空间的分区,你可以使用以下命令来启用它:

    swapon /dev/sdb1
    
  2. 启用一个交换文件

    如果你已经创建了一个名为 /swapfile交换文件,并且想要启用它,可以使用:

    swapon /swapfile
    
  3. /etc/fstab 自动启用所有交换空间

    在系统启动时,通常不需要手动运行 swapon 命令来启用交换空间,因为 /etc/fstab 文件中的配置会自动处理这一过程。但是,如果你需要手动执行这一操作(比如,在 /etc/fstab 配置错误后),可以使用:

    swapon -a
    

    这将读取 /etc/fstab 文件中所有标记为“swap”的行,并启用它们。

  4. 查看当前启用的交换空间

    要查看当前系统启用了哪些交换空间以及它们的统计信息,可以使用:

    swapon -s
    

swapoff命令

swapoff 命令在 Linux 系统中用于关闭(禁用)交换空间(swap space)。当系统不再需要某个交换分区或文件作为虚拟内存时,可以使用 swapoff 命令来停用它。

命令语法

swapoff [选项]... [设备]
  • 设备:指定要禁用的交换设备或文件的路径,如 /dev/sda2/swapfile

常用选项

  • -a:从 /etc/fstab 文件中读取所有标记为“swap”的行,并尝试禁用它们。注意,这个选项在实际使用中可能并不常见,因为 /etc/fstab 通常用于启动时的自动挂载,而不是禁用。

示例

  1. 禁用一个交换分区

    假设 /dev/sdb1 是一个已经启用的交换分区,你可以使用以下命令来禁用它:

    swapoff /dev/sdb1
    
  2. 禁用一个交换文件

    如果你之前启用了一个名为 /swapfile 的交换文件,并希望现在禁用它,可以使用:

    swapoff /swapfile
    
  3. 查看交换空间状态

    在禁用交换空间之前或之后,你可能想要查看当前系统的交换空间状态。虽然 swapoff 命令本身不直接显示这些信息,但你可以使用 swapon -s 命令来查看当前启用的交换空间列表,或者使用 free -h 命令来查看系统的总体内存和交换空间使用情况。

    swapon -s  # 查看当前启用的交换空间
    free -h         # 查看内存和交换空间使用情况
    

free命令

free命令是Linux系统中用于查看内存使用情况的工具,它提供了系统总内存、已使用内存、空闲内存、缓存以及交换空间(swap)等关键信息。

命令格式与参数

free命令的基本格式如下:

free [选项]...

常用的参数包括:

  • -b:以字节(Byte)为单位显示内存使用情况。
  • -k:以千字节(KB)为单位显示内存使用情况(默认)。
  • -m:以兆字节(MB)为单位显示内存使用情况。
  • -g:以吉字节(GB)为单位显示内存使用情况。
  • -h:以人类可读的方式(如KB、MB、GB)显示内存大小。
  • -o:不显示缓冲区调节列。
  • -s [间隔秒数]:以指定的间隔时间持续观察内存使用状况。
  • -t:显示内存总和列。
  • -V:显示版本信息。

输出信息解释

free命令的输出通常包含几行关键信息,每行代表不同的内存使用情况:

  1. Mem行(物理内存)

    • total:物理内存总量。
    • used:已使用的物理内存量。
    • free:空闲的物理内存量。
    • shared:被多个进程共享的内存量(现代Linux系统中此值通常为0)。
    • buffers/cached:被内核用作缓冲和缓存的内存量。这部分内存虽然被标记为“已用”,但实际上当应用程序需要更多内存时,这些缓冲和缓存可以被回收。
  2. -/+ buffers/cache行

    • 这行从应用程序的角度重新计算了内存的使用情况。它考虑了缓冲和缓存是可回收的,因此将它们视为可用内存的一部分。
  3. Swap行(交换空间)

    • total:交换空间总量。
    • used:已使用的交换空间量。
    • free:空闲的交换空间量。

使用实例

  1. 查看内存使用情况(以MB为单位)

    free -m
    
  2. 持续观察内存使用情况(每5秒刷新一次)

    free -s 5
    
  3. 以人类可读的方式显示内存使用情况

    free -h
    

实验1:扩展交换空间

1.查看之前的交换空间

  • 查看之前交换空间
[root@rhel9 ~]# free -htotal        used        free      shared  buff/cache   available
Mem:           1.9Gi       1.1Gi       358Mi        21Mi       573Mi       760Mi
Swap:          2.0Gi          0B       2.0Gi
  • 或使用swapon -s查看
[root@rhel9 ~]# swapon -s
Filename                                Type            Size            Used            Priority
/dev/nvme0n1p2                          partition       2097148         0               -2
  • 或使用lsblk
[root@rhel9 ~]# lsblk
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sda           8:0    0   10G  0 disk
sr0          11:0    1  8.4G  0 rom
nvme0n1     259:0    0  100G  0 disk
├─nvme0n1p1 259:1    0  500M  0 part /boot
├─nvme0n1p2 259:2    0    2G  0 part [SWAP]  #表示交换分区
└─nvme0n1p3 259:3    0 97.5G  0 part /

2.创建磁盘分区

  • 先使用fdisk -l查看
[root@rhel9 ~]# fdisk -l
Disk /dev/nvme0n1:100 GiB,107374182400 字节,209715200 个扇区
磁盘型号:VMware Virtual NVMe Disk
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x1c83a586设备           启动    起点      末尾      扇区  大小 Id 类型
/dev/nvme0n1p1 *       2048   1026047   1024000  500M 83 Linux
/dev/nvme0n1p2      1026048   5220351   4194304    2G 82 Linux swap / Solaris
/dev/nvme0n1p3      5220352 209715199 204494848 97.5G 83 LinuxDisk /dev/sda:10 GiB,10737418240 字节,20971520 个扇区
磁盘型号:VMware Virtual S
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
  • 我们发现/dev/nvm0n1这个磁盘已经没有空间可用了,/dev/sda这个磁盘还没有使用过
  • 使用fdisk创建2G大小的磁盘分区
[root@rhel9 ~]# fdisk /dev/sda
欢迎使用 fdisk (util-linux 2.37.4)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。设备不包含可识别的分区表。
创建了一个磁盘标识符为 0xa447abfd 的新 DOS 磁盘标签。命令(输入 m 获取帮助):n
分区类型p   主分区 (0 primary, 0 extended, 4 free)e   扩展分区 (逻辑分区容器)
选择 (默认 p):p
分区号 (1-4, 默认  1):
第一个扇区 (2048-20971519, 默认 2048):
最后一个扇区,+/-sectors 或 +size{K,M,G,T,P} (2048-20971519, 默认 20971519): +2G创建了一个新分区 1,类型为“Linux”,大小为 2 GiB。命令(输入 m 获取帮助):p
Disk /dev/sda:10 GiB,10737418240 字节,20971520 个扇区
磁盘型号:VMware Virtual S
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xa447abfd设备       启动  起点    末尾    扇区 大小 Id 类型
/dev/sda1        2048 4196351 4194304   2G 83 Linux
[root@rhel9 ~]# lsblk
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sda           8:0    0   10G  0 disk
└─sda1        8:1    0    2G  0 part  #发现创建成功
sr0          11:0    1  8.4G  0 rom
nvme0n1     259:0    0  100G  0 disk
├─nvme0n1p1 259:1    0  500M  0 part /boot
├─nvme0n1p2 259:2    0    2G  0 part [SWAP]
└─nvme0n1p3 259:3    0 97.5G  0 part /
[root@rhel9 ~]# fdisk -l
Disk /dev/nvme0n1:100 GiB,107374182400 字节,209715200 个扇区
磁盘型号:VMware Virtual NVMe Disk
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x1c83a586设备           启动    起点      末尾      扇区  大小 Id 类型
/dev/nvme0n1p1 *       2048   1026047   1024000  500M 83 Linux
/dev/nvme0n1p2      1026048   5220351   4194304    2G 82 Linux swap / Solaris
/dev/nvme0n1p3      5220352 209715199 204494848 97.5G 83 LinuxDisk /dev/sda:10 GiB,10737418240 字节,20971520 个扇区
磁盘型号:VMware Virtual S
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xa447abfd设备       启动  起点    末尾    扇区 大小 Id 类型
/dev/sda1        2048 4196351 4194304   2G 83 Linux

3.创建交换空间

  • 使用mkswap命令
[root@rhel9 ~]# mkswap /dev/sda1
正在设置交换空间版本 1,大小 = 2 GiB (2147479552  个字节)
无标签,UUID=5fce9557-a964-4ff1-9e44-8cf89ca57c5d
  • 创建完发现交换空间没有变
[root@rhel9 ~]# swapon -s
Filename                                Type            Size            Used            Priority
/dev/nvme0n1p2                          partition       2097148         0               -2
[root@rhel9 ~]# free -htotal        used        free      shared  buff/cache   available
Mem:           1.9Gi       728Mi       1.0Gi        11Mi       347Mi       1.2Gi
Swap:          2.0Gi          0B       2.0Gi

4.启动交换空间

  • 使用swapon命令
[root@rhel9 ~]# swapon /dev/sda1
  • 启动完发现,交换空间扩大了
[root@rhel9 ~]# free -htotal        used        free      shared  buff/cache   available
Mem:           1.9Gi       728Mi       1.0Gi        11Mi       347Mi       1.2Gi
Swap:          4.0Gi          0B       4.0Gi

实验2:禁用交换空间

  • 禁用之前需要使用swapon -slsblk查看交换空间位于哪个分区
[root@rhel9 ~]# swapon -s
Filename                                Type            Size            Used            Priority
/dev/nvme0n1p2                          partition       2097148         0               -2
/dev/sda1                               partition       2097148         0               -3
[root@rhel9 ~]# lsblk
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sda           8:0    0   10G  0 disk
└─sda1        8:1    0    2G  0 part [SWAP]
sr0          11:0    1  8.4G  0 rom
nvme0n1     259:0    0  100G  0 disk
├─nvme0n1p1 259:1    0  500M  0 part /boot
├─nvme0n1p2 259:2    0    2G  0 part [SWAP]
└─nvme0n1p3 259:3    0 97.5G  0 part /
  • 使用swapoff命令禁用/dev/sda1
[root@rhel9 ~]# swapoff /dev/sda1
  • 验证
[root@rhel9 ~]# free -htotal        used        free      shared  buff/cache   available
Mem:           1.9Gi       728Mi       1.0Gi        11Mi       347Mi       1.2Gi
Swap:          2.0Gi          0B       2.0Gi
  • 发现交换空间少了,但是分区还在
[root@rhel9 ~]# lsblk
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sda           8:0    0   10G  0 disk
└─sda1        8:1    0    2G  0 part
sr0          11:0    1  8.4G  0 rom
nvme0n1     259:0    0  100G  0 disk
├─nvme0n1p1 259:1    0  500M  0 part /boot
├─nvme0n1p2 259:2    0    2G  0 part [SWAP]
└─nvme0n1p3 259:3    0 97.5G  0 part /

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【Python深度学习】图像分割经典网络:U-Net
  • 官方招募 | 仓颉语言三方库社区建设全速启航,全球开发者、技术大神只等您!
  • 掌握CSS的时间之旅::past和:future伪类的探索与应用
  • AI工作流:低代码时代的革新者,重塑手机问答类应用生态
  • 【微信小程序】自定义组件 - 数据监听器
  • Qt Creator安装配置指南
  • 【运维项目经历|041】上云项目-物理机迁移到阿里云
  • 【秋招笔试】8.18大疆秋招(第三套)-三语言题解
  • Zotero 常用插件介绍
  • USRP:Link 22 战术数据链
  • Linux随记(十一)(部署flink-1.16.3、jdk-11.0.19、zookeeper-3.4.13、kafka_2.12-2.2.2)
  • 怎样把经典CAD工具栏调出来
  • 地平线—征程2(Journey 2-J2)芯片详解(11)—CPU+CoreSight
  • windows下的redis7.0.11的下载
  • 《AI视频类工具之五——​ 开拍》
  • 【跃迁之路】【699天】程序员高效学习方法论探索系列(实验阶段456-2019.1.19)...
  • 30天自制操作系统-2
  • ES6系统学习----从Apollo Client看解构赋值
  • gulp 教程
  • idea + plantuml 画流程图
  • Mysql5.6主从复制
  • nfs客户端进程变D,延伸linux的lock
  • Swift 中的尾递归和蹦床
  • tensorflow学习笔记3——MNIST应用篇
  • TiDB 源码阅读系列文章(十)Chunk 和执行框架简介
  • Vim 折腾记
  • 初识 webpack
  • 关于使用markdown的方法(引自CSDN教程)
  • 简单实现一个textarea自适应高度
  • 聊聊flink的BlobWriter
  • 买一台 iPhone X,还是创建一家未来的独角兽?
  • 说说动画卡顿的解决方案
  • 湖北分布式智能数据采集方法有哪些?
  • ​2021半年盘点,不想你错过的重磅新书
  • ‌分布式计算技术与复杂算法优化:‌现代数据处理的基石
  • # Spring Cloud Alibaba Nacos_配置中心与服务发现(四)
  • #100天计划# 2013年9月29日
  • #Linux(帮助手册)
  • #NOIP 2014#Day.2 T3 解方程
  • (02)vite环境变量配置
  • (30)数组元素和与数字和的绝对差
  • (pytorch进阶之路)CLIP模型 实现图像多模态检索任务
  • (六)什么是Vite——热更新时vite、webpack做了什么
  • (强烈推荐)移动端音视频从零到上手(上)
  • (亲测)设​置​m​y​e​c​l​i​p​s​e​打​开​默​认​工​作​空​间...
  • (十五)Flask覆写wsgi_app函数实现自定义中间件
  • (一)Java算法:二分查找
  • (一一四)第九章编程练习
  • (转)scrum常见工具列表
  • (转)利用ant在Mac 下自动化打包签名Android程序
  • (转)母版页和相对路径
  • ..回顾17,展望18
  • .a文件和.so文件
  • .net core 管理用户机密
  • .Net Core 生成管理员权限的应用程序