详解如何在Ubuntu 16.04上增加Swap分区

时间:2019-06-14 12:53来源:计算机教程
前言 Ubuntu Linux创建和增加Swap分区教程 问:我是一个Ubuntu 14.04LTS版本的新手。我需要一块额外的swap文件来提高我Ubuntu服务器的性能。我怎样才能通过SSH连接用相关命令为我的Ubuntu14.04

前言

Ubuntu Linux创建和增加Swap分区教程

问:我是一个Ubuntu 14.04 LTS版本的新手。我需要一块额外的swap文件来提高我Ubuntu服务器的性能。我怎样才能通过SSH连接用相关命令为我的Ubuntu 14.04 LTS 增加一块swap分区。

Swap文件除了作为一块磁盘存储以提高Ubuntu系统的内纯使用效率意外,什么都不是,在本教程,你将会学到如何在Ubuntu系统上去创建以及使用Swap文件。

在Ubuntu服务器版或者桌面版,什么是Swap文件?

作为系统管理员是很有必要在系统安装完成后为其添加额外的swap文件,而swap文件也可以让Ubuntu 去使用硬盘去提高虚拟内存。

Virtual Memory = RAM Swap space/file

Virtual Memory (1GB) = Actual RAM (512MB) Swap space/file (512MB)

当Ubuntu服务器运行时内存不足,它交换一段RAM(比如foo空闲程序)到硬盘(交换空间)释放内存的其他程序。然后当你需要这个程序(比如foo再次),内核将会交换Foo程序,它会通过RAM里的里一个程序改变位置。

在Ubuntu添加swap分区的步骤

打开一个Terminal应用程序或者使用SSH客户端远程连接服务器,通过sudo命令登陆为root用户

# sudo –s

创建swap分区命令

在Ubuntu上输入下面命令创建2GB swap分区

# dd if=/dev/zero of=/swapfile bs=1G count=2

返回结果

records in

2 0 records out

2147483648 bytes (2.1 GB) copied, 20.2256 s, 106 MB/s

验证在服务器上以创建的分区

# ls -lh /swapfile

返回结果

-rw-r--r-- 1 root root 2.0G Oct 29 14:07 /swapfile

用fallocate命令创建swap分区

除了dd命令,还可以更快的fallocate命令创建swap分区。如下:

# fallocate -l 1G /swapfile-1
# ls -lh /swapfile-1

返回结果

-rw-r--r-- 1 root root 1.0G Oct 29 14:11 /swapfile-1

保护swap分区

处于安全角度,输入下面的chmod和chown命令保护以及设置正确文件权限

# chown root:root /swapfile
# chmod 0600 /swapfile
# ls -lh /swapfile

Setting up swapspace version 1, size = 2097148 KiB

no label, UUID=10231c61-6e55-4dd3-8324-9e2a892e7137

返回结果

-rw------- 1 root root 2.0G Oct 29 14:07 /swapfile

一个所有人可读的swap分区是一个重大的本地漏洞。上面的命令确保只有root用户有可读可写权限。

启动swap分区

# mkswap /swapfile
返回结果

Setting up swapspace version 1, size = 2097148 KiB

no label, UUID=10231c61-6e55-4dd3-8324-9e2a892e7137

最终激活swap分区
# swapon /swapfile

 

 在Ubuntu上验证并设置

输入以下命令

# swapon –s

返回结果

Filename            Type        Size    Used    Priority

/dev/sda5                              partition 3998716 704 -1

/swapfile                              file      2097148 0  -2

你也可以运行下面命令去验证创建的交换分区以及它的用法

怎么在Ubuntu上禁用swap分区?

你可以使用以下命令

# swapoff /swapfile
# swapon –s

更新/etc/fstab 文件

你需要在重启后确保swap分区在服务器在线后启用,编辑/etc/fstab文件。输入:

# vi /etc/fstab

增加一行,如下:

/swapfile none            swap    sw              0      0

保存并退出

调整swap分区,即调整虚拟分区

你可以调整下面的两个选项

  1. 虚拟运存控制(swappiness)
  2. 最小释放字节数(min_free_kbytes)
  3. 虚拟文件缓存压力(vfs_cache_pressure)

 

怎样在Ubuntu上设置swapiness

语法如下:

# sysctl vm.swappiness=VALUE
# sysctl vm.swappiness=20

或者面

# echo VALUE > /proc/sys/vm/swappiness
# echo 30 > /proc/sys/vm/swappiness

在/proc/sys/vm/swapiness的值控制着内核怎样强制的交换内存空间,更高的值对应着增加强制性强度,相反更低的值对应着减小强制性强度。默认的值是60。为了永久生效在/etc/sysctl.conf文件里加入一行命令,如下:

echo 'vm.swappiness=30' >> /etc/sysctl.conf

如果针对数据库,如Oracle或者MySQL,小编建议你设置swapiness的值为10。需要更多的信息请访问the official Linux kernel virtual memory

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

如何扩展/删除SWAP分区

在OpenStack虚拟机实例中创建SWAP分区的一种方法

Linux 中交换空间 (SWAP)应该分多大才好?

Linux SWAP 分区建立及释放内存

Linux SWAP 交换分区配置说明

Ubuntu 12.04的SWAP设置

http://www.bkjia.com/Linuxjc/935921.htmlwww.bkjia.comtruehttp://www.bkjia.com/Linuxjc/935921.htmlTechArticleUbuntu Linux创建和增加Swap分区教程 问:我是一个Ubuntu 14.04 LTS版本的新手。我需要一块额外的swap文件来提高我Ubuntu服务器的性能。我怎样才能...

