操作系统

当前位置:金沙棋牌 > 操作系统 > 04中创建SWAP交换分区文件,Linux创建和增加Swap分

04中创建SWAP交换分区文件,Linux创建和增加Swap分

来源:http://www.logblo.com 作者:金沙棋牌 时间:2019-09-02 13:32

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设置

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

如何让服务器响应更快?如何避免应用出现内存不足的错误?最简单的方法就是增加交换空间。Swap是存储盘上的一块自留地,操作系统可以在这里暂存一些内存里放不下的东西。

如何在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读写比内存慢,但总比没有好,算是内存不够时的安全网。

如果没有swap,则服务器一旦内存不足,就会开始终止应用以释放内存,甚至会崩溃,这会让你丢失一些还没来得及保存的数据,或者造成当机。有些应用明确要求系统配置swap以确保数据访问的可靠性。

本文介绍如何在CentOS 7服务器上创建并启用swap文件。

注:swap通常在传统机械硬盘上表现更好,在SSD上使用swap可能会造成问题,尤其是硬件老化之后。所以,对于DigitalOcean以及其他使用基于SSD的云主机服务的用户,我们不推荐启用swap。这甚至会影响到跟你的虚拟机共用宿主机的其他用户。

对于DigitalOcean用户,提升性能的最佳方法就是更新Droplet。通常来说,升级后的主机表现都会有所提升,并且更不容易受到硬件问题的影响。

准备工作

首先,你需要一台CentOS 7服务器,配置过具备sudo权限的非root用户(配置过程可参考这个教程的第一到第四步骤)。

准备就绪后,以该用户名SSH到你的CentOS服务器上,准备安装swap文件。

检查系统的Swap信息

首先我们需要检查系统的存储,看看是否已经配置过swap。一个系统可以设置多个swap文件或分区,不过一般来说一个就够了。

使用swapon命令可以检查系统是否已经配置过swap,这是一个通用的swap工具。使用-s标签可列出当前存储设备上的swap使用情况:

swapon -s

如果该命令没有返回出结果,则代表该系统尚未配置过swap。

或者,我们也可以使用free工具来查看系统的整体内存使用情况,这里可以看到内存和swap的使用状态(显示单位为MB):

free -m

         total       used       free     shared    buffers     cached

Mem: 3953 315 3637 8 11 107
-/ buffers/cache: 196 3756
Swap: 0 0 4095
这里可以看到我们这个系统的total swap空间为0,即没有配置过swap。这与我们在swapon里看到的结果相符合。

检查可用的存储空间

通常,我们建立一个单独的分区作为swap。然而有时候由于硬件或软件的限制,新建分区的方式无法实现,这种情况下就可以建立一个swap文件来实现同样的功能。

开始之前,先检查一下磁盘的可用空间。输入如下指令:

df -h Filesystem Size Used Avail Use% Mounted on /dev/vda1 59G 1.5G 55G 3% / devtmpfs 2.0G 0 2.0G 0% /dev tmpfs 2.0G 0 2.0G 0% /dev/shm tmpfs 2.0G 8.3M 2.0G 1% /run tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
这里的-h标记是为了告诉dh将信息输出为对人类友好的格式,比如以MB或GB为单位输出空间使用和空余情况,而不是直接输出内存块的个数。

从第一行可以看到我们的存储分区上还有59GB的空间剩余,这足够我们操作了。(我这是一台中等规模的新建云主机,每个人的情况可能有很大不同。)

合适的swap空间是多大?关于这个问题有很多种选择,这取决于你的应用需求和你个人的偏好。一般来说,内存容量的两倍就是个不错的起点。

我的系统内存有4GB,如果设置8GB的swap会占据太多空间,所以我决定只设置4GB就好。

创建Swap文件

接下来我们将在文件系统上创建swap文件。我们要在根目录(/)下创建一个名叫swapfile的文件,当然你也可以选择你喜欢的文件名。该文件分配的空间将等于我们需要的swap空间。

最快捷的创建方式是fallocate命令,该命令能够创建一个预分配指定大小空间的文件。输入如下指令创建一个4GB的文件:

sudo fallocate -l 4G /swapfile

输入密码后,该swap文件将立即创建完毕。我们可以用ls命令检查文件大小:

ls -lh /swapfile -rw-r--r-- 1 root root 4.0G Oct 30 11:00 /swapfile
至此,我们的swap文件就创建完毕了。

启用Swap文件

现在我们已经有了swap文件,但系统还不知道应该使用该文件作为swap,这就需要我们告知系统将该文件格式化为swap并启用起来。

首先我们需要更改swap文件的权限,确保只有root才可读,否则会有很大的安全隐患。使用chmod命令进行权限操作:

sudo chmod 600 /swapfile

如此,该文件的读写都只有root才能操作。使用ls -lh命令检查一下:

ls -lh /swapfile -rw------- 1 root root 4.0G Oct 30 11:00 /swapfile

然后,使用如下命令告知系统将该文件用于swap:

sudo mkswap /swapfile Setting up swapspace version 1, size = 4194300 KiB no label, UUID=b99230bb-21af-47bc-8c37-de41129c39bf
现在,这个swap文件就可以作为swap空间使用了。输入如下命令开始使用该swap:

sudo swapon /swapfile
我们可以输入如下命令来确认一下设置是否已经生效:

swapon -s Filename Type Size Used Priority /swapfile file 4194300 0 -1
可以看到返回的结果中已经有我们刚才设置的swap。再使用free工具确认一下:

free -m total used free shared buffers cached Mem: 3953 315 3637 8 11 107 -/ buffers/cache: 196 3756 Swap: 4095 0 4095
至此,我们的swap已经设置完毕,操作系统会在需要的时候使用它。

使Swap文件永久生效

至此我们已经在系统中启用了swap文件,然而一旦系统重启后,服务器还不能自动启用该文件。要让系统在重启后自动生效swap,我们可以通过修改fstab文件来实现(这是一个管理文件系统和分区的表)。

用sudo权限打开该文件编辑:

sudo nano /etc/fstab

在文件末尾加入下面这行内容,告诉操作系统自动使用刚才创建的swap文件:

/swapfile swap swap sw 0 0

添加完毕后,保存退出。以后服务器每次重启都会检查该文件并自动启用swap。

更改Swap配置(可选)

有几个涉及swap的选项可能会影响到系统的性能表现。大部分情况下这些选项是可选的,具体要修改成什么样则取决于你的应用需求以及个人偏好。

Swappiness

swappiness参数决定了系统将数据从内存交换到swap空间的频率,数值设置在0到100之间,代表系统将数据从内存交换到swap空间的力度。

该数值越接近于0,系统越倾向于不进行swap,仅在必要的时候进行swap操作。由于swap要比内存慢很多,因此减少对swap的依赖意味着更高的系统性能。

该数值越接近于100,系统越倾向于多进行swap。有些应用的内存使用习惯更适合于这种情况,这也于服务器的用途有关。

输入如下命令查看当前的swappiness数值:

cat /proc/sys/vm/swappiness 30

CentOS 7默认设置了30的swappiness,这对于大部分桌面系统和本地服务器是比较中庸的数值。对于VPS系统而言,可能接近于0的值是更加合适的。

使用sysctl命令可以修改swappiness。比如将swappiness设为10:

sudo sysctl vm.swappiness=10 vm.swappiness = 10
本次修改将一直生效到下次重启前。如果希望永久修改该数值,则需要编辑sysctl配置文件:

sudo nano /etc/sysctl.conf
将以下内容粘贴到文件末尾:

vm.swappiness = 10
编辑完成后,保存退出,之后服务器每次重启的时候会将swappiness设置为该值。

缓存压力(Cache Pressure )

另一个可以考虑更改的配置项是vfs_cache_pressure,该配置项涉及特殊文件系统元文件条目的存储。对此类信息的频繁读取是非常消耗性能的,所以延长其在缓存的保存时间可以提升系统的性能。

通过proc文件系统查看缓存压力的当前设定值:

cat /proc/sys/vm/vfs_cache_pressure 100

这个数值是比较高的,意味着系统从缓存中移除inode信息的速度比较快。一个保守一些的数值是50,使用####sysctl命令进行设置:

sudo sysctl vm.vfs_cache_pressure=50 vm.vfs_cache_pressure = 50

这条命令仅在重启前有效。要让该设置永久有效,需要编辑sysctl配置文件:

sudo nano /etc/sysctl.conf
在文件末尾添加如下内容:

vm.vfs_cache_pressure = 50
保存退出,服务器就会在每次重启后都自动将缓存压力设置为50了。

总结

至此,我们的系统内存就获得了一些喘气的空间。有了swap空间可以有效避免一些常见的问题。

如果你仍然会遇到内存不足(OOM,out of memory)的错误信息,或者你的系统不能运行你需要的应用,那么最好的方法是优化你的应用配置或者升级你的服务器,不过配置swap空间也不失为一个灵活的节省方案。

本文由金沙棋牌发布于操作系统,转载请注明出处:04中创建SWAP交换分区文件,Linux创建和增加Swap分

关键词: