iis服务器助手广告
返回顶部
首页 > 资讯 > 操作系统 >Linux系统上交换空间的示例分析
  • 110
分享到

Linux系统上交换空间的示例分析

2023-06-16 10:06:58 110人浏览 安东尼
摘要

小编给大家分享一下linux系统上交换空间的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!交换空间交换空间是现代 Linux 系统中的第二种内存类型。交换

小编给大家分享一下linux系统上交换空间的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

交换空间

交换空间是现代 Linux 系统中的第二种内存类型。交换空间的主要功能是当全部的 RAM 被占用并且需要更多内存时,用磁盘空间代替 RAM 内存。

例如,假设你有一个 8GB RAM 的计算机。如果你启动的程序没有填满  RAM,一切都好,不需要交换。假设你在处理电子表格,当添加更多的行时,你电子表格会增长,加上所有正在运行的程序,将会占用全部的 RAM  。如果这时没有可用的交换空间,你将不得不停止处理电子表格,直到关闭一些其他程序来释放一些 RAM 。

内核使用一个内存管理程序来检测最近没有使用的内存块(内存页)。内存管理程序将这些相对不经常使用的内存页交换到硬盘上专门指定用于“分页”或交换的特殊分区。这会释放  RAM,为输入电子表格更多数据腾出了空间。那些换出到硬盘的内存页面被内核的内存管理代码跟踪,如果需要,可以被分页回 RAM。

Linux 计算机中的内存总量是 RAM + 交换分区,交换分区被称为虚拟内存.

Linux 交换分区类型

Linux 提供了两种类型的交换空间。默认情况下,大多数 Linux 在安装时都会创建一个交换分区,但是也可以使用一个特殊配置的文件作为交换文件。交换分区顾名思义就是一个标准磁盘分区,由 mkswap 命令指定交换空间。

如果没有可用磁盘空间来创建新的交换分区,或者卷组中没有空间为交换空间创建逻辑卷,则可以使用交换文件。这只是一个创建好并预分配指定大小的常规文件。然后运行 mkswap 命令将其配置为交换空间。除非绝对必要,否则我不建议使用文件来做交换空间。(LCTT 译注:ubuntu 近来的版本采用了交换文件而非交换空间,所以我对于这种说法保留看法)

频繁交换

当总虚拟内存(RAM 和交换空间)变得快满时,可能会发生频繁交换。系统花了太多时间在交换空间和 RAM 之间做内存块的页面切换,以至于几乎没有时间用于实际工作。这种情况的典型症状是:系统变得缓慢或完全无反应,硬盘指示灯几乎持续亮起。

使用 free 的命令来显示 CPU 负载和内存使用情况,你会发现 CPU 负载非常高,可能达到系统中 CPU 内核数量的 30 到 40 倍。另一个情况是 RAM 和交换空间几乎完全被分配了。

事实上,查看 SAR(系统活动报告)数据也可以显示这些内容。在我的每个系统上都安装 SAR ,并将这些用于数据分析

交换空间的正确大小是多少?

许多年前,硬盘上分配给交换空间大小是计算机上的 RAM 的两倍(当然,这是大多数计算机的 RAM 以 KB 或 MB  为单位的时候)。因此,如果一台计算机有 64KB 的 RAM,应该分配 128KB 的交换分区。该规则考虑到了这样的事实情况,即 RAM  大小在当时非常小,分配超过 2 倍的 RAM 用于交换空间并不能提高性能。使用超过两倍的 RAM  进行交换,比实际执行有用的工作的时候,大多数系统将花费更多的时间。

RAM 现在已经很便宜了,如今大多数计算机的 RAM 都达到了几十亿字节。我的大多数新电脑至少有 8GB 内存,一台有 32GB 内存,我的主工作站有 64GB 内存。我的旧电脑有 4 到 8GB 的内存。

