Linux虚拟机增加内存后扩展swap空间( insufficient virtual memory,please increase swap space)
在使用linux虚拟机运行软件时,会碰到提示说“ `insufficient virtual memory,please increase swap space`”参考[Linux虚拟机增加内存后扩展swap空间]具体解决方法如下,但是亲身实践后发现,只有当次使用的时候会生效,重启软件后swap的控件大小又变为之前的大小,因此现在每次打开虚拟机都得进行设置。...............
虚拟内存 (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
更多推荐
所有评论(0)