Ubuntu 18.04 磁盤根目錄在線擴容 & 修改分區 inode 數量


Ubuntu 18.04 磁盤根目錄在線擴容 & 修改分區 inode 數量

 

Ubuntu 作為服務器系統使用的時候,系統盤的空間可能並不是很充裕,apt apt 着,根目錄就滿了。誠然,增加磁盤 / 分區並掛載是一個方案,但並不能解決所有問題(例如 apt)。同時,一些跑在雲平台上的服務器並沒有很好的離線操作磁盤的手段,這時候在線擴容就顯得極為必要了。

 

數據無價!對磁盤進行任何操作前,請務必做好備份!

 


1. 磁盤根目錄在線擴容

操作環境:Proxmox VE 虛擬化 / Ubuntu 18.04.5 LTS / GPT 分區表 / ext4 分區

1.1 增大物理磁盤容量

這部分沒什么好說的,虛擬機就在設置里改,雲平台就在對應的平台修改。修改好之后 Ubuntu 應該就可以直接識別到新的容量了。

1.2 將容量合並進分區

首先運行  

fdisk -l
  命令查看磁盤容量是否被識別:

 

從上圖可以看到,磁盤容量已被正確識別為 64GiB,但分區表記錄的磁盤容量仍為擴容前的 40GiB(見紅色提示,錯誤已被識別到),分區大小也是同樣的 40G。

1.2 修復分區表

運行  

parted -l
  查看分區情況。
parted 會立即提示磁盤的空間並沒有被全部使用,這里輸入 Fix 后回車,修復一下 GPT 分區表。

 

從上圖中已經可以看到,分區表記錄的磁盤容量已經正常。

1.3 擴容分區

現在就可以將空閑的磁盤容量合並到分區里了,這里利用界面和操作都更加友好的 

cfdisk
 來進行操作。
按上下鍵選中要擴容的分區,再按左右鍵選擇 Resize 操作,回車。cfdisk 應該會自動填寫此分區與未分配空間的總容量,也可以自己輸入擴容后的大小,回車即可。

 

下圖中的 sda2 分區已經變為 64G,分區擴容完畢。但此時的所有操作僅在內存中完成,我們需要選擇 Write 來將更改保存到分區表。寫入后退出 cfdisk。

再次執行 

fdisk -l
 ,可見分區容量已變為 64G。

 

1.4 擴容文件系統

此時擴容並未結束,因為文件系統記錄的分區容量仍為 40G,我們需要讓文件系統知道分區已被擴容。

這里需要用到 resize2fs,以我的磁盤 sda2 為例,執行以下命令:

resize2fs -p /dev/sda2
resize2fs /dev/sda2
 
 

等待操作完成即可。根據上圖提示,我們已經完成了對文件系統的在線擴容。

 


2. 修改磁盤 inode

對於 ext4 文件系統,inode 會在格式化時被寫死,若要修改必須重新格式化,丟失所有數據,請務必注意。xfs 等文件系統提供 inode 的動態擴展功能。

2.1 查看磁盤 inode 情況

運行  

df -i
 查看各個分區的 inode 使用情況。

 

從上圖可以看到我的 sdc1 分區已經用盡了所有 4,194,304 個 inode,此時表現為無法寫入任何數據,提示磁盤已滿(即使仍有可用空間)。

2.2 重新格式化分區

在格式化分區的時候,可以利用 -N 參數指定 inode 數量。
以格式化 sdb1 為具有 16,777,216 個 inode 的 ext4 分區為例,執行以下命令:

mkfs.ext4 /dev/sdb1 -N 16777216

mkfs 會提示磁盤已存在格式化后的文件系統,確認后等待格式化完成即可。

2.3 檢查 inode 數量

運行以下命令:

dump2fs -h /dev/sdb1 | grep node

結果如下圖,可以看到 Inode count 一項已經變為我們指定的值。

 


免責聲明!

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



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