奥门威尼斯网址交换分区(SWAP)的尺寸分配

by admin on 2019年9月3日

如何在Ubuntu 14.04中创建SWAP交换分区文件

前文中我们曾详细介绍过 Linux 中的 Swap 交换分区(见
 ),其实在服务器内存不足而影响到服务器响应能力甚至导致应用程序出错时,为
Ubuntu 14.04 添加一个 Swap 交换分区无疑是一个折中的解决办法。

奥门威尼斯网址 1

Linux 可以暂时在磁盘上划出一个 Swap 区域来代替内存使用,虽然 Swap
比物理内存慢很多,但对于物理内存着实太小或不够时,也还算是一个不错的临时替代方案。当然对小内存
VPS 来说,SWAP 也是一个不错的选择。在本文中,我们将介绍如何在 Ubuntu
14.04 上划分 Swap 交换分区。

如何管理配置 Linux下Swap交换分区 

如何扩展/删除SWAP分区

如何不让Oracle使用Linux的SWAP分区

Linux下安装Oracle时SWAP不足的两种解决方法

Linux SWAP 交换分区配置说明

Ubuntu 12.04的SWAP设置

查看当前系统Swap信息

开始在 Ubuntu 14.04 中创建 Swap
分区之前,我们有必要首先看一下当前操作系统是否有可用的交换分区。默认情况下,Ubuntu
在进行系统安装时就会提醒用户划分 Swap
分区,一般情况下划分好之后也是不太会更改的。

我们可以使用如下命令来进行查看:

sudo swapon -s

当然,我们也可以使用最常用的 free 命令来查看当前系统是否存在 Swap
交换分区:

free -m

查看磁盘分区的空闲空间

划分交换文件最佳的方式就是将其放到一个单独的分区当中,当然,如果无法单独为其划分的话也可以在已有的分区上创建新的交换文件。

但在创建新的 Swap
交换分区或创建交换文件之前,我们需要通过如下命令了解下当前系统对磁盘空间的使用情况:

df -h

确定好磁盘的空闲空间后,你已经可以根据你自己的实际情况来决定如何划分和创建
Swap 交换分区了。

一般情况下,创建 Swap
分区的大小都为当前系统使用的物理内存大小或内存大小的倍数。

创建Swap分区文件

要在 Ubuntu 14.04 中要创建 Swap 分区主要有如下 2 种方式:

1传统创建方式

一般情况下,我们都会使用 dd 命令来预先创建交换分区文件,然后再用
/dev/zero 将该文件的内容全部置零,创建时还将用到 bs
参数来设置要创建的交换空间大小,以及使用 count 来指定要创建的 block 数。

例如,我们要创建 4G 的交换分区文件可以使用如下命令:

sudo dd if=/dev/zero of=/swapfile bs=1G count=4

1快速创建方式

你可能已经注意到了,上述方式创建 Swap
交换文件的过程比较慢,如果想快速创建交换分区可以使用 fallocate
程序来实现。该命令会立即创建一个预分配的交换文件,而产是按实际大小写入分配的大小。

如果同样是要创建 4G 大小的交换创建文件,快捷创建方式的命令如下:

sudo fallocate -l 4G /swapfile

启用Swap分区文件

我们的 swapfile 交换文件已经创建好了,但 Ubuntu 14.04
还不知道它是被用作交换分区,所以我们还需要将此文件格式化为 Swap
分区交启用它。

首先,我们需要使用如下命令更改下 swapfile
文件的权限,以避免其被无意理性到:

sudo chmod 600 /swapfile

然后,我们需要用如下将 swapfile 初始化为交换文件:

sudo mkswap /swapfile

最后,还需要使用如下命令来启用交换文件:

sudo swapon /swapfile

配置启用时挂载Swap分区文件

Swap 交换文件虽然已经配置好并已经启用了,但 Ubuntu 14.04
在重启后是不会挂载我们刚创建的交换分区文件的,因此我们还需要对
/etc/fstab 文件进行更改,让其在系统启动时就自动挂载我们创建的 /swapfile
文件。

使用 vi 或 nano 在 /etc/fstab 文件底部添加如下内容:

/swapfile none swap sw 0 0

Ubuntu 14.04 下载、安装、配置的相关知识

Ubuntu 14.04系统下载地址:

Windows 7下硬盘安装Ubuntu
14.04图文教程

