小内存服务器?了解下虚拟内存

随着现在网络的发展,要看一下“外面的世界”,还是比较简单的。
但是因为一些安全隐私方面,那些公共的配置有些信不过,所以就得自己去搭建,而搭建则需要服务器。一些要求不高的则把目光放在了入门级服务器上,这种服务器其他方面都不错就是有一点问题————内存小。

当我们在折腾的时候会发现,服务器在运行大型程序时会频繁的崩溃,可是又不想让这台服务器只运行“出去看看”这项服务。
这个时候虚拟内存就派上用场了。

虚拟内存在维基百科上是这么解释的

虚拟内存是计算机系统内存管理的一种技术。它使得应用程序认为它拥有连续可用的内存(一个连续完整的地址空间),而实际上,它通常是被分隔成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上,在需要时进行数据交换。与没有使用虚拟内存技术的系统相比,使用这种技术的系统使得大型程序的编写变得更容易,对真正的物理内存(例如RAM)的使用也更有效率。

注意:虚拟内存不只是“用磁盘空间来扩展物理内存”的意思——这只是扩充内存级别以使其包含硬盘驱动器而已。把内存扩展到磁盘只是使用虚拟内存技术的一个结果,它的作用也可以通过覆盖或者把处于不活动状态的程序以及它们的数据全部交换到磁盘上等方式来实现。对虚拟内存的定义是基于对地址空间的重定义的,即把地址空间定义为“连续的虚拟内存地址”,以借此“欺骗”程序,使它们以为自己正在使用一大块的“连续”地址。

现在开始教程

要求如下:

  • 服务器系统:centos/debian/ubuntu
  • x虚拟化架构:KVM,Hyper-V,VMware

首先以root用户登录服务器,创建交换文件目录

1
mkdir -p /swap

创建一个交换文件,赋予文件权限。注意,文件不能超过实际内存大小

1
2
3
4
5
6
7
8
9
10
11
12
13
cd /swap   #改变目录到 /swap

dd if=/dev/zero of=swapfile bs=1MB count=128
# 创建一个128MB虚拟内存,物理内存小于256MB用这个

dd if=/dev/zero of=swapfile bs=1MB count=384
# 创建一个384MB虚拟内存,物理内存大于256MB,但小于512MB用这个

dd if=/dev/zero of=swapfile bs=1MB count=512
# 创建一个512MB虚拟内存,物理内存在大于512MB用这个

chmod 600 ./swapfile #赋予交换文件600权限

建立交换分区并启用

1
2
3
4
5
mkswap ./swapfile # 建立交换分区

swapon ./swapfile # 启用交换分区


设置开机自加载交换分区

1
2
echo "/swap/swapfile swap swap defaults 0 0" >>/etc/fstab


完成后重启服务器即可。