精华内容
下载资源
问答
  • Linux系统交换空间详解

    千次阅读 2018-11-28 00:49:37
    Linux 使用交换空间来增加主机可用的虚拟内存。它可以在常规文件或逻辑卷上使用一个或多个专用交换分区或交换文件。 典型计算机中有两种基本类型的内存。第一种类型,随机存取存储器 (RAM),用于存储计算机使用的...

    当今无论什么操作系统交换Swap空间是非常常见的。Linux 使用交换空间来增加主机可用的虚拟内存。它可以在常规文件或逻辑卷上使用一个或多个专用交换分区或交换文件。

    典型计算机中有两种基本类型的内存。第一种类型,随机存取存储器 (RAM),用于存储计算机使用的数据和程序。只有程序和数据存储在 RAM 中,计算机才能使用它们。随机存储器是易失性存储器;也就是说,如果计算机关闭了,存储在 RAM 中的数据就会丢失。

    硬盘是用于长期存储数据和程序的磁性介质。该磁介质可以很好的保存数据;即使计算机断电,存储在磁盘上的数据也会保留下来。CPU(中央处理器)不能直接访问硬盘上的程序和数据;它们必须首先复制到 RAM 中,RAM 是 CPU 访问代码指令和操作数据的地方。在引导过程中,计算机将特定的操作系统程序(如内核、init 或 systemd)以及硬盘上的数据复制到 RAM 中,在 RAM 中,计算机的处理器 CPU 可以直接访问这些数据。

    交换空间

    交换空间是现代 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 文档中推荐的系统交换空间
    在这里插入图片描述
    在上面列出的每个范围之间的边界(例如,具有 2GB、8GB 或 64GB 的系统 RAM),请根据所选交换空间和支持休眠功能请谨慎使用。如果你的系统资源允许,增加交换空间可能会带来更好的性能。

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

    表 2: 作者推荐的系统交换空间
    在这里插入图片描述

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

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

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

    基本步骤很简单:

    关闭现有的交换空间。
    创建所需大小的新交换分区。
    重读分区表。
    将分区配置为交换空间。
    添加新分区到 /etc/fstab。
    打开交换空间。

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

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

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

    swapoff -a

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

    fdisk -l

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

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

    fdisk /dev/

    例如:

    fdisk /dev/sda

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

    使用 fdisk 的 p 子命令验证磁盘上是否有足够的可用空间来创建新的交换分区。硬盘上的空间以 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

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

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

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

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

    关闭所有交换空间。
    增加指定用于交换空间的逻辑卷的大小。
    为交换空间调整大小的卷配置。
    启用交换空间。

    首先,让我们使用 lvs 命令(列出逻辑卷)来验证交换空间是否存在以及交换空间是否是逻辑卷。
    在这里插入图片描述
    你可以看到当前的交换空间大小为 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-swap
    mkswap: /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 命令验证新交换空间是否存在。同样,不需要重新启动机器。
    在这里插入图片描述
    您也可以使用 swapon -s 命令或 top、free 或其他几个命令来验证这一点。
    在这里插入图片描述
    请注意,不同的命令以不同的形式显示或要求输入设备文件。

    展开全文
  • Linux上使用交换空间

    千次阅读 2017-04-18 16:45:17
    Linux上使用交换空间Linux上使用交换空间 了解交换空间 开始使用交换空间 创建交换空间 指定交换空间 启用交换空间 关闭交换空间 开机自动启用交换空间 Gook Luck 了解交换空间 Linux中Swap...

    在Linux上使用交换空间

    了解交换空间

    Linux中Swap(即:交换分区),类似于Windows的虚拟内存,就是当内存不足的时候,把一部分硬盘空间虚拟成内存使用,从而解决内存容量不足的情况。Android是基于Linux的操作系统,所以也可以使用Swap分区来提升系统运行效率。

    交换分区,英文的说法是swap,意思是“交换”、“实物交易”。它的功能就是在内存不够的情况下,操作系统先把内存中暂时不用的数据,存到硬盘的交换空间,腾出内存来让别的程序运行,和Windows的虚拟内存(pagefile.sys)的作用是一样的。

    开始使用交换空间

    注:
    	1.创建,启用,关闭交换空间需在root下执行
    	2.本文章交换空间文件将保存在/home/swap,自己根据自己的调整
    

    1.创建交换空间

    命令如下:

    dd  if=/dev/zero  of=/home/swap  bs=1024  count=500000
    # or
    dd  if=/dev/zero  of=/home/swap  bs=1024  count=$[ 4 * 1024 * 1024 ]
    #		 G     M      K
    
    
    假设当前目录为"/home",则在"/home"目录下创建了一个名称为“swap”的交换空间文件,大小为500M,
    
    命令中选项解释:
       of   :输出的交换文件的路径及名称;
    
       bs   :块大小,单位byte,计算机里1k即1024个byte;
    
       count:总块数即空间总大小,单位为块即k;
    
       if   :读取的源空闲空间,为什么是zero,我也不清楚
    
    
    一般情况下,交换空间的大小为真实物理内存的1-2倍
    如:
       物理内存为1G,交换空间可以设置成1G-2G.
    

    注意:交换空间不能设置的太大!

    交换空间的读取速度比内存慢很多,空间设置的太大且交换空间中的资源太多,会降低电脑性能.
    

    2.指定交换空间

    命令如下:

    # /home/swap 为交换空间的绝对路径
    
    mkswap /home/swap
    
    执行命令,显示命令找不到的时候,请注意!!!
    有些用户不使用root完成这些操作, 导致找不到上述命令.

    解决方案: (现在发行的Linux版本是不会没有这些命令的)

    1. 切换到 root
      2.指定命令的绝对路径(这些命令在 /sbin 下)
      如:
     /sbin/mkswap /home/swap
    

    下面的操作中遇到这种找不到命令的情况,同上.

    3.启用交换空间

    命令如下:

     swapon  /home/swap
    

    至此增加交换空间的操作结束了,可以使用free命令查看swap空间大小是否发生变化.

    *.关闭交换空间

    如果不再使用空间可以选择关闭交换空间
    命令如下:

    swapoff /home/swap
    

    开机自动启用交换空间

    /etc/rc.d/rc.local 文件的末行下追加加以下内容:

    /sbin/swapon  /home/swap
    

    保存后退出,这样在系统启动后,swap空间就会自动加载了

    最后附上快速启用交换空间脚本

    #!/bin/bash
    
    # install swap
    
    file_name=$0
    
    file_path=$1
    
    file_size=$2
    
    showneedroot(){
    	echo "I need root."
    }
    
    show(){
    	echo "请输入swap文件的位置及大小"
    	echo "命令格式:(创建4G交换空间)"
    	echo "sudo $file_name /home/swap \$[4 * 1024 * 1024] "
    	echo ""
    	exit 0
    }
    
    if [ "$file_path" = "" ]; then
    	show
    	exit 0
    fi
    
    if [ "$file_size" = "" ]; then
    	show
    	exit 0
    fi
    
    if [ "`whoami`" != "root" ]; then
    	showneedroot
    	exit 0
    fi
    
    echo '创建文件'
    dd if=/dev/zero of=$file_path bs=1024 count=$file_size
    
    echo '将文件制作成swap'
    mkswap $file_path
    
    echo '修改文件权限'
    chmod 600 $file_path
    
    echo '启动swap'
    swapon $file_path
    
    

    Gook Luck ~~~

    展开全文
  • linux系统交换空间过大 典型的计算机中有两种基本的内存类型。 第一种类型,随机存取存储器(RAM),用于在计算机主动使用它们时存储数据和程序。 程序和数据除非存储在RAM中,否则无法被计算机使用。 RAM是易失性...

    linux系统交换空间过大

    典型的计算机中有两种基本的内存类型。 第一种类型,随机存取存储器(RAM),用于在计算机主动使用它们时存储数据和程序。 程序和数据除非存储在RAM中,否则无法被计算机使用。 RAM是易失性内存; 也就是说,如果关闭计算机,则RAM中存储的数据将丢失。

    硬盘驱动器是用于长期存储数据和程序的磁性介质。 磁性介质是非易失性的; 即使断开计算机电源,磁盘上存储的数据仍会保留。 CPU(中央处理单元)无法直接访问硬盘驱动器上的程序和数据。 必须先将其复制到RAM中,然后CPU才能在其中访问其编程指令以及这些指令要处理的数据。 在引导过程中,计算机会将特定的操作系统程序(例如内核和init或systemd)复制到硬盘中,并将数据从硬盘驱动器复制到RAM中,然后由计算机的处理器(CPU)直接对其进行访问。

    现代Linux系统中的第二种内存类型是交换空间。

    交换空间

    例如,假设您的计算机系统具有8GB的RAM。 如果您启动的程序没有占用该RAM,那么一切都很好,不需要交换。 但是,假设您要处理的电子表格在添加更多行时会增加,并且该行以及正在运行的其他所有行现在都将填满所有RAM。 没有可用的交换空间,您将不得不停止处理电子表格,直到可以通过关闭其他程序来释放有限的RAM。

    内核使用内存管理程序来检测内存块(也称为页面),其中最近未使用过这些内容。 内存管理程序将这些相对不常用的内存页中的足够多的内容交换到硬盘驱动器上专门用于“分页”或交换的特殊分区中。 这样可以释放RAM,并为将更多数据输入电子表格提供空间。 那些换出到硬盘驱动器的内存页面将由内核的内存管理代码进行跟踪,并且可以在需要时将其分页回RAM。

    Linux计算机中的内存总量为RAM加交换空间,称为虚拟内存

    Linux交换的类型

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

    如果没有可用的磁盘空间可在其中创建新的交换分区或卷组中没有空间(可在其中为交换空间创建逻辑卷)中使用空间,则可以使用交换文件。 这只是一个常规文件,已创建并预分配为指定大小。 然后运行mkswap命令将其配置为交换空间。 除非绝对必要,否则我不建议将文件用于交换空间。

    脱粒

    当总的虚拟内存(RAM和交换空间)几乎都已满时,可能会发生触发。 系统花费大量时间在交换空间和RAM之间分配内存的分块,而回馈给实际工作的时间却很少。 这种现象的典型症状很明显:系统变慢或完全没有响应,并且硬盘驱动器活动指示灯几乎一直亮着。

    如果您可以发出诸如free的命令来显示CPU负载和内存使用情况,您将看到CPU负载非常高,可能高达系统中CPU内核数的30至40倍。 另一个症状是RAM和交换空间几乎都已分配。

    事后,查看SAR(系统活动报告)数据也可以显示这些症状。 我在工作的每个系统上都安装了SAR,并将其用于维修后的取证分析。

    交换空间的正确数量是多少?

    很多年前,根据经验法则,应该在硬盘驱动器上分配的交换空间是计算机中安装的RAM的2倍(当然,那是大多数计算机的RAM以KB或MB衡量的) 。 因此,如果计算机具有64KB的RAM,则128KB的交换分区将是最佳大小。 该规则考虑到以下事实:当时RAM大小通常很小,并且为交换空间分配2倍以上的RAM并不能提高性能。 由于有超过两倍的RAM用于交换,因此大多数系统花费的时间比实际执行有用的工作还要多。

    RAM已成为一种便宜的商品,近来大多数计算机的RAM数量已扩展到数十GB。 我的大多数较新的计算机至少具有8GB的RAM,一台具有32GB的内存,而我的主工作站具有64GB的内存。 我的旧计算机有4到8 GB的RAM。

    当处理具有大量RAM的计算机时,交换空间的限制性能因素远低于2倍乘数。 《 Fedora 28在线安装指南》(可在《 Fedora安装指南》中在线找到)定义了有关交换空间分配的最新思路。 我在下面包括了一些讨论和该文档中的建议表。

    下表提供了交换分区的建议大小,具体取决于系统中的RAM数量以及是否要有足够的内存供系统Hibernate。 建议的交换分区大小在安装过程中自动建立。 但是,为了允许Hibernate,您将需要在自定义分区阶段中编辑交换空间。

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

    系统内存量

    推荐交换空间

    建议在Hibernate状态下进行交换

    less than 2 GB

    RAM量的2倍

    RAM量的3倍

    2 GB - 8 GB

    等于RAM量

    RAM量的2倍

    8 GB - 64 GB

    RAM量的0.5倍

    RAM量的1.5倍

    more than 64 GB

    取决于工作量

    不建议Hibernate

    在上面列出的每个范围之间的边界处(例如,具有2 GB,8 GB或64 GB系统RAM的系统),请谨慎选择所选择的交换空间和Hibernate支持。 如果您的系统资源允许,增加交换空间可能会导致更好的性能。

    当然,大多数Linux管理员对于适当数量的交换空间以及几乎所有其他内容都有自己的想法。 下面的表2包含了根据我在多种环境中的个人经验提出的建议。 这些可能对您不起作用,但是与表1一样,它们可以帮助您入门。

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

    RAM数量

    推荐交换空间

    ≤ 2GB

    2X RAM

    2GB – 8GB

    = RAM

    >8GB

    8GB

    两个表中的一个考虑因素是,随着RAM数量的增加,超过一定点添加更多的交换空间只会导致交换空间甚至快要被填满之前的抖动。 如果遵循这些建议时虚拟内存太少,则应尽可能增加RAM,而不要增加交换空间。 与影响系统性能的所有建议一样,请使用最适合您的特定环境的建议。 根据Linux环境中的条件进行实验和进行更改将需要花费时间和精力。

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

    由于已安装Linux的主机对交换空间的要求不断变化,可能有必要修改为系统定义的交换空间量。 此过程可用于需要增加交换空间量的任何一般情况。 假定有足够的可用磁盘空间可用。 此过程还假定磁盘在“原始” EXT4和交换分区中进行了分区,并且不使用逻辑卷管理(LVM)。

    采取的基本步骤很简单:

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

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

    3. 重新读取分区表。

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

    5. 添加新的分区/ etc / fstab。

    6. 打开交换。

    不需要重新启动。

    为了安全起见,在关闭交换之前,至少应确保没有应用程序在运行,并且没有交换空间正在使用。 freetop命令可以告诉您是否正在使用交换空间。 为了更加安全,您可以还原为运行级别1或单用户模式。

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

     $  swapoff -a 
    

    现在显示硬盘驱动器上的现有分区。

     $  fdisk -l 
    

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

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

     $  fdisk / dev /< device name > 
    

    例如:

     $  fdisk / dev / sda 
    

    此时, fdisk是交互式的,并且仅在指定的磁盘驱动器上运行。

    使用fdisk p子命令来验证磁盘上是否有足够的可用空间来创建新的交换分区。 硬盘驱动器上的空间以512字节的块以及起始和结束柱面号表示,因此,您可能必须做一些数学运算才能确定分配的分区之间以及分区末尾的可用空间。

    使用n子命令创建一个新的交换分区。 fdisk会询问您启动气缸。 默认情况下,它将选择编号最小的可用圆柱体。 如果要更改此值,请输入启动气缸的编号。

    现在,可以使用fdisk命令以多种格式输入分区的大小,包括最后一个柱面号或以字节,KB或MB为单位的大小。 键入4000M,这将在新分区上提供大约4GB的空间(例如),然后按Enter。

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

    现在,必须指定新分区为交换分区。 子命令t允许您指定分区的类型。 因此,输入t ,指定分区号,然后在询问十六进制代码分区类型时,输入82(这是Linux交换分区类型),然后按Enter。

    对创建的分区满意后,使用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. 关闭所有交换。

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

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

    4. 打开交换。

    首先,使用lvs命令(列表逻辑卷)验证交换是否存在并且是逻辑卷。

    
       
    # 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

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

     $  swapoff -a 
    

    现在增加逻辑卷的大小。

    
       
    # 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.

    运行mkswap命令以使整个10GB分区成为交换空间。

    
       
    # mkswap /dev/mapper/fedora_studentvm1-swap
    mkswap: /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

    重新打开交换。

     # swapon -a 
    

    现在,使用list block devices命令验证新的交换空间是否存在。 同样,不需要重新启动。

    
       
    # lsblk
    NAME                                 MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sda                                    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  /tmp
    sr0

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

    
       
    # free
                  total        used         free      shared  buff / cache   available
    Mem:         4038808       382404     2754072         4152       902332     3404184
    Swap:       10485756           0     10485756

    注意,不同的命令以不同的形式显示或要求输入设备专用文件。 / dev目录中有多种访问特定设备的方式。 我的文章“ 在Linux中管理设备”包含有关/ dev目录及其内容的更多信息。


    本文最初于2018年9月发布,并由编辑者进行了附加信息更新。

    翻译自: https://opensource.com/article/18/9/swap-space-linux-systems

    linux系统交换空间过大

    展开全文
  • linux设置交换空间

    2020-09-06 00:02:18
    1.创建一个文件 dd if=/dev/zeroof=/myswap bs=1Mcount=512 2.格式成交换分区的格式 mkswap /myswap 3.使格式的swap生效 swapon /myswap ...5.删除交换空间 swapoff /myswap 然后删除文件 ...

    1.创建一个文件

    dd if=/dev/zero of=/myswap bs=1M count=512

    2.格式成交换分区的格式
    mkswap /myswap

    3.使格式的swap生效
    swapon /myswap

    4.查看系统中的交换分区

    cat /proc/swaps

    5.删除交换空间

    swapoff /myswap

    然后删除文件

    展开全文
  • linux交换空间设置

    2021-01-09 12:38:23
    这里使用的是阿里云主机,2g,默认没有设置交换空间(swap)。使用free -m可以查看。 1、查看交换空间 查看swap交换空间方式一:free -m 查看swap交换空间方式二:grep SwapTotal /proc/meminfo 查看swap交换空间...
  • linux增加交换空间

    2017-11-25 10:46:39
    linux增加,更改,删除交换空间
  • Linux中如何释放交换空间swap

    千次阅读 2020-12-30 10:31:44
    一、Linux内存机制简单介绍 ...交换内存Swap:交换内存swap是linux下一个虚拟内存的概念,它是利用磁盘空间虚拟出的一块逻辑内存,用于解决物理内存容量不足的问题。可查看swapon -s查看交换内存的...
  • Linux创建交换空间(虚拟内存)

    千次阅读 2018-10-02 13:53:04
    首先创建一个分区,使用fdisk或gdisk创建指定大小的分区,创建方法参考:https://blog.csdn.net/tus00000/article/details/82918013 ...之后使用以下命令激活交换空间: sudo swapon //激活交换空间 fre...
  • SWP:这个文件是linux中当内存不够用时启动的一个内存替代品 有时候Htop会出现SWP满值的情况,这个时候我们需要扩展一下SWP文件了 先创建一个普通文件 1. dd if=/dev/zero of=/swapfile bs=1M count=4096 2. bs单...
  • Linux交换空间的使用

    2019-12-15 16:34:24
    Linux交换空间的使用 虽然现在的内存已经变得非常廉价,但是swap仍然有很大的使用价值,合理的规划和使用swap分区,对系统稳定运行至关重要。Linux下可以使用文件 系统中的一个常规文件或者一个独立分区作为交换空间...
  • linux swap 交换空间 设置多大合适

    千次阅读 2020-03-21 12:03:24
    无论是windows系统还是linux系统,除了物理内存外,都还有一个虚拟内存。在linux上,虚拟内存被...下图是虚拟内存和交换空间的映射关系,虚拟内存的存在,可以提高电脑的运行速度,所以其存在很有意义。 我们看看...
  • Linux开启swap空间

    千次阅读 2017-02-25 16:51:40
    Linux开启swap空间有好几种方法,在这里只介绍两种比较常用的:使用『交换文件』和使用『交换分区』。
  • Linux系统增加交换空间的方法

    千次阅读 2017-02-05 17:54:26
    增加交换空间有两种方法: 严格的说,在系统安装完后只有一种方法可以增加swap,那就是本文的第二种方法, 至于第一种方法应该是安装系统时设置交换区。 1、使用分区:  在安装OS时划分出专门的交换分区...
  • Linux-创建Swap交换空间

    2019-06-28 21:39:40
    Linux-创建Swap交换空间 前言 嵌入式Linux中文站消息,Linux系统的Swap分区,即交换区,Swap空间的作用可简单描述为:当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的...
  • [Linux]设置swap交换空间

    千次阅读 2019-04-04 11:41:58
    gitlab 启动运行就占用了大量的内存,2G内存在启动后已经所剩无几。想再进行 git 相关操作自然也就会出现卡顿现象。 正常 centos 应该是启用 swap 分区的,但是阿里云,腾讯云的服务器却没有swap分区! 通过以下...
  • Linux交换空间(swap space)

    万次阅读 2018-06-23 18:18:46
    每次安装Linux的时候,都会要求配置交换分区,那么这个分区是干嘛的呢?不设置这个分区有什么后果?如果一定要设置,设置多大比较合适?本篇将试图回答这些问题并尽量覆盖所有swap相关的知识。 下面的所有例子都在...
  • 计算机中Swap空间也就是交换空间,Swap空间是电脑硬盘中的一部分,当计算机的实际内存不够用的时候,操作系统会去使用Swap空间,不过一般情况下Swap空间是用不着的。因为是硬盘上的一部分,所以Swap空间很慢。 第一...
  • linux磁盘分区与交换空间的使用

    千次阅读 2016-10-23 18:00:30
    简单磁盘分区与交换空间的使用 磁盘分区使用 linux大致文件系统: / ##根目录 /boot ##内核以及夹在内核所需要文件 /home ##系统用户宿主目录,每个用户均有一个同名目录 /tmp ##临时文件存在目录,在命令...
  • linux swap交换空间设置

    千次阅读 2015-04-10 23:03:01
    Linux下可以创建两种类型的交换空间,一种是swap分区,一种是swap文件。前者适合有空闲的分区可以使用,后者适合于没有空的硬盘分区,硬盘的空间都已经分配完毕。例如:安装redhat的时候,你可以默认划分硬盘空间,...
  • 关于Linux系统的swap交换空间

    万次阅读 2016-05-06 17:09:16
    Linux将随机存储RAM称为内存页。交换技术就是将一页内存复制到预先设定的硬盘上的交换空间,来释放该页占用内存。物理内存和交换空间的和就是可提供的虚拟内存的总量。
  • MemAvailable(可用内存)则是对于启动新程序时可使用的内存的一个估计。     查看物理内存信息文件 1 $ head /proc/meminfo 2 MemTotal: 1863252 kB 3 MemFree: 1565612 kB 4 MemAvailable: 1558632 kB ...
  • 首先简单的说一下swap分区的作用,其实linux系统下的swap分区与windows下的虚拟内存差不多一个意思,swap空间的作用可简单这样理解:当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供...
  • LinuxMint 增加交换空间

    2019-05-12 18:42:50
    LinuxMint 增加交换空间直接上命令 直接上命令 创建一个8G的swapfile sudo dd if=/dev/zero of=swap bs=1G count=8 创建交换文件 sudo mkswap swap swapon激活 sudo swapon swapfile 开机启动 ...
  • Linux 关闭交换内存

    千次阅读 2019-04-04 11:35:13
    关闭Linux的swap交换内存 操作:sysctl -w vm.swappiness=0   1. 设置swap: linux系统会用内存做很 多的buffer和cache,所以经常会看到内存用完了,其实这里面可能只有很少的一部分是程序用到的。当...
  • linux交换空间不足

    千次阅读 2013-02-21 17:37:33
    增加交换空间有两种方法: 严格的说,在系统安装完后只有一种方法可以增加swap,那就是本文的第二种方法, 至于第一种方法应该是安装系统时设置交换区。 1、使用分区:  在安装OS时划分出专门的交换分区,空间...
  • linux 添加交换区内存We may want to add some swap space for a Linux box while only find that all disk space is partitioned and mounted. Some partition has large available free space. For such cases, we...
  • 点击上方“民工哥技术之路”,选择“设为星标”回复“1024”获取独家整理的学习资料!像任何其他的操作系统一样,GNU / Linux已经有效地实施了内存管理甚至更多。但是,如果有任何进程...
  • 磁盘空间 文件系统磁盘空间整体使用情况查看:df -h 当前目录磁盘空间使用情况:du -h 查看磁盘分区情况:fdisk -l 内存 内存状态查看:free -h 交换区(类似Windows的虚拟内存) 报告虚拟内存的统计信息:...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 84,554
精华内容 33,821
关键字:

linux开启交换空间

linux 订阅