虚拟机无法分配内存 virtual memory exhausted: Cannot allocate memory
1.内存交换空间(swap)的构建
安装Linux时一定需要的两个分区:根目录和swap(内存交换空间)。
swap的功能:在应付物理内存不足的情况下所造成的内存扩展记录的功能。
物理内存不足的时候,swap使用硬盘来暂时放置内存中的信息。
- 设置一个swap分区
- 创建一个虚拟内存的文件
1.1 使用物理分区构建swap
针对没有建立swap分区的情况,基本用不到。在已建立swap分区情况下,直接跳到第二部分(创建虚拟内存文件)。
- 分区
先用fdisk在磁盘中分个区出来作为swap。然后设置一下system ID(Linux的fdisk会默认将分区ID设为Linux的文件系统)。 - 格式化
利用“mkswap 设备文件名”新建swap格式分区(格式化该分区为swap格式)。 - 使用
“swapon 设备文件名”将此swap设备启动。 - 查看
“free”查看内存使用情况。
1.2 使用文件构建swap
- 使用dd命令在/tmp下新增一个128MB的文件
123sudo -s #进入root用户模式
dd
if
=/dev/zero of=/swap bs=1024 count=1M #创建一个大小为1G的文件/swap
ll -h /swap #可以看到已为/swap分配了1G
- 使用mkswap将/tmp/swap文件格式化为swap的文件格式
1mkswap /swap
- 使用swapon将/tmp/swap启动
12345free
#查看
swapon /swap #启动/swap
free
#查看
swapon -s #查看
echo
"/swap/swap swap swap defaults 0 0"
>> /etc/fstab #设置成永久生效
虽然现在已经生效,但是等下次虚拟机重启之后,该swap虚拟磁盘会失效。所以要加上最后一步。
-
虚拟机重启后若仍想使用,用root权限打开/swap即可使用。
12sudo -s
swapon /swap
- 使用swapoff关闭swap file
12swapoff /swap
free
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步