14.04中创建SWAP交换分区文件
前文中我们曾详细介绍过 Linux 中的 Swap 交换分区(见
),其实在服务器内存不足而影响到服务器响…

什么是swap space(交换空间)?

交换分区(swap
space)是一定磁盘空间(分区或文件),用于将部分内存中的数据换下来,以腾出内存空间用于其他需求。在一个系统中,物理内存的容量是有限的,当物理内存快使用完时,操作系统会使用交换分区(如果有的话)。当系统内存使用紧张时,操作系统根据一定的算法规则,将一部分最近没使用的内存页面保存到交换分区,从而为需要内存的程序留出足够的内存空间;在SWAP中的内存页面被访问到时,系统会将其重新载入到物理内存中去运行。

swap in (换入):是指页面从交换分区转移到内存之中;
swap out (换出):是指页面从从内存转移到交换分区中。
(这里的in/out是站在内存的角度来说的,就好理解了。)

在Windows、Unix、Linux系统中都有交换分区的概念。

大多数 Linux 在系统安装时都会提醒并建议你划分一个 SWAP
交换分区,如果你是从 Windows 切换到 Linux 的新用户,兴许对这个 SWAP
会感到十分疑惑。

什么是swap space(交换空间)?

交换分区(swap
space)是一定磁盘空间(分区或文件),用于将部分内存中的数据换下来,以腾出内存空间用于其他需求。在一个系统中,物理内存的容量是有限的,当物理内存快使用完时,操作系统会使用交换分区(如果有的话)。当系统内存使用紧张时,操作系统根据一定的算法规则,将一部分最近没使用的内存页面保存到交换分区,从而为需要内存的程序留出足够的内存空间;在SWAP中的内存页面被访问到时,系统会将其重新载入到物理内存中去运行。

swap in (换入):是指页面从交换分区转移到内存之中;
swap out (换出):是指页面从从内存转移到交换分区中。
(这里的in/out是站在内存的角度来说的,就好理解了。)

在Windows、Unix、Linux系统中都有交换分区的概念。

Linux中的交换分区的大小分配推荐法则

曾经,有人推荐使用物理内存1/2、1倍、2倍的容量作为SWAP分区的大小。随着计算机内容容量的增大,如果有16G内存的机器,分个16G的Swap空间,似乎感觉有点浪费磁盘空间,而且多数情况下用处也并不大。在Linux系统,我们可以参照Redhat公司为RHEL5、RHEL6推荐的SWAP空间的大小划分原则,在你没有其他特别需求时,可以作为很好的参考依据。

内存小于4GB时,推荐不少于2GB的swap空间;

内存4GB~16GB,推荐不少于4GB的swap空间;

内存16GB~64GB,推荐不少于8GB的swap空间;

内存64GB~256GB,推荐不少于16GB的swap空间。

  • 4GB of RAM requires a minimum of 2GB of swap space
  • 4GB to 16GB RAM requires a minimum of 4GB of swap space
  • 16GB to 64GB of RAM requires a minimum of 8GB of swap space
  • 64GB to 256GB of RAM requires a minimum of 16GB of swap space

SWAP 交换分区到底是干什么用的呢?我们是否真的需要划一个 SWAP
分区呢?答案是:视情况而定!SWAP 分区在一些情况下可以提升 Linux
操作系统性能,但在某些情况下又会成为系统运行的瓶颈,下面我们就来详细介绍下
Linux 中的 SWAP 交换分区。

Linux中的交换分区的大小分配推荐法则

曾经,有人推荐使用物理内存1/2、1倍、2倍的容量作为SWAP分区的大小。随着计算机内容容量的增大,如果有16G内存的机器,分个16G的Swap空间,似乎感觉有点浪费磁盘空间,而且多数情况下用处也并不大。在Linux系统,我们可以参照Redhat公司为RHEL5、RHEL6推荐的SWAP空间的大小划分原则,在你没有其他特别需求时,可以作为很好的参考依据。

内存小于4GB时,推荐不少于2GB的swap空间;

内存4GB~16GB,推荐不少于4GB的swap空间;

内存16GB~64GB,推荐不少于8GB的swap空间;

内存64GB~256GB,推荐不少于16GB的swap空间。

  • 4GB of RAM requires a minimum of 2GB of swap space
  • 4GB to 16GB RAM requires a minimum of 4GB of swap space
  • 16GB to 64GB of RAM requires a minimum of 8GB of swap space
  • 64GB to 256GB of RAM requires a minimum of 16GB of swap space

Linux中查看swap的命令

可以用“cat /proc/swaps”、“swapon -s”、“free”等命令查看Swap分区的情况。

 

 

 

 

 

 

Python

 

[root@jay-linux ~]# swapon -s Filename Type Size Used Priority
/dev/sda3 partition 2096120 840 -1 [root@jay-linux ~]# cat
/proc/swaps Filename Type Size Used Priority /dev/sda3 partition 2096120
840 -1 [root@jay-linux ~]# free -m total used free shared buffers
cached Mem: 7872 7280 592 0 429 5964 -/+ buffers/cache: 886 6986 Swap:
2046 0 2046

1
2
3
4
5
6
7
8
9
10
11
[root@jay-linux ~]# swapon  -s
Filename                                Type            Size    Used    Priority
/dev/sda3                               partition       2096120 840     -1
[root@jay-linux ~]# cat /proc/swaps
Filename                                Type            Size    Used    Priority
/dev/sda3                               partition       2096120 840     -1
[root@jay-linux ~]# free -m
             total       used       free     shared    buffers     cached
Mem:          7872       7280        592          0        429       5964
-/+ buffers/cache:        886       6986
Swap:         2046          0       2046

根据上面的例子,我其实该分配4GB的Swap空间,这里演示的是2GB(可能不太符合Redhat的推荐值,因为本机使用内存量并不会太大,几乎没有使用Swap的情况)。

参考阅读:
swap的分配(包括LVM中的SWAP分配):

RHEL5中swap:

存放内存溢出来的数据

奥门威尼斯网址 2

如何扩展/删除SWAP分区
http://www.linuxidc.com/Linux/2014-03/98311.htm

在OpenStack虚拟机实例中创建SWAP分区的一种方法
http://www.linuxidc.com/Linux/2013-07/87380.htm

Linux 中交换空间 (SWAP)应该分多大才好?
http://www.linuxidc.com/Linux/2013-05/84252.htm

Linux SWAP 分区建立及释放内存
http://www.linuxidc.com/Linux/2013-03/81890.htm

Linux SWAP 交换分区配置说明
http://www.linuxidc.com/Linux/2013-03/82008.htm

Ubuntu 12.04的SWAP设置
http://www.linuxidc.com/Linux/2013-03/80208.htm

简单来说,SWAP
交换分区是用来存放内存溢出来的数据。我们可以将内存想像成一个盆子,运行程序时的数据都被作为水放在内存这个盆子当中。如果你运行太多的应用程序,导致水过多而(内存这个)盆子已经装不下时,就会将多于部分的水装到
SWAP 交换分区当中。

从理论上讲,SWAP
交换分区增大了可以使用的内存空间,但事实并非如此。因为内存的数据交换速度是非常快的,而
SWAP 交换分区是把物理磁盘当成内存的载体,也就是说:虽然使用 SWAP
可以让我们运行更多或更大的应用程序了,但物理磁盘的数据交换速度远比不上物理内存,因此也就可能造成运行性能的下降。而对硬盘特别是
SSD 磁盘的频繁读写,也会造成磁盘寿命的缩短和性能下降。

其实,我们可以把 SWAP 交换分区比喻成 Windows 中的 pagefile
页面文件,但两者在技术实现上仍有许多差异。

Linux中查看swap的命令

可以用“cat /proc/swaps”、“swapon -s”、“free”等命令查看Swap分区的情况。

 

 

 

 

 

 

Python

 

[root@jay-linux ~]# swapon -s Filename Type Size Used Priority
/dev/sda3 partition 2096120 840 -1 [root@jay-linux ~]# cat
/proc/swaps Filename Type Size Used Priority /dev/sda3 partition 2096120
840 -1 [root@jay-linux ~]# free -m total used free shared buffers
cached Mem: 7872 7280 592 0 429 5964 -/+ buffers/cache: 886 6986 Swap:
2046 0 2046

1
2
3
4
5
6
7
8
9
10
11
[root@jay-linux ~]# swapon  -s
Filename                                Type            Size    Used    Priority
/dev/sda3                               partition       2096120 840     -1
[root@jay-linux ~]# cat /proc/swaps
Filename                                Type            Size    Used    Priority
/dev/sda3                               partition       2096120 840     -1
[root@jay-linux ~]# free -m
             total       used       free     shared    buffers     cached