提高服务器响应速度和防止应用程序内存不足错误的最简单方法之一是添加一些交换空间。 在本指南中,我们将介绍如何将交换文件添加到Ubuntu 16.04服务器。

但是,请注意:

尽管swap区通常建议用于使用传统旋转硬盘驱动器的系统,但使用与SSD交换可能会导致随着时间的推移硬件退化问题。 由于这个考虑,我们不建议在DigitalOcean或任何其他使用SSD存储的供应商上启用swap分区。 这样做可能会影响到您和您的邻居的底层硬件的可靠性。 本指南仅供可能在其他地方有使用旋转磁盘系统的用户参考。如果您需要改善DigitalOcean服务器的性能,我们建议升级您的Droplet,以致于有更好的体验,并且会降低影响您的服务的硬件问题的可能性。

1.首先来了解一下什么是Swap

Swap分区(也称交换分区)是硬盘上的一个区域,被指定为操作系统可以临时存储数据的地方,这些数据不能再保存在RAM中。 基本上,这使您能够增加服务器在工作“内存”中保留的信息量,但有一些注意事项,主要是当RAM中没有足够的空间容纳正在使用的应用程序数据时,将使用硬盘驱动器上的交换空间。

写入磁盘的信息将比保存在RAM中的信息慢得多,但是操作系统更愿意将应用程序数据保存在内存中,并使用交换旧数据。 总的来说,当系统的RAM耗尽时,将交换空间作为回落空间可能是一个很好的安全网,可防止非SSD存储系统出现内存不足的情况。

2.检查系统的交换信息

在开始之前,我们可以检查系统是否已经有一些可用的交换空间,可能有多个交换文件或交换分区,但通常应该是足够的。我们可以通过如下的命令来查看系统是否有交换分区:

$ sudo swapon --show

如果没有任何结果或者没有任何显示,说明系统当前没有可用的交换空间。也可以使用free工具来验证当前确实没有可用的交换分区。

$ free -h

输出结果:

              total        used        free      shared  buff/cache   available
Mem:           488M         36M        104M        652K        348M        426M
Swap:            0B          0B          0B

可以看到这里的”swap”行均为0,也就是说系统上没有交换处于活动状态。

3.检查硬盘驱动器分区上的可用空间

为swap分配空间的最常见方式是使用专门用于具体某个任务的单独分, 但是,改变分区方案并不是一定可行的,我们只是可以轻松地创建驻留在现有分区上的交换文件。

在开始之前,我们应该通过输入以下命令来检查当前磁盘的使用情况:

$ df -h

 输出结果:

Filesystem      Size  Used Avail Use% Mounted on
udev            238M     0  238M   0% /dev
tmpfs            49M  624K   49M   2% /run
/dev/vda1        20G  1.1G   18G   6% /
tmpfs           245M     0  245M   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           245M     0  245M   0% /sys/fs/cgroup
tmpfs            49M     0   49M   0% /run/user/1001

在这种情况下,/dev下的设备是我们的磁盘。在这个例子中我们有足够的空间(只使用了1.1G),当然,您的使用情况可能会有所不同。

尽管对于交换空间的适当大小有许多意见,但这取决于您的个人偏好和应用程序要求。 一般来说,相当于系统内存量的两倍或者两倍是一个很好的起点。 另一个很好的经验是,如果你只是把它用作RAM备用,那么swap分区的大小尽量不要超过4 GB。

4.创建swap文件

现在我们知道了可用的硬盘空间,那我们就可以在文件系统中创建一个交换文件,我们将在我们的根(/)目录下创建一个名为swapfile的文件。创建交换文件最好的方法是使用fallocate命令,这个命令能立即创建一个预分配大小的文件。由于本示例中的服务器RAM的大小为512MB,因此我们将在本教程中创建一个1 GB大小的文件,并适当加以调整,以满足您自己的服务器的需求:

$ sudo fallocate -l 1G /swapfile

创建完成之后,我们可以通过这个命令来验证是否保留了正确的交换空间:

$ ls -lh /swapfile

显示结果:

$ -rw-r--r-- 1 root root 1.0G Apr 25 11:14 /swapfile

这就说明我们的文件已经创建了正确的空间大小。

5.启用交换文件

现在我们有一个1 GB大小的文件,我们需要把它变成交换空间

首先,我们需要锁定文件的权限,以便只有拥有root权限的用户才能读取文件内容,这可以防止普通用户能够访问该文件,以免造成重大的安全隐患。

锁定文件的root权限:

$ sudo chmod 600 /swapfile

验证权限:

$ ls -lh /swapfile

显示结果:

-rw------- 1 root root 1.0G Apr 25 11:14 /swapfile

可以看到,只有root用户启用了读写标志。

接下来,我们可以通过以下命令将文件标记为交换空间

$ sudo mkswap /swapfile

显示结果:

Setting up swapspace version 1, size = 1024 MiB (1073737728 bytes)
no label, UUID=6e965805-2ab9-450f-aed6-577e74089dbf

标记文件之后,我们可以启用该交换文件,让我们的系统开始使用它:

$ sudo swapon /swapfile

可以通过以下命令验证交换空间是否可用:

$ sudo swapon --show

显示结果:

编辑:计算机教程 本文来源:详解如何在Ubuntu 16.04上增加Swap分区

关键词: