如何在Ubuntu 16.04上启用或添加交换空间
在本文中,我们将学习如何在Ubuntu16.04上启用或添加交换分区,实际上,交换将通过保护应用程序的内存不足错误来增加服务器响应的机会,默认情况下,Ubuntu将不会启用交换空间。我们将学习如何为Ubuntu16.04服务器添加或启用交换文件。
交换是可以处理临时数据的位置或文件,这些数据不是RAM立即需要的,但是将用于增加服务器可以为其工作过程处理的信息量,并且当没有RAM时将使用交换数据。可供应用保留。
检查交换信息
在开始之前,我们将首先检查服务器或系统上可用的交换空间。
我们可以使用以下命令查看系统是否具有交换分区
$ free -h total used free shared buffers cached Mem: 2.0G 1.9G 80M 11M 156M 1.0G -/+ buffers/cache: 738M 1.2G Swap: 0B 0B 0B
我们也可以运行以下命令,但是如果交换分区不存在,则看不到任何信息。
$ sudo swapon -s Filename Type Size Used Priority
在上面的命令中,我们可以看到该服务器未启用或未配置该交换以在此计算机上配置交换。我们将首先使用以下命令检查可用磁盘空间–
$ df –h Filesystem Size Used Avail Use% Mounted on udev 996M 4.0K 996M 1% /dev tmpfs 201M 396K 200M 1% /run /dev/xvda1 7.8G 5.8G 1.7G 79% / none 4.0K 0 4.0K 0% /sys/fs/cgroup none 5.0M 0 5.0M 0% /run/lock none 1001M 0 1001M 0% /run/shm none 100M 0 100M 0% /run/user
我们可以在/dev/xvda1上看到一些空间,或者可以附加新磁盘驱动器以用于交换分区。在这种情况下,我们将/dev/xvda1用于交换分区。
创建交换文件
我们知道磁盘空间的可用性,因此可以继续在文件系统上创建交换文件。要创建交换文件,我们可以使用“fallocate”一个包或实用程序,它可以立即创建一个预先分配的大小。由于服务器上的空间很小,因此将创建一个512MB大小的交换文件,以在下面创建一个交换文件。
$ sudo fallocate -l 512M /swapfile
并检查交换文件,我们将使用以下命令
$ ls -lh /swapfile -rw-r--r-- 1 root root 512M Sep 6 14:22 /swapfile
启用交换以使用交换文件
之前,我们要启用交换功能,我们需要修复文件权限,除root以外,其他任何人都可以读取/写入文件,以下是更改文件权限的命令。
$ sudo chmod 600 /swapfile
一旦更改了权限,我们将检查以下文件,并执行以下命令以检查交换文件权限。
$ ls -lh /swapfile -rw------- 1 root root 512M Sep 6 14:22 /swapfile
现在,我们将使用以下命令将该文件作为交换空间–
$ sudo mkswap /swapfile Setting up swapspace version 1, size = 524284 KiB no label, UUID=d02e2bbb-5fcc-4c7b-9f85-4ae75c9c55f9
现在,我们将使用以下命令启用交换
$ sudo swapon –s Filename Type Size Used Priority /swapfile file 524284 0 -1
我们还可以使用免费的–h命令查看交换分区
$ free –h total used free shared buffers cached Mem: 2.0G 1.8G 110M 11M 189M 940M -/+ buffers/cache: 759M 1.2G Swap: 511M 0B 511M
进行交换分区/文件永久启动
像上述步骤一样,我们已经创建了交换分区,并且可以使用该交换空间作为临时内存,并且一旦重新启动计算机,然后交换,设置将丢失,不再需要永久使用此交换文件,我们将进行交换永久归档。
即使重新启动计算机,我们也将编辑/etc/stab并添加信息以安装交换文件。
$ sudo vi /etc/fstab
将以下行添加到现有文件。
/swapfile none swap sw 0 0
为了更好地使用交换内存,我们可以做一些调整。
缓存压力设置
我们可以看到,通过使用以下命令,当前的Cache压力设置
$ cat /proc/sys/vm/vfs_cache_pressure 100
当前设置将更快地删除缓存信息,我们将使用以下命令将这些设置设置为60
$ sudo sysctl vm.vfs_cache_pressure=60 vm.vfs_cache_pressure = 60
由于此设置是临时的,一旦系统重新启动,所有此设置将丢失,因此使其永久编辑/etc/sysctl.conf文件并添加以下行“vm.vfs_cache_pressure=60”
$ sudo vi /etc/sysctl.conf # Accept ICMP redirects only for gateways listed in our default # gateway list (enabled by default) # net.ipv4.conf.all.secure_redirects = 1 # # Do not send ICMP redirects (we are not a router) #net.ipv4.conf.all.send_redirects = 0 # # Do not accept IP source route packets (we are not a router) #net.ipv4.conf.all.accept_source_route = 0 #net.ipv6.conf.all.accept_source_route = 0 # # Log Martian Packets #net.ipv4.conf.all.log_martians = 1 # vm.vfs_cache_pressure=60
“Swappines”设置
swappines是配置设置,用于定义交换数据共享或移动到交换空间的频率。swappiness的值是0到100%,接近零的值将定义交换数据的交换性,除非需要移动它,而接近100的值将更频繁地将日期放入交换中以保持RAM更多的空闲。
我们可以使用以下命令查看当前设置
$ cat /proc/sys/vm/swappiness 60
如果在桌面上,我们可以使用此swappines设置,但是我们正在配置服务器,则swappiness应该接近10-20。
这里我们将swappiness设置为20,下面是将swappiness设置为20的命令
$ sudo sysctl vm.swappiness=20 vm.swappiness = 20
而且该设置是临时的,如果我们需要永久添加此swappiness设置,则需要编辑/etc/sysctl.conf并将以下行添加到文件末尾
$ sudo vi /etc/sysctl.conf # Accept ICMP redirects only for gateways listed in our default # gateway list (enabled by default) # net.ipv4.conf.all.secure_redirects = 1 # # Do not send ICMP redirects (we are not a router) #net.ipv4.conf.all.send_redirects = 0 # # Do not accept IP source route packets (we are not a router) #net.ipv4.conf.all.accept_source_route = 0 #net.ipv6.conf.all.accept_source_route = 0 # # Log Martian Packets #net.ipv4.conf.all.log_martians = 1 # vm.vfs_cache_pressure=50 vm.swappiness=10
在上面的文章中,设置和配置我们可以解决服务器的内存不足问题。我们可以在其中创建交换分区,还可以调整交换设置以更准确地使用交换分区。