Linux使用fdisk調(diào)整分區(qū)大小實(shí)現(xiàn)磁盤在線擴(kuò)容的實(shí)戰(zhàn)指南
當(dāng)磁盤空間告急時(shí),不必驚慌,掌握正確的擴(kuò)容方法可以讓你輕松應(yīng)對(duì)
一、背景概述
在云平臺(tái)運(yùn)維和服務(wù)器管理過程中,經(jīng)常會(huì)遇到磁盤空間不足的情況:
- 共享文件服務(wù)器的硬盤空間隨著業(yè)務(wù)增長(zhǎng)逐漸耗盡
- 系統(tǒng)安裝初期分區(qū)規(guī)劃不合理,部分分區(qū)空間過剩而關(guān)鍵分區(qū)不足
- 應(yīng)用程序日志、數(shù)據(jù)文件不斷積累,導(dǎo)致存儲(chǔ)資源緊張
本文將詳細(xì)介紹如何使用 Linux 內(nèi)置的 fdisk工具,在不丟失數(shù)據(jù)的前提下,對(duì)磁盤分區(qū)進(jìn)行動(dòng)態(tài)擴(kuò)容。下面是我們將要調(diào)整的分區(qū)初始狀態(tài):
root@i-abnawjwo:/# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda1 20509308 1337636 18106816 7% / /dev/sdc1 10190136 23032 9626432 1% /data
可以看到,我們的目標(biāo)是擴(kuò)展 /data目錄對(duì)應(yīng)的 /dev/sdc1分區(qū)。
二、前期準(zhǔn)備:數(shù)據(jù)備份
重要提示:雖然本文介紹的擴(kuò)容方法在正常情況下不會(huì)導(dǎo)致數(shù)據(jù)丟失,但在任何磁盤操作前,備份都是必不可少的保障措施。
推薦的備份方案:
- 云平臺(tái)快照功能:大多數(shù)云服務(wù)商都提供磁盤快照功能,可在控制臺(tái)對(duì)磁盤創(chuàng)建全量備份
- 本地備份工具:可使用
rsync、tar等工具將關(guān)鍵數(shù)據(jù)備份到其他存儲(chǔ)位置 - LVM 快照:如果使用 LVM 管理磁盤,可創(chuàng)建 LVM 快照作為回滾點(diǎn)
三、詳細(xì)擴(kuò)容步驟
3.1 卸載目標(biāo)分區(qū)
首先需要卸載要擴(kuò)容的分區(qū):
root@i-abnawjwo:/# umount /data
如果遇到“設(shè)備忙”的錯(cuò)誤,表示有進(jìn)程正在訪問該分區(qū):
# 查看占用分區(qū)的進(jìn)程 fuser -m -v /data # 或 lsof /data # 結(jié)束占用進(jìn)程(謹(jǐn)慎操作) fuser -m -v -i -k /data
3.2 使用 fdisk 重新分區(qū)
關(guān)鍵要點(diǎn):重新分區(qū)時(shí),必須確保起始扇區(qū)與原始分區(qū)完全一致,這是保證數(shù)據(jù)不丟失的核心要素。
進(jìn)入 fdisk 交互模式:
root@i-abnawjwo:/# fdisk /dev/sdc
步驟分解:
- 刪除舊分區(qū)(數(shù)據(jù)不會(huì)立即丟失,只是刪除分區(qū)表記錄)
Command (m for help): d Selected partition 1
- 創(chuàng)建新分區(qū),特別注意起始扇區(qū)必須與原來相同
Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-104857599, default 2048): 2048 # 必須與原來一致!
Last sector, +sectors or +size{K,M,G} (2048-104857599, default 104857599):
# 直接回車使用默認(rèn)最大值,即占用全部可用空間
- 驗(yàn)證分區(qū)表,確認(rèn)起始扇區(qū)正確
Command (m for help): p Disk /dev/sdc: 53.7 GB, 53687091200 bytes ... Device Boot Start End Blocks Id System /dev/sdc1 2048 104857599 52427776 83 Linux
- 保存并退出
Command (m for help): wq The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks.
3.3 重啟系統(tǒng)
為了確保內(nèi)核重新識(shí)別新的分區(qū)表,建議重啟系統(tǒng):
reboot
3.4 檢查和擴(kuò)展文件系統(tǒng)
系統(tǒng)重啟后,執(zhí)行以下操作:
- 強(qiáng)制檢查文件系統(tǒng)
root@i-abnawjwo:~# e2fsck -f /dev/sdb1 e2fsck 1.42.9 (4-Feb-2014) Pass 1: Checking inodes, blocks, and sizes Pass 2: Checking directory structure Pass 3: Checking directory connectivity Pass 4: Checking reference counts Pass 5: Checking group summary information /dev/sdb1: 12/655360 files (0.0% non-contiguous), 79664/2621440 blocks
注:這里設(shè)備名從 /dev/sdc1變?yōu)?/dev/sdb1,可能是系統(tǒng)設(shè)備識(shí)別變化,實(shí)際操作時(shí)以 fdisk -l輸出為準(zhǔn)。
- 調(diào)整文件系統(tǒng)大小
root@i-abnawjwo:~# resize2fs -p /dev/sdb1 resize2fs 1.42.9 (4-Feb-2014) Resizing the filesystem on /dev/sdb1 to 13106944 (4k) blocks. The filesystem on /dev/sdb1 is now 13106944 blocks long.
-p參數(shù)顯示操作進(jìn)度,對(duì)大容量磁盤很有用。
3.5 驗(yàn)證擴(kuò)容結(jié)果
- 重新掛載分區(qū)
root@i-abnawjwo:~# mount /dev/sdb1 /data/
- 檢查數(shù)據(jù)完整性
root@i-abnawjwo:/data# cat hello acasdcacsa
- 查看最終磁盤使用情況
root@i-abnawjwo:/data# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda1 20509308 1337768 18106684 7% / /dev/sdb1 51474044 33100 48803172 1% /data
成功!/dev/sdb1分區(qū)已從原來的約 10.2 GB 擴(kuò)容到約 51.5 GB,且數(shù)據(jù)完好無損。
四、注意事項(xiàng)和故障排查
4.1 關(guān)鍵注意事項(xiàng)
- 起始扇區(qū)一致性:重新分區(qū)時(shí),
First sector必須與原來的值完全相同 - 文件系統(tǒng)支持:
resize2fs主要適用于 ext2、ext3、ext4 文件系統(tǒng) - 分區(qū)類型:確保新分區(qū)的類型(Linux 分區(qū)為 83)與原來一致
- 操作順序:一定要先調(diào)整分區(qū)表,再調(diào)整文件系統(tǒng)
4.2 常見問題排查
無法卸載分區(qū)
# 查看哪個(gè)進(jìn)程占用 lsof +f -- /data # 或 fuser -mv /data
resize2fs 失敗
- 確認(rèn)文件系統(tǒng)類型:
blkid /dev/sdb1 - 確保已執(zhí)行
e2fsck -f檢查 - 對(duì)于 xfs 文件系統(tǒng),需使用
xfs_growfs命令
重啟后設(shè)備名變化
建議使用 UUID 或卷標(biāo)掛載,在 /etc/fstab中配置:
# 獲取UUID blkid /dev/sdb1 # /etc/fstab 中使用 UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /data ext4 defaults 0 2
五、總結(jié)
通過本文的步驟,我們成功完成了 Linux 磁盤分區(qū)的在線擴(kuò)容操作。整個(gè)過程可歸納為:
- 備份數(shù)據(jù)? → 安全第一
- 卸載分區(qū)? → 解除占用
- fdisk 調(diào)整? → 保持起始扇區(qū)不變
- 重啟系統(tǒng)? → 重新加載分區(qū)表
- 檢查并擴(kuò)展文件系統(tǒng)? → 實(shí)際擴(kuò)大容量
- 驗(yàn)證結(jié)果? → 確認(rèn)數(shù)據(jù)完整性和新容量
這種方法適用于大多數(shù)基于 ext 文件系統(tǒng)的分區(qū)擴(kuò)容需求。對(duì)于生產(chǎn)環(huán)境,建議先在測(cè)試環(huán)境演練,并確保在維護(hù)窗口進(jìn)行操作,避免影響業(yè)務(wù)正常運(yùn)行。
以上就是Linux使用fdisk調(diào)整分區(qū)大小實(shí)現(xiàn)磁盤在線擴(kuò)容的實(shí)戰(zhàn)指南的詳細(xì)內(nèi)容,更多關(guān)于Linux fdisk磁盤在線擴(kuò)容的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
linux 可執(zhí)行文件與寫操作的同步問題(文件讀寫操作產(chǎn)生的鎖機(jī)制)
在哪種系統(tǒng)下都會(huì)有文件操作產(chǎn)生的同步問題,今天說說linux下讀寫文件的鎖機(jī)制。2013-10-10
IO多路復(fù)用之epoll全面總結(jié)(必看篇)
下面小編就為大家?guī)硪黄狪O多路復(fù)用之epoll全面總結(jié)(必看篇)。小編覺得挺不錯(cuò)的。現(xiàn)在就分享給大家。也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-12-12
Linux?命令?systemctl?基本介紹和常用選項(xiàng)
這篇文章主要介紹了Linux命令systemctl,包括systemctl命令的基本介紹和常用選項(xiàng)、命令及示例,使用systemctl命令需要有管理員權(quán)限(例如root或具有sudo權(quán)限的用戶),需要的朋友可以參考下2023-06-06

