問題描述:有時候安裝系統時,業務所在的分區太小,很容易導致分區爆滿,而其他分區空閑,需要從其他分區挪空間過來或者新增磁盤擴容
需求分析:分配的硬盤50G,/opt分到為19G,隨着業務的使用/opt文件系統已經達到100%,現在計划新分配500G的空間
方法一:
新增磁盤:已通過虛擬化控制台新增一塊大小為500G的硬盤,重啟系統識別確認。已識別到大小為500G的磁盤, 磁盤名稱為vdb(因為是虛擬機,所以是vdx名稱格式)
文件系統擴容操作:
1、查看卷組信息,只有一個centos_hikvisionos卷組且剩余空間為40m
2、查看邏輯卷信息,opt邏輯卷屬於centos_hikvisionos卷組且大小為18.41g
3、查看邏輯卷絕對路徑
4、新增磁盤vdb創建為物理卷
5、物理卷擴容至centos_hikvisionos卷組內
6、確認centos_hikvisionos卷組擴容后的剩余空間,由40m變為500.04g
7、opt邏輯卷進行擴容,增加300G
8、opt文件系統空間自動擴展
9、查看確認文件系統大小,/opt文件系統大小為319G,擴容成功
方法二:
從其他分區挪用,如從/home
檢查文件系統類型以及空間使用情況
從上圖得知:
- 報空間不足的/opt並非獨立文件系統,而是/(根文件系統)的子目錄
- /類型為XFS、容量50G、已用50G、可用空間20K、已用%為100%
- /home類型為XFS、容量286G、已用785M、可用285G、已用%為1%
- /和/home同屬卷組centos,由邏輯卷root和home格式化成XFS文件系統
綜上可以得出結論:/文件系統已使用100%,和圖1所示設備空間不足報錯吻合;Web登錄產生的會話信息需要空間來保存,/文件系統剩余空間不足時必然會影響業務正常運行。
方案制定:
/home文件系統未規划使用,只是存放一些用戶信息,286G容量處於閑置的狀態,/文件系統50G空間完全滿足不了系統需求。圖1顯示/和/home同屬centos卷組,分別對應的邏輯卷為/dev/mapper/centos-root和/dev/mapper/centos-home,邏輯卷格式化創建的XFS類型文件系統具有在線擴容的功能,但不具備在線縮減。縮減需要重新格式化才能正常使用,格式化會清空原數據。所以考慮縮減/home時,必須先備好原數據,以便數據被清空后從備份數據恢復。文件系統的操作需要使用root用戶來執行,而且根文件系統能正常讀寫。目前根文件系統100%讀寫異常,需要清理部分空間來滿足讀寫正常,且必須要保證root用戶可以遠程SSH登錄。綜上信息可以得出最終的解決方案可從四方面進行:
① 清理/var部分可回收文件釋將/已用%的值降低至100%以下,確保系統命令可正常執行
② 確保root用戶可通過SSH遠程登錄
③ 備份/home數據至本地,/home縮減200G空間,格式化后再重新掛載,上傳備份文件恢復數據
④ /home縮減200G大小,完成后centos卷組剩余空間增加200G,新增剩余200G大小用於擴容/,/擴容后容量增加至250G,解決50G空間不足的問題
*****開始干活*****
1、清理/var可回收文件。執行“cd /var”進入/var目錄,執行“du -sh *”查看目錄下每個文件和目錄的大小
如上圖,log目錄占用空間9.5G,進入log目錄進一步確認可回收的文件。執行“cd log”進入log目錄,執行“du -sh *” 查看目錄下每個文件和目錄的大小
messagesXX文件占用空間10G左右,經確認3個4月份文件可刪除回收,因此決定刪除此3個文件回收7G左右空間。執行“rm -rf messages-201804*”命令刪除文件,執行“df -Th”查看文件刪除后/文件系統可用%的值
結果顯示/文件系統空間回收完成,從已用%從100%將至88%
2、檢查root用戶SSH遠程登錄。執行“cat /etc/ssh/sshd_config |grep PermitRootLogin”查看命令查看root用戶登錄權限
PermitRootLogin參數為“yes”說明root用戶允許SSH遠程登錄。HikOS默認為no,請把no修改為yes保存退出,執行”systemctl restart sshd”重啟sshd服務立即生效,打開xshell測試root用戶遠程登錄的權限
3、/home文件系統大小調整。執行“tar”命令打包/home下所有數據並命名為“home20180508bak.tar”,使用“ls”命令來確認文件是否產生。執行“mv”命令移動“home20180508bak.tar”文件至/tmp目錄作為數據備份,以便將來恢復至/home
4、/home下的數據被打包成home20180508bak.tar文件並移動到/tmp下,完成數據的備份。執行“umount”命令卸載文件系統/home,執行“lvresize”縮減至200G /dev/centos/home邏輯卷,邏輯卷的名稱請使用lvdisplay來查詢確認,如圖9所示,執行“mkfs.xfs”來格式化縮減后的/dev/centos/home邏輯卷,再執行“mount”重新把/dev/centos/home掛載至/home
(lvresize -L 200G /dev/centos/home 縮減到200G)
(lvresize -L -200G /dev/centos/home 縮減200G)
(lvresize -L +200G /dev/centos/home 擴容200G)
PS:有時umount時,會報device is busy,目標設備正在使用中,無法unmount,需要kill掉相關進程。處理方法參考:https://www.cnblogs.com/xuey/p/7878529.html
/dev/centos/home完成縮減200G(“-L 200G”按理應該減少至200G,但此圖卻是從286G縮減到86G,請以現場實際情況為准),經過格式化重新掛載至掛載點/home,文件系統空間調整順利完成
執行“mv”移動備份文件至/home,執行“tar”命令解壓原數據至/home,執行“ls -la”檢查原數據是否完整
備份文件home20180508bak.tar完整解壓至/home下,數據恢復成功。
4、/文件系統擴容。 執行“lvextend”來擴容/dev/centos/root邏輯卷,執行“xfs_growfs”在線擴展XFS容量,使用“df -Th”來驗證擴容的結果
/文件系統從容量50G增加至250G,擴容成功。最后檢查業務是否已經恢復