虛擬機無法分配內存 virtual memory exhausted: Cannot allocate memory


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
    

      


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM