虚拟内存 (swap)的基本概念:
虚拟内存 (swap):就是将硬盘规划出一个区 间,让内存的数据可以经由硬盘来读取。
swap工作原理是 :当物理内存不够时,则某些在内存当中所占的程序会暂时被 移动到 swap 中,让物理内存可以被更需要的程序来优先使用。因此,虚拟内存只是缓解作用,速度肯定没法和物理内存比,优化的最好办法就是买内存。另 外, 系统可以进入『休眠』模式,运作当中的程序状态会被纪录到swap去,以作为『唤醒』主机所用!最后有某些程序在运行时,本来就会利 用 swap 的特性来存放一些数据段,所以swap 是需要建立的!只是不需要太大。

swap 在被建立 时,是有限制的:

  • S wap有数量和大小限制,不过不同版本系统限制不一样。

  • 目前 x86_64 (64位) 最大内存支持到 64GB, 因此swap总量最大也是仅能达 64GB!

如何解决虚拟内存 (swap)不足的问题:
在使用linux虚拟机运行软件时,会碰到提示说“ insufficient virtual memory,please increase swap space”参考Linux虚拟机增加内存后扩展swap空间具体解决方法如下,但是亲身实践后发现,只有当次使用的时候会生效,重启软件后swap的控件大小又变为之前的大小,因此现在每次打开虚拟机都得进行设置。
另外注意sudo的命令是以root权限去执行的,按照我以下的操作,sudo可以是不用加的。

1.跳转到根目录,以root权限执行命令

cd ~
su root

2、查看现有memory及swap

free -m

运行结果如下:

         total       used       free     shared    buffers     cached
Mem:          1994       1898         96          0         66        106
-/+ buffers/cache:       1725        269
Swap:         1021       1021          0

3、用dd命令创建一个新增内存大小的文件,如1GB(1G=102410241=1048576),2G就是(1G=102410242=2097152),此处设置为2G大小。

hadoop@slave1:~$ sudo dd if=/dev/zero of=/var/swapfile1 bs=1024 count=2097152

运行结果是增加1G的:

[sudo] password for hadoop: 
1048576+0 records in
1048576+0 records out
1073741824 bytes (1.1 GB) copied, 12.8365 s, 83.6 MB/s

4、将新增文件设为Swap交换分区

hadoop@slave1:~$ sudo mkswap /var/swapfile1

运行结果是增加1G的:

Setting up swapspace version 1, size = 1048572 KiB
no label, UUID=cd088b86-b1c5-4dca-84fa-a059b368bf56

5、激活并使用/var/swapfile1交换分区

hadoop@slave1:~$ sudo swapon /var/swapfile1

6、设置系统启动后自动激活交换分区

hadoop@slave1:~$ sudo vi /etc/fstab

运行结果:

# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# / was on /dev/sda1 during installation
UUID=4754790a-7c18-40d0-8c03-ee2dcea12a55 /               ext4    errors=remount-ro 0       1
# swap was on /dev/sda5 during installation
UUID=01b709d6-22cf-4518-9ad4-45544c71050e none            swap    sw              0       0
/dev/fd0        /media/floppy0  auto    rw,user,noauto,exec,utf8 0       0
#新增Swap交换分区配置
/var/swapfile1  swap  swap  defaults  0   0

7、重启Linux系统,使用free -m查看swap大小,使用swapon -s查看swap状态

此步可以不执行,执行完上面操作,swap的大小已经变为自己想要的了

hadoop@slave1:~$ free -m

运行结果:

             total       used       free     shared    buffers     cached
Mem:          3002        778       2224          3         82        438
-/+ buffers/cache:        257       2745
Swap:         2045          0       2045
hadoop@slave1:~$ swapon -s

运行结果:

Filename                                Type            Size    Used    Priority
/dev/sda5                               partition       1046524 0       -1
/var/swapfile1                          file            1048572 0       -2
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