Ubuntu Linux创建和添加交换文件教程
如何添加额外的交换空间来提高我的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。