当操作具有大量 RAM 的计算机时,交换空间的限制性能系数远低于 2 倍。Fedora 28 在线安装指南 定义了当前关于交换空间分配的方法。下面内容是我提出的建议。

下表根据系统中的 RAM 大小以及是否有足够的内存让系统休眠,提供了交换分区的推荐大小。建议的交换分区大小是在安装过程中自动建立的。但是,为了满足系统休眠,您需要在自定义分区阶段编辑交换空间。

表 1: Fedora 28 文档中推荐的系统交换空间

< 如显示不全,请左右滑动 >
系统内存大小推荐的交换空间推荐的交换空间大小(支持休眠模式)
小于 2 GB2 倍 RAM3 倍 RAM
2 GB - 8 GB等于 RAM 大小2 倍 RAM
8 GB - 64 GB0.5 倍 RAM1.5 倍 RAM
大于 64 GB工作量相关不建议休眠模式

在上面列出的每个范围之间的边界(例如,具有 2GB、8GB 或 64GB 的系统 RAM),请根据所选交换空间和支持休眠功能请谨慎使用。如果你的系统资源允许,增加交换空间可能会带来更好的性能。

当然,大多数 Linux 管理员对多大的交换空间量有自己的想法。下面的表2 包含了基于我在多种环境中的个人经历所做出的建议。这些可能不适合你,但是和表 1 一样,它们可能对你有所帮助。

表 2: 作者推荐的系统交换空间

< 如显示不全,请左右滑动 >
RAM 大小推荐的交换空间
&le; 2GB2X RAM
2GB &ndash; 8GB= RAM
>8GB8GB

这两个表中共同点,随着 RAM  数量的增加,超过某一点增加更多交换空间只会导致在交换空间几乎被全部使用之前就发生频繁交换。根据以上建议,则应尽可能添加更多  RAM,而不是增加更多交换空间。如类似影响系统性能的情况一样,请使用最适合你的建议。根据 Linux  环境中的条件进行测试和更改是需要时间和精力的。

向非 LVM 磁盘环境添加更多交换空间

面对已安装 Linux  的主机并对交换空间的需求不断变化,有时有必要修改系统定义的交换空间的大小。此过程可用于需要增加交换空间大小的任何情况。它假设有足够的可用磁盘空间。此过程还假设磁盘分区为  “原始的” EXT4 和交换分区,而不是使用逻辑卷管理(LVM)。

基本步骤很简单:

  1. 鸿蒙官方战略合作共建——HarmonyOS技术社区

  2. 关闭现有的交换空间。

  3. 创建所需大小的新交换分区。

  4. 重读分区表。

  5. 将分区配置为交换空间。

  6. 添加新分区到 /etc/fstab

  7. 打开交换空间。

应该不需要重新启动机器。

为了安全起见,在关闭交换空间前,至少你应该确保没有应用程序在运行,也没有交换空间在使用。freetop 命令可以告诉你交换空间是否在使用中。为了更安全,您可以恢复到运行级别 1 或单用户模式。

使用关闭所有交换空间的命令关闭交换分区:

swapoff -a

现在查看硬盘上的现有分区。

fdisk -l

这将显示每个驱动器上的分区表。按编号标识当前的交换分区。

使用以下命令在交互模式下启动 fdisk

fdisk /dev/<device name>

例如:

fdisk /dev/sda

此时,fdisk 是交互方式的,只在指定的磁盘驱动器上进行操作。

使用 fdiskp 子命令验证磁盘上是否有足够的可用空间来创建新的交换分区。硬盘上的空间以 512 字节的块以及起始和结束柱面编号的形式显示,因此您可能需要做一些计算来确定分配分区之间和末尾的可用空间。

使用 n 子命令创建新的交换分区。fdisk 会问你开始柱面。默认情况下,它选择编号***的可用柱面。如果你想改变这一点,输入开始柱面的编号。

