您的位置:首页 > 其它

虚拟机无法分配内存 virtual memory exhausted: Cannot allocate memory

2020-02-02 14:28 1661 查看

1.内存交换空间(swap)的构建

安装Linux时一定需要的两个分区:根目录和swap(内存交换空间)。

swap的功能:在应付物理内存不足的情况下所造成的内存扩展记录的功能。

物理内存不足的时候,swap使用硬盘来暂时放置内存中的信息。

  • 设置一个swap分区
  • 创建一个虚拟内存的文件

1.1 使用物理分区构建swap

针对没有建立swap分区的情况,基本用不到。在已建立swap分区情况下,直接跳到第二部分(创建虚拟内存文件)。

  1. 分区
    先用fdisk在磁盘中分个区出来作为swap。然后设置一下system ID(Linux的fdisk会默认将分区ID设为Linux的文件系统)。
  2. 格式化
    利用“mkswap 设备文件名”新建swap格式分区(格式化该分区为swap格式)。
  3. 使用
    swapon 设备文件名”将此swap设备启动。
  4. 查看
    free”查看内存使用情况。

1.2 使用文件构建swap

  • 使用dd命令在/tmp下新增一个128MB的文件
    sudo -s     #进入root用户模式
    dd if=/dev/zero of=/swap bs=1024 count=1M #创建一个大小为1G的文件/swap
    ll -h /swap    #可以看到已为/swap分配了1G
  • 使用mkswap将/tmp/swap文件格式化为swap的文件格式
    mkswap /swap
  • 使用swapon将/tmp/swap启动
    free          #查看
    swapon /swap    #启动/swap
    free          #查看
    swapon -s          #查看
    echo "/swap/swap    swap    swap  defaults    0 0"  >> /etc/fstab    #设置成永久生效

    虽然现在已经生效,但是等下次虚拟机重启之后,该swap虚拟磁盘会失效。所以要加上最后一步。

  • 虚拟机重启后若仍想使用,用root权限打开/swap即可使用。

    sudo -s
    swapon /swap
  • 使用swapoff关闭swap file
    swapoff /swap
    free

      

转载于:https://www.cnblogs.com/ettie999/p/8143712.html

  • 点赞
  • 收藏
  • 分享
  • 文章举报
a646559381 发布了0 篇原创文章 · 获赞 0 · 访问量 361 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: