Ubuntu Linux创建和添加交换文件教程

时间:2020-01-09 10:45:37  来源:igfitidea点击:

如何添加额外的交换空间来提高我的Ubuntu服务器性能。如何在基于ssh的会话上使用命令行在Ubuntu Linux 14.04 LTS上添加交换空间? 交换空间只不过是用于增加Ubuntu Linux服务器上可用内存量的磁盘存储。
在本教程中,您将学习如何在Ubuntu Linux服务器上创建和使用交换文件。

什么是Ubuntu服务器或者桌面系统上的交换文件?

作为系统管理员,有必要在服务器上安装后添加更多交换空间。
交换文件允许Ubuntu Linux使用硬盘来增加虚拟内存。

Virtual Memory = RAM + Swap space/file

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

当Ubuntu服务器的内存不足时,它将一部分RAM(例如foo之类的空闲程序)交换到硬盘(交换空间)上,以释放内存供其他程序使用。
然后,当您需要该程序(再次说foo)时,内核换出了foo程序,它会与RAM中的另一个程序一起更改位置。

在Ubuntu Linux上添加交换文件的过程

打开终端应用程序或者使用ssh客户端进入远程服务器。
使用sudo命令以root用户身份登录:

sudo -s

创建交换文件命令

执行以下命令在Ubuntu上创建一个2GB的交换文件:

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

输出示例:

2+0 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命令而不是dd命令创建交换空间

可以使用更快的fallocate命令代替dd命令,如下所示创建交换文件:

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

输出示例:

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

保护交换文件

出于安全原因,执行以下chmod命令和chown命令以保护和设置正确的文件权限:

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

输出示例:

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

全球可读的交换文件是一个巨大的本地漏洞。
以上命令确保只有root用户才能读取和写入文件。

打开交换文件

首先,如下使用mkswap命令在Ubuntu上启用交换空间:

# mkswap /swapfile

输出示例:

Setting up swapspace version 1, size = 2097148 KiB
no label, UUID=10231c61-6e55-4dd3-8324-9e2a892e7137

最后,激活交换文件,执行:

# swapon /swapfile

在Ubuntu上验证新的交换文件和设置

输入以下命令

# swapon -s

输出示例:

Filename				Type		Size	Used	Priority
/dev/sda5                               partition	3998716	704	-1
/swapfile                               file		2097148	0	-2

您还可以运行以下命令来验证交换文件及其用法:

# grep -i --color swap /proc/meminfo
# top
# htop
# atop

如何在Ubuntu上禁用swapfile?

您需要使用swapoff命令,如下所示:

# swapoff /swapfile
# swapon -s

更新/etc/fstab文件

您需要确保在重启后服务器联机时启用交换文件。
编辑/etc/fstab文件,执行:

# vi /etc/fstab

追加以下行:

/swapfile none            swap    sw              0       0

保存并关闭文件。

调整交换文件,即调整虚拟内存

您可以调整以下两个设置:

  • 交换性
  • min_free_kbytes
  • vfs_cache_pressure

如何在Ubuntu服务器上设置swappiness?

语法为:

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

或者

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

"/proc/sys/vm/swappiness"文件中的值控制着内核将多大程度地交换内存页面。
较高的值会增加攻击性,较低的值会降低攻击性。
默认值为60。
要使更改永久生效,请将以下行添加到/etc/sysctl.conf中:

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

对于Oracle或者MySQL之类的数据库服务器,建议您将swappiness值设置为10。