fdisk 命令允许你以多种格式输入分区的大小,包括***一个柱面号或字节、KB 或 MB 的大小。例如,键入 4000M ,这将在新分区上提供大约 4GB 的空间,然后按回车键。

使用 p 子命令来验证分区是否按照指定的方式创建的。请注意,除非使用结束柱面编号,否则分区可能与你指定的不完全相同。fdisk 命令只能在整个柱面上增量的分配磁盘空间,因此你的分区可能比你指定的稍小或稍大。如果分区不是您想要的,你可以删除它并重新创建它。

现在指定新分区是交换分区了 。子命令 t 允许你指定定分区的类型。所以输入 t,指定分区号,当它要求十六进制分区类型时,输入 82,这是 Linux 交换分区类型,然后按回车键。

当你对创建的分区感到满意时,使用 w 子命令将新的分区表写入磁盘。fdisk 程序将退出,并在完成修改后的分区表的编写后返回命令提示符。当 fdisk 完成写入新分区表时,会收到以下消息:

The partition table has been altered!Calling ioctl() to re-read partition table.WARNING: Re-reading the partition table failed with error 16: Device or resource busy.The kernel still uses the old table.The new table will be used at the next reboot.Syncing disks.

此时,你使用 partprobe 命令强制内核重新读取分区表,这样就不需要执行重新启动机器。

partprobe

使用命令 fdisk -l 列出分区,新交换分区应该在列出的分区中。确保新的分区类型是 “Linux swap”。

修改 /etc/fstab 文件以指向新的交换分区。如下所示:

LABEL=SWAP-sdaX   swap        swap    defaults        0 0

其中 X 是分区号。根据新交换分区的位置,添加以下内容:

/dev/sdaY         swap        swap    defaults        0 0

请确保使用正确的分区号。现在,可以执行创建交换分区的***一步。使用 mkswap 命令将分区定义为交换分区。

mkswap /dev/sdaY

***一步是使用以下命令启用交换空间:

swapon -a

你的新交换分区现在与以前存在的交换分区一起在线。您可以使用 freetop 命令来验证这一点。

在 LVM 磁盘环境中添加交换空间

如果你的磁盘使用 LVM ,更改交换空间将相当容易。同样,假设当前交换卷所在的卷组中有可用空间。默认情况下,LVM 环境中的 Fedora Linux 在安装过程将交换分区创建为逻辑卷。您可以非常简单地增加交换卷的大小。

以下是在 LVM 环境中增加交换空间大小的步骤:

  1. 鸿蒙官方战略合作共建——HarmonyOS技术社区

  2. 关闭所有交换空间。

  3. 增加指定用于交换空间的逻辑卷的大小。

  4. 为交换空间调整大小的卷配置。

  5. 启用交换空间。

首先,让我们使用 lvs 命令(列出逻辑卷)来验证交换空间是否存在以及交换空间是否是逻辑卷。

[root@studentvm1 ~]# lvs  LV     VG                Attr       LSize  Pool   Origin Data%  Meta%  Move Log Cpy%Sync Convert  home   fedora_studentvm1 -wi-ao----  2.00g                                                        pool00 fedora_studentvm1 twi-aotz--  2.00g               8.17   2.93                              root   fedora_studentvm1 Vwi-aotz--  2.00g pool00        8.17                                     swap   fedora_studentvm1 -wi-ao----  8.00g                                                        tmp    fedora_studentvm1 -wi-ao----  5.00g                                                        usr    fedora_studentvm1 -wi-ao---- 15.00g                                                        var    fedora_studentvm1 -wi-ao---- 10.00g                                                      [root@studentvm1 ~]#

你可以看到当前的交换空间大小为 8GB。在这种情况下,我们希望将 2GB 添加到此交换卷中。首先,停止现有的交换空间。如果交换空间正在使用,终止正在运行的程序。

swapoff -a

现在增加逻辑卷的大小。

