关于linux:Linux交换空间swap讲解

41次阅读

共计 1991 个字符,预计需要花费 5 分钟才能阅读完成。

在上一篇文中,有为大家介绍 Linux 的物理存储构造,以及如何利用 fdisk 命令来划分分区,应用 mkfs 命令来格式化分区,应用 mount 命令来进行挂载。然而仔细的敌人会发现,当咱们重启零碎之后,发现新增的分区不见了,如果想让这个设施文件的挂载永恒无效,则须要把挂载的信息写入到配置文件 /etc/fstab 中:

/dev/sdb1 /myFS xfs defaults 0 0

下面命令中,各列字段的含意如下:

字段 意义
设施文件 个别为设施的门路 + 设施名称,也能够写惟一识别码(UUID)
挂载目录 指定要挂载到的目录,需在挂载前创立好
格局类型 指定文件系统的格局,比方 Ext3、Ext4、XFS、SWAP、iso9660(此为光盘设施)等
权限选项 若设置为 defaults,则默认权限为:rw, suid, dev, exec, auto, nouser, async
是否备份 若为 1 则开机后应用 dump 进行磁盘备份,为 0 则不备份
是否自检 若为 1 则开机后主动进行磁盘自检,为 0 则不自检

大家应该都晓得,间接从内存中读写数据要比从硬盘读写数据快得多,因而有时候咱们更心愿所有数据的读写都在内存中实现。然而理论状况中是不可能的,因为内存是无限的,为了解决这一问题,就引出了物理内存与虚拟内存的概念。

替换空间 swap 的基本概念

物理内存就是零碎硬件提供的内存大小,是真正的内存。绝对于物理内存,在 Linux 下还有一个虚拟内存的概念,虚拟内存是为了满足物理内存的有余而提出的策略,其设计目标是为了解决实在物理内存不足的问题,它是利用磁盘空间虚构出的一块逻辑内存。用作虚拟内存的磁盘空间被称为替换空间(又称 swap 空间)。

[虚拟内存和替换空间的映射关系图]

作为物理内存的扩大,Linux 会在物理内存不足时,应用替换分区的虚拟内存,更具体地说,就是内核会将临时内存中临时不罕用的数据长期寄存到硬盘中,以便腾出物理内存空间。这样一来,物理内存失去了开释,这块内存就能够用于其余目标,当须要用到原始的内容时,这些信息会被从新从替换空间读入物理内存。

但因为替换分区毕竟是通过硬盘设施读写数据的,速度必定要比物理内存慢,所以只有当实在的物理内存耗尽后才会调用替换分区的资源。

Linux 的内存治理采取的是分页存取机制,为了保障物理内存能失去充沛的利用,内核会在适当的时候将物理内存中不常常应用的数据块主动替换到虚拟内存中,而将常常应用的信息保留到物理内存。

当然要深刻理解 Linux 的内存机制,咱们还须要把握以下几点内容:

  1. Linux 零碎会不断地进行页面替换操作,以放弃尽可能多的闲暇物理内存
  2. Linux 依据“最近最常常应用”的准则,将一些不常常应用的页面文件替换到虚拟内存

3. 替换空间的页面在应用时会首先被替换到物理内存,如果此时没有足够的物理内存来包容这些页面,它们又会被马上替换进来,如此一来,虚拟内存中可能没有足够的空间来存储这些替换页面,最终会导致 Linux 呈现假死机、服务异样等问题

swap 配额大小

因而,正当布局和设计 Linux 内存的应用是十分重要的,对于物理内存和替换空间的大小设置问题,取决于理论所用的硬盘大小,咱们看下 redhat 官网倡议:

Amount of RAM in the system 物理内存 Recommended swap space 倡议的替换空间大小 Recommended swap space if allowing for hibernation 如果开启休眠性能倡议的替换空间大小
⩽ 2GB 2 times the amount of RAM 3 times the amount of RAM

2GB – 8GB |Equal to the amount of RAM| 2 times the amount of RAM
8GB – 64GB| At least 4 GB| 1.5 times the amount of RAM
64GB| At least 4 GB| Hibernation not recommended

咱们理论在生产环境中,替换分区的大小个别为实在物理内存的 1.5~2 倍。

如何增加替换分区

增加替换分区之前,咱们仍旧能够从 /dev/sdb 设施进行分区,我这里先分出 4G 的空间,执行操作过程入下图:

从上图能够看到,咱们分出的第二个分区名称是/dev/sdb2,应用 SWAP 分区专用的格式化命令mkswap,对新建的主分区进行格式化操作:

$ mkswap /dev/sdb2

为了可能提现试验的成果,咱们先来看下目前的 swap 大小是多少:

$ free -m

应用 swapon 命令把筹备好的 SWAP 分区设施正式挂载到零碎中。咱们再应用 free -m 命令查看替换分区的大小变动(由 2047MB 减少到 6143MB):

$swapon /dev/sdb2

同样,为了可能让新的替换分区设施在零碎重启后仍然失效,咱们还须要将如下信息写入到 //etc/fstab 配置文件中:

/dev/sdb2 swap swap defaults 0 0 

写入实现之后记得保留文件。

正文完
 0