Mem:          7872       7280        592          0        429       5964
-/+ buffers/cache:        886       6986
Swap:         2046          0       2046

根据上面的例子,我其实该分配4GB的Swap空间,这里演示的是2GB(可能不太符合Redhat的推荐值,因为本机使用内存量并不会太大,几乎没有使用Swap的情况)。

参考阅读:
swap的分配(包括LVM中的SWAP分配):

RHEL5中swap:

Related posts:

  1. Linux新建和增加Swap分区
  2. (KVM连载)4.2.4
    内存过载使用(overcommit)
  3. 如何挂载一个镜像文件(how to mount an image
    file)
  4. (KVM连载) 5.1.5 使用virtio_blk
    (半虚拟化磁盘) 

SWAP优先级

SWAP
交换分区会将内存中较少使用的数据移到磁盘当中,从而将更多的内存空间腾出来给其它的重要应用,也就是说:内存中较少使用的数据会被移动
SWAP 分区。

“较少使用”其实取决于“swappiness”阈值,在 Linux
中其实是一个可配置项。较高在 swappiness 值意味着数据更有可能被移到 SWAP
分区,较低的 swappiness 表示数据不太可能被移到 SWAP 分区。

Related posts:

  1. Linux新建和增加Swap分区
  2. (KVM连载)4.2.4
    内存过载使用(overcommit)
  3. 如何挂载一个镜像文件(how to mount an image
    file)
  4. (KVM连载) 5.1.5 使用virtio_blk
    (半虚拟化磁盘) 

SWAP与Linux休眠

最后还有一点需要注意:Linux 系统休眠的数据是存储到 SWAP
交换分区中的,也就是说如果系统没有配置 SWAP 交换分区,在 Linux
上是无法进行休眠的。

你是否需要SWAP分区呢?

 

奥门威尼斯网址 3你有必要为自己的
Linux 划一个 SWAP 分区吗?SWAP 交换分区对你来说是必要的吗?绝对不是!
Linux 系统不配置 SWAP 也可以运行得很好,是否需要划分 SWAP
分区也有如下几个优缺点:

优点:

  • 内存用完时,提供更多运行空间
  • 可以休眠

缺点:

  • SWAP对磁盘的占用设定好之后是固定的,无法动态调整
  • 增加了磁盘的读写次数和损耗几率
  • 不一定提高性能(详细解释见下文)

SWAP起反作用的情况

开启 SWAP 交换分区也并非问题能提升 Linux 性能,在某些情况下使用 SWAP
可能比不使用更糟。

如果你在一台1GB内存和5400转硬盘的上网本上安装了
Linux,只需要多打开几个浏览器标签并多开几个应用就会造成内存占完而开始使用
SWAP
交换分区。由于硬盘只有5400转,随后便开始出现性能瓶颈。这是因为硬盘转速太慢,而又有大量的数据需要访问到
SWAP
交换分区,所以会造成机器越来越慢。在此时,我们通常需要重启系统来完全清除
SWAP 的内容。

关于SWAP的建议

  • 如果你需要 Linux 休眠功能,那么当然就要划分 SWAP
    分区。该分区一般为你内存大小外加 10-25%
  • 如果你的内存小于4GB,并且希望得到小的性能提升(至少7200转磁盘),可以划分一个交换分区
  • 如果你的磁盘转速小于7200转,建议不要划分 SWAP 交换分区

更改Swappiness

我们可以直接在 /etc/sysctl.conf 文件中对 swappiness
值进行编辑,在该文件中找到 vm.swappiness
并对其值进行更改(最好是10),如果你没找到这个参数,可以直接在文件末尾添加:

1
vm.swappiness=10

 

奥门威尼斯网址 4该值主要表示我们希望
Linux 从内存与 SWAP 分区进行数据交换的强度,值为 10 则表示当内存占用到
90% 时开始将数据写入 SWAP。Ubuntu 的默认 swappiness 值为
60,这表示当内存占用到 40% 时开始将数据写入 SWAP。

本文永久更新链接地址:http://www.linuxidc.com/Linux/2014-05/102272.htm

奥门威尼斯网址 5

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图