[root@studentvm1 ~]# lvextend -L +2G /dev/mapper/fedora_studentvm1-swap  Size of logical volume fedora_studentvm1/swap changed from 8.00 GiB (2048 extents) to 10.00 GiB (2560 extents).  Logical volume fedora_studentvm1/swap successfully resized.[root@studentvm1 ~]#

运行 mkswap 命令将整个 10GB 分区变成交换空间。

[root@studentvm1 ~]# mkswap /dev/mapper/fedora_studentvm1-swapmkswap: /dev/mapper/fedora_studentvm1-swap: warning: wiping old swap signature.Setting up swapspace version 1, size = 10 GiB (10737414144 bytes)no label, UUID=3cc2bee0-e746-4b66-aa2d-1ea15ef1574a[root@studentvm1 ~]#

重新启用交换空间。

[root@studentvm1 ~]# swapon -a[root@studentvm1 ~]#

现在,使用 lsblk 命令验证新交换空间是否存在。同样,不需要重新启动机器。

[root@studentvm1 ~]# lsblkNAME                                 MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTsda                                    8:0    0   60G  0 disk|-sda1                                 8:1    0    1G  0 part /boot`-sda2                                 8:2    0   59G  0 part  |-fedora_studentvm1-pool00_tmeta   253:0    0    4M  0 lvm    | `-fedora_studentvm1-pool00-tpool 253:2    0    2G  0 lvm    |   |-fedora_studentvm1-root       253:3    0    2G  0 lvm  /  |   `-fedora_studentvm1-pool00     253:6    0    2G  0 lvm    |-fedora_studentvm1-pool00_tdata   253:1    0    2G  0 lvm    | `-fedora_studentvm1-pool00-tpool 253:2    0    2G  0 lvm    |   |-fedora_studentvm1-root       253:3    0    2G  0 lvm  /  |   `-fedora_studentvm1-pool00     253:6    0    2G  0 lvm    |-fedora_studentvm1-swap           253:4    0   10G  0 lvm  [SWAP]  |-fedora_studentvm1-usr            253:5    0   15G  0 lvm  /usr  |-fedora_studentvm1-home           253:7    0    2G  0 lvm  /home  |-fedora_studentvm1-var            253:8    0   10G  0 lvm  /var  `-fedora_studentvm1-tmp            253:9    0    5G  0 lvm  /tmpsr0                                   11:0    1 1024M  0 rom  [root@studentvm1 ~]#

您也可以使用 swapon -s 命令或 topfree 或其他几个命令来验证这一点。

[root@studentvm1 ~]# free              total        used        free      shared  buff/cache   availableMem:        4038808      382404     2754072        4152      902332     3404184Swap:      10485756           0    10485756[root@studentvm1 ~]#

请注意,不同的命令以不同的形式显示或要求输入设备文件。在 /dev 目录中访问特定设备有多种方式。

以上是“Linux系统上交换空间的示例分析”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网操作系统频道!

--结束END--

本文标题: Linux系统上交换空间的示例分析

本文链接: https://www.lsjlt.com/news/283210.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Linux系统上交换空间的示例分析
    小编给大家分享一下Linux系统上交换空间的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!交换空间交换空间是现代 Linux 系统中的第二种内存类型。交换...
    99+
    2023-06-16
  • 在Linux系统上如何增加swap交换空间
    本篇文章给大家分享的是有关在Linux系统上如何增加swap交换空间,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。在Linux系统中增加服务器swap交换空间大小是为了防止应用...
    99+
    2023-06-28
  • 怎么在Linux系统上使用交换文件扩展swap空间
    本篇内容主要讲解“怎么在Linux系统上使用交换文件扩展swap空间”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么在Linux系统上使用交换文件扩展swap空间”吧!想像一种情景,当我们的L...
    99+
    2023-06-12
  • 在linux上如何使用交换文件扩展交换空间
    这篇文章给大家分享的是有关在linux上如何使用交换文件扩展交换空间的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。想像一种情景,当我们的Linux系统用尽交换空间时,在这种情况下,我们想要使用swap分区扩展交换...
    99+
    2023-06-16
  • Linux操作系统的示例分析
    这篇文章给大家分享的是有关Linux操作系统的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、Linux简介Linux可以有狭义和广义两种定义。狭义来说,Linux实际上指Linux kernel (内...
    99+
    2023-06-13
  • Linux系统进程的示例分析
    这篇文章主要为大家展示了“Linux系统进程的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Linux系统进程的示例分析”这篇文章吧。1. 什么是进程进程是处于执行期的程序以及...
    99+
    2023-06-13
  • Linux系统结构的示例分析
    这篇文章主要介绍Linux系统结构的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Linux系统一般有4个主要部分:内核、shell、文件系统和应用程序。内核、shell和文件系统一起形成了基本的操作系统结构...
    99+
    2023-06-15
  • Linux系统配置的示例分析
    这篇文章主要为大家展示了“Linux系统配置的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Linux系统配置的示例分析”这篇文章吧。前言     Linu...
    99+
    2023-06-22
  • linux系统有交换分区吗
    本文小编为大家详细介绍“linux系统有交换分区吗”,内容详细,步骤清晰,细节处理妥当,希望这篇“linux系统有交换分区吗”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。 ...
    99+
    2023-02-17
    linux
  • Linux中网络系统的示例分析
    这篇文章主要介绍了Linux中网络系统的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。网络信息修改主机名# hostname node01&nbs...
    99+
    2023-06-22
  • Linux系统netcat命令的示例分析
    这篇文章的内容主要围绕Linux系统netcat命令的示例分析进行讲述,文章内容清晰易懂,条理清晰,非常适合新手学习,值得大家去阅读。感兴趣的朋友可以跟随小编一起阅读吧。希望大家通过这篇文章有所收获!netcat是网络工具中的瑞士军刀,它能...
    99+
    2023-06-28
  • Linux系统线程池的示例分析
    Linux系统线程池的示例分析,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。实现原理程序启动之前,创建一定数量的线程,放入空闲的队列中,初始化线程池。这些线程均处于阻塞状态...
    99+
    2023-06-28
  • namesapce命名空间的示例分析
    这篇文章主要介绍了namesapce命名空间的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1.命名空间的使用目的   在PHP中函数、类、常量是不允许同名...
    99+
    2023-06-06
  • oracle中表空间的示例分析
    这篇文章主要介绍了oracle中表空间的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。oracle 的表空间实例详解查询表空间SEL...
    99+
    2024-04-02
  • VB.NET名字空间的示例分析
    小编给大家分享一下VB.NET名字空间的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!VB.NET名字空间在编写.NET软件时,我们会用到类和其他类型。为...
    99+
    2023-06-17
  • Flex命名空间的示例分析
    这篇文章主要介绍了Flex命名空间的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Flex命名空间详解通过命名空间可以控制所创建的属性和方法的可见性。请将public...
    99+
    2023-06-17
  • Linux系统DNS文件的示例分析
    这篇文章将为大家详细讲解有关Linux系统DNS文件的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。DNS一般指域名系统。DNS是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库...
    99+
    2023-06-28
  • Linux系统网络配置的示例分析
    这篇文章主要为大家展示了“Linux系统网络配置的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Linux系统网络配置的示例分析”这篇文章吧。1、查看IP  Ifconfig2、配置IP...
    99+
    2023-06-10
  • Linux中断子系统domain的示例分析
    这篇文章主要介绍Linux中断子系统domain的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!随着现代CPU的复杂度加大,外设中断数量增加,实际上系统可能同时需要多个中断控制器进行级联,面对这样的趋势,Li...
    99+
    2023-06-27
  • Linux系统快速入门的示例分析
    Linux系统快速入门的示例分析,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。相信看到这篇文章的你一定是想要学习Linux,或者已经在学习Linux的人了,那我...
    99+
    2023-06-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作