如何添加交换在CentOS 7

介绍

一个让你的服务器的响应,并防范内存不足,错误在应用程序中最简单的方法,就是增加一些交换空间。 交换就是操作系统可以暂时储存数据的存储驱动器上的一个区域,它可以不再保持在内存中。

这使您能够增加服务器在其工作内存中保留的信息量,并带有一些注意事项。 读取和写入交换比使用内存慢,但它可以为您的服务器内存不足提供良好的安全网。

没有交换,内存耗尽的服务器可能会开始杀死应用程序,释放内存,甚至崩溃。 这可能会导致您丢失未保存的数据或遇到停机。 为了确保可靠的数据访问,某些应用程序需要交换功能。

在本指南中,我们将介绍如何在CentOS 7服务器上创建和启用交换文件。

注意

尽管交换通常被推荐用于使用传统旋转硬盘驱动器的系统,但是使用SSD交换可能导致硬件随时间的退化问题。 由于这一考虑,我们不建议在DigitalOcean或任何其他使用SSD存储的提供商上启用交换。 这样做会影响您和您的邻居的底层硬件的可靠性。

如果您需要提高服务器的性能,我们建议您升级您的Droplet。 这将导致一般更好的结果,并将降低可能影响您的服务的硬件问题的可能性。

先决条件

在开始使用本指南之前,需要先完成几个步骤。

您将需要安装并使用具有非root用户配置一个CentOS 7服务器sudo权限。 如果你还没有这样做的是,你可以通过1-4步骤运行CentOS 7初始服务器设置向导来创建此帐户。

一旦拥有非root用户,您可以使用它来SSH到您的CentOS服务器,并继续安装交换文件。

检查系统的交换信息

在我们开始之前,我们应该看看我们的服务器的存储,看看我们是否已经有一些交换空间可用。 虽然我们可以有多个交换文件或交换分区,但通常应该足够了。

我们可以看到,如果该系统具有通过使用任何配置的交换swapon ,一个通用交换效用。 -s标志, swapon将显示交换使用情况和可用性我们的存储设备上的摘要:

swapon -s

如果命令未返回任何内容,则摘要为空,并且不存在交换文件。

检查交换空间的另一种方法是使用free实用工具,它向我们展示了系统的整体内存使用情况。 我们可以通过键入以下内容查看我们当前的内存和交换使用情况(以兆字节为单位):

free -m
             total       used       free     shared    buffers     cached
Mem:          3953        315       3637          8         11        107
-/+ buffers/cache:        196       3756
Swap:            0          0       4095

正如你所看到的,我们在系统的总交换空间为0,这与我们所看到的与swapon

检查可用存储空间

分配交换空间的典型方法是使用专用于任务的单独分区。 然而,由于硬件或软件的限制,改变分区方案并不总是可能的。 幸运的是,我们可以轻松地创建一个驻留在现有分区上的交换文件。

在我们这样做之前,我们应该知道我们当前的驱动器使用。 我们可以通过键入以下内容获取此信息:

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 ,输出驱动器的信息在一个人性化的阅读格式。 例如,而不是在一个分区输出内存块的原始数量, df -h会告诉我们在并购的空间使用情况和可用性(兆字节)或G(千兆字节)。

正如你可以看到第一行,我们的存储分区有59千兆字节可用,所以我们有相当多的空间来使用。 请记住,这是一个新鲜的,中型VPS实例,所以你的实际使用可能会有很大的不同。

虽然对于交换空间的适当大小有很多意见,但它取决于您的应用程序要求和您的个人偏好。 一般来说,等于或两倍的系统内存量是一个好的起点。

由于我的系统有4千兆字节的内存,并且加倍,从我的存储空间比我愿意放弃一个更大的块,我将创建一个4千兆字节的交换空间,以匹配我的系统的内存。

创建交换文件

现在我们知道了我们可用的存储空间,我们可以在我们的文件系统中创建一个交换文件。 我们将创建一个名为swapfile在我们的根目录( / )目录,但你可以将文件命名为别的东西,如果你喜欢。 该文件必须分配我们想要的交换文件的空间量。

创建一个交换文件的最快,最简单的方法是使用fallocate 此命令会立即创建一个预分配大小的文件。 我们可以通过键入以下内容创建一个4 GB的文件:

sudo fallocate -l 4G /swapfile

输入密码授权后sudo特权,交换文件将被创建几乎瞬间,并及时将退还给你。 我们可以验证正确的空间量用预留交换ls

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

如你所见,我们的交换文件是用正确的空间量创建的。

启用交换文件

现在,我们的文件被创建,但我们的系统不知道这应该用于交换。 我们需要告诉我们的系统将此文件格式化为交换,然后启用它。

在我们这样做之前,我们应该调整交换文件的权限,以便除root帐户以外的任何人都无法读取。 允许其他用户读取或写入此文件将是一个巨大的安全风险。 我们可以锁定的权限chmod

sudo chmod 600 /swapfile

这将只限制对root帐户的读取和写入权限。 我们可以验证交换文件已通过使用正确的权限ls -lh再次:

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

现在我们的交换文件更安全,我们可以告诉我们的系统通过键入以设置交换空间:

sudo mkswap /swapfile
Setting up swapspace version 1, size = 4194300 KiB
no label, UUID=b99230bb-21af-47bc-8c37-de41129c39bf

我们的交换文件现在可以用作交换空间。 我们可以通过键入以下内容开始使用它:

sudo swapon /swapfile

要验证过程是否成功,我们可以检查我们的系统是否现在报告交换空间:

swapon -s
Filename                Type        Size    Used    Priority
/swapfile               file        4194300 0     -1

此输出确认我们有一个新的交换文件。 我们可以使用free又实用程序来证实我们的发现:

free -m
             total       used       free     shared    buffers     cached
Mem:          3953        315       3637          8         11        107
-/+ buffers/cache:        196       3756
Swap:         4095          0       4095

我们的互换已成功设置,我们的操作系统将开始使用它的需要。

使交换文件永久

我们的交换文件目前已启用,但是当我们重新启动时,服务器不会自动启用该文件以供使用。 我们可以通过修改改变fstab文件,这是一个管理文件系统和分区表。

编辑与文件sudo在文本编辑器的权限:

sudo nano /etc/fstab

在文件底部,您需要添加一行,告诉操作系统自动使用您创建的交换文件:

/swapfile   swap    swap    sw  0   0

添加完行后,您可以保存并关闭该文件。 服务器将在每次启动时检查此文件,因此交换文件将从现在开始使用。

调整您的交换设置(可选)

有几个可以配置的选项,在处理交换时会影响系统的性能。 在大多数情况下,这些配置是可选的,您所做的更改将取决于您的应用程序需要和您的个人喜好。

快乐

swappiness参数确定系统如何频繁交换数据的内存用于交换空间。 这是介于0和100之间的值,表示将触发使用交换的内存使用的百分比。

值接近零时,系统将不会交换数据到驱动器,除非绝对必要。 记住,与交换文件的交互是“昂贵的”,因为它们比与内存的交互慢得多,并且读和写速度的差异可能导致应用程序性能的显着降低。 告诉系统不要依赖交换,通常会使你的系统更快。

接近100的值将尝试将更多的数据放入交换,以尽量保持更多的内存。 根据应用程序的内存配置文件或您使用服务器的内容,在某些情况下,这可能是更好的选择。

我们可以通过阅读看到当前swappiness值swappiness配置文件:

cat /proc/sys/vm/swappiness
30

CentOS 7默认为swappiness设置为30,这是大多数桌面和本地服务器的公平中间地带。 对于VPS系统,我们可能希望将其移动到更接近0。

我们可以通过设置swappiness为不同的值sysctl命令。 例如,要将swappiness设置为10,我们可以键入:

sudo sysctl vm.swappiness=10
vm.swappiness = 10

此设置将持续到下次重新启动。 为了使重新启动的设置仍然存在,我们就可以输出的行添加到我们的sysctl配置文件:

sudo nano /etc/sysctl.conf

将您的swappiness设置添加到文件底部:

vm.swappiness = 10

添加完行后,您可以保存并关闭该文件。 服务器现在将自动将swappiness设置为您在每次启动时声明的值。

缓存压力

另一个相关的价值,你可能需要修改的是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

同样,这只适用于我们当前的会话。 我们可以通过将它添加到我们的配置文件中来改变它,就像我们使用swappiness设置一样:

sudo nano /etc/sysctl.conf

在底部,添加指定新值的行:

vm.vfs_cache_pressure = 50

添加完行后,您可以保存并关闭该文件。 服务器现在将自动将缓存压力设置为您在每次启动时声明的值。

结论

按照本指南中的步骤,您将在内存使用方面为您的服务器提供一些Wheezy空间。 交换空间是非常有用的,以避免一些常见的问题。

如果您正在运行OOM(内存不足)错误,或者发现系统无法使用所需的应用程序,最佳解决方案是优化应用程序配置或升级服务器。 但是,配置交换空间可以给您更多的灵活性,并可以帮助您在不太强大的服务器上购买时间。

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