Ubuntu 18.04 磁盤根目錄在線擴容 & 修改分區 inode 數量
Ubuntu 作為服務器系統使用的時候,系統盤的空間可能並不是很充裕,apt apt 着,根目錄就滿了。誠然,增加磁盤 / 分區並掛載是一個方案,但並不能解決所有問題(例如 apt)。同時,一些跑在雲平台上的服務器並沒有很好的離線操作磁盤的手段,這時候在線擴容就顯得極為必要了。
數據無價!對磁盤進行任何操作前,請務必做好備份!
1. 磁盤根目錄在線擴容
操作環境:Proxmox VE 虛擬化 / Ubuntu 18.04.5 LTS / GPT 分區表 / ext4 分區
1.1 增大物理磁盤容量
這部分沒什么好說的,虛擬機就在設置里改,雲平台就在對應的平台修改。修改好之后 Ubuntu 應該就可以直接識別到新的容量了。
1.2 將容量合並進分區
首先運行
從上圖可以看到,磁盤容量已被正確識別為 64GiB,但分區表記錄的磁盤容量仍為擴容前的 40GiB(見紅色提示,錯誤已被識別到),分區大小也是同樣的 40G。
1.2 修復分區表
運行
parted 會立即提示磁盤的空間並沒有被全部使用,這里輸入 Fix 后回車,修復一下 GPT 分區表。
從上圖中已經可以看到,分區表記錄的磁盤容量已經正常。
1.3 擴容分區
現在就可以將空閑的磁盤容量合並到分區里了,這里利用界面和操作都更加友好的
按上下鍵選中要擴容的分區,再按左右鍵選擇 Resize 操作,回車。cfdisk 應該會自動填寫此分區與未分配空間的總容量,也可以自己輸入擴容后的大小,回車即可。
下圖中的 sda2 分區已經變為 64G,分區擴容完畢。但此時的所有操作僅在內存中完成,我們需要選擇 Write 來將更改保存到分區表。寫入后退出 cfdisk。
再次執行
1.4 擴容文件系統
此時擴容並未結束,因為文件系統記錄的分區容量仍為 40G,我們需要讓文件系統知道分區已被擴容。
這里需要用到 resize2fs,以我的磁盤 sda2 為例,執行以下命令:
等待操作完成即可。根據上圖提示,我們已經完成了對文件系統的在線擴容。
2. 修改磁盤 inode
對於 ext4 文件系統,inode 會在格式化時被寫死,若要修改必須重新格式化,丟失所有數據,請務必注意。xfs 等文件系統提供 inode 的動態擴展功能。
2.1 查看磁盤 inode 情況
運行
從上圖可以看到我的 sdc1 分區已經用盡了所有 4,194,304 個 inode,此時表現為無法寫入任何數據,提示磁盤已滿(即使仍有可用空間)。
2.2 重新格式化分區
在格式化分區的時候,可以利用 -N 參數指定 inode 數量。
以格式化 sdb1 為具有 16,777,216 個 inode 的 ext4 分區為例,執行以下命令:
mkfs 會提示磁盤已存在格式化后的文件系統,確認后等待格式化完成即可。
2.3 檢查 inode 數量
運行以下命令:
結果如下圖,可以看到 Inode count 一項已經變為我們指定的值。









