記一次Linux虛擬機分配內存不足的處理方案


記一次Linux虛擬機硬盤空間不足的處理方案


**起因:**公司的服務器是windows的,而我需要一個基於Linux的dev環境,於是用vmvare創建了一個centos7的系統實例,里面安裝mysql5.7作為dev環境數據庫,安裝在根目錄,后來由於數據量激增,將根目錄塞滿了,導致mysql無法繼續增加數據。
環境: Centos7-64
目的:解決根目錄空間不足問題,並且不損壞任何數據。

  • 自己折騰了一天了,由於水平有限,跳了很多坑。坑就不寫了,下面寫解決方案。

一. 找到問題

  • 使用命令:df -hT查看當前文件系統各種信息。

    這里顯示我的根目錄已用100%,這就是我這次遇到的問題所在。

對根目錄擴容和對非根目錄擴容是兩個概念,因為普通目錄可以 先殺死目錄下進程–>將分區移除掛載–>將分區擴容–>重新掛載–>恢復進程但是根目錄不行。根目錄里都是系統核心進程。Linux

二. 用vmvare給虛擬機擴容

  • 關閉虛擬機中的centos7的系統實例
  • 右鍵–設置–參照下圖
    這里寫圖片描述
  • 但是額外分的這部分存儲,還沒有應用到虛擬的Centos7實例中。

三. 分析

  • df -hT命令可以看到根目錄被掛載的分區是:/dev/sda3
  • 使用命令:fdisk -l查看磁盤信息,這里我們重點關注/dev/sda3的system這個屬性,我這里是Linux,表示是Linux默認的磁盤管理機制。
    這里寫圖片描述
  • 觀察這一點很重要,據我所知,Linux默認的磁盤管理機制這種沒辦法直接動態擴容,除非殺死/dev/sda3這個分區的掛載點也就是根目錄里面運行的進程。
  • 如果是Linux LVM,恭喜你,非常容易擴容,具體操作自行百度,網上很多,簡單的操作幾個步驟即可。

鑒於以上分析。很明顯,我在不損失任何數據的情況下,沒辦法對根目錄擴容,這時候就准備換個思路。既然是mysql的數據量過大造成根目錄滿,那我可以新建一個文件夾,然后新建一個分區,將這個分區掛載到這個文件夾上,然后將mysql的數據文件搬過來不就行了。

四. 新建分區,格式化分區,新建文件夾,掛載

  • 使用fdisk /dev/sda命令,然后輸入p按回車,展示當前分區列表,輸入m按回車,可以查看help操作,一看就懂的。【注意:我這里命令中的/dev/sda是分區名,請不要照抄,自行對號入座
  • 使用n新建分區,分區號默認是當前已有最大分區號+1,分區start,分區end都選默認就行。我這里新建的是sda4分區。【注意:這里的前提是你的主分區或者拓展分區還有空位置
  • 使用w保存你的操作,使用q退出
  • 如果分區順利建完,可以用fdisk -l看到你剛剛建的分區了
  • 分區格式化:首先,通過df -hT查看分區的文件系統類型,因為我要轉移的mysql數據文件來自/dev/sda3分區,它的類型是xfs,所以sda4分區就要使用xfs格式格式化了,格式化命令mkfs -f xfs /dev/sda4
  • 新建文件夾:mkdir /usr/mysql-data,【這里你可以自定義】
  • 掛載:mount /dev/sda4 /usr/mysql-data

五. 將新建的分區,設置為開機自動掛載

  • 查看分區id:ls -l /dev/disk/by-uuid/
  • 修改vim /etc/fstab, 最小碼新寫一行,如下【uuid請換掉
UUID=4366aadb-6ee8-46cd-8708-b4e2f70b2860 /usr/mysql-data xfs defaults 0 0 
  • 1
  • 重啟:reboot
  • 使用df -hT查看,可以看到新建的分區掛載到新建的文件夾上了,完美,可以繼續下一步

這一節很重要,另外,fstab里面的格式一定要對齊

六. 對mysql的一些操作

  • 通知相關人員,我要暫時關閉mysql
  • 停止mysql:systemctl stop mysqld
  • copy文件:```cp -r /var/lib/mysql /usr/mysql-data/mysql``
  • 修改/etc/my.cnf文件中的兩個屬性,如下
#datadir=/var/lib/mysql datadir=/usr/mysql-data/mysql #socket=/var/lib/mysql/mysql.sock socket=/usr/mysql-data/mysql/mysql.sock 
  • 1
  • 2
  • 3
  • 4
  • 啟動mysql:systemctl start mysqld
  • 嘗試使用命令行或者navicat等連接mysql查看是否能連接,數據庫是否缺失

七. 收尾工作

    • 刪除/var/lib/mysql下面的內容:rm -rf /var/lib/mysql/
    • 查看空間:df -hT,看根目錄是否有空間了
      這里寫圖片描述
    • 再次確認無誤后,通知相關人員,mysql可以繼續使用了。


免責聲明!

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



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