===============================================
2019/4/2_第2次修改 ccb_warlock
更新說明:
2019/4/2:移除了不必要的vim安裝
===============================================
背景:檢查gitlab備份服務器時,發現最近幾天的備份文件沒有根據設置上傳到這台服務器。
由於這台服務器較新,除了接收的備份文件外並沒有部署其他文件,所以最先可以排除inode不夠的可能,但是備份文件大概也就40G+,這個服務器明明分配了100G的空間。
於是我在gitlab所在的服務器上,手動運行一次備份文件命令后,出現了“No space left on device”。
空間不足?於是我在備份服務器上查看空間占用。
df -h
發現雖然給了這個centos100G的磁盤空間,但root只有50G的可用空間,剩下的空間大都分配給了/home。
查找資料后了解到,centos7默認的root大小為50G,也就是說如果硬件分配時超過50G,大部分剩余空間都會分配給home。
軟件如果裝在/usr/local目錄下,並且data等數據文件也配置在root下,則必須在裝機后調整root的大小,否則運行一段時間后很容易導致磁盤空間不足。
看來這樣的確是磁盤空間不足引發了這次問題,反正這台虛擬機里我並不需要安裝什么服務,如果可以將home去掉,再將空間都給root就解決問題了。於是我查找資料后根據實際情況整理了這篇解決方案。
一、卸載home
1.1 備份home分區文件
tar cvf /tmp/home.tar /home
1.2 修改fstab(這一步非常重要,千萬不要漏了)
准備卸載/home文件系統,centos啟動時會對/etc/fstab的內容逐一檢測,由於fstab默認有/home,如果不修改fstab,重啟之后會發現centos跪了。
所以卸載之前,要先注釋掉/home,不讓系統開機檢測/home。
# 編輯fstab
vi /etc/fstab
注釋掉/home的內容,wq保存。
#/dev/mapper/centos-home /home xfs defaults 0 0
1.3 安裝psmisc
yum install -y psmisc
//Psmisc軟件包包含三個幫助管理/proc目錄的程序,安裝下列程序: fuser、 killall、pstree和pstree.x11(到pstree的鏈接)
//fuser 顯示使用指定文件或者文件系統的進程的PID。
//killall 殺死某個名字的進程,它向運行指定命令的所有進程發出信號。
//pstree 樹型顯示當前運行的進程。
//pstree.x11 與pstree功能相同,只是在退出前需要確認。
1.4 卸載home文件系統
umount /home
如果提示無法卸載,是因為有進程占用/home,可以用下面的命令來停止占用的進程。
fuser -km /home/
1.5 刪除/home所在的lv
lvremove /dev/mapper/centos-home
接着會出現確認的內容,輸入“y”,回車。
二、擴大root
2.1 擴展/root所在的lv
由於之前/home占用了47G的空間,故我考慮將這些空間都加到/root里。
lvextend -L +47G /dev/mapper/centos-root
可是發現可用的空間並不是47G,應該是系統四舍五入了,減小一點換成48100MB。
PS:不去精確設置可用空間的原因是:我自己對如何獲取可用空間的方法並不了解,與其花時間去了解這一塊,我寧可浪費一點空間(畢竟幾十MB的機械硬盤不值多少錢,即使是企業硬盤)。
lvextend -L +48100M /dev/mapper/centos-root
出現下面的內容,說明/root所在的lv已經成功拓展成了96.97GB。
2.2 擴展/root文件系統
xfs_growfs /dev/mapper/centos-root
圖中的13107200、25420800根據文件大小換算了下,和50G、97G都不符合,這個問題先擱置下,以后查資料看看。
2.3 檢查root文件系統的空間
df -h
可以發現/root從原來的50G提升到了97G。