CentOS/RHEL LVM 磁盤擴展完整教程
📝 前言
在Linux系統管理中,磁盤空間不足是經常遇到的問題。特別是在生產環境中,當根分區空間告急時,我們需要通過添加新磁盤來擴展存儲空間。本教程將詳細介紹如何在CentOS/RHEL系統中使用LVM(Logical Volume Manager)來擴展現有的邏輯卷。
🎯 適用場景
- 根分區磁盤空間不足(使用率超過80%)
- 系統使用LVM管理磁盤
- 需要在線擴展磁盤空間而不停機
- 有新的物理磁盤可以添加到系統
📚 LVM 基礎概念
LVM 三層架構
物理磁盤 → 物理卷(PV) → 卷組(VG) → 邏輯卷(LV) → 文件系統
- 物理卷(Physical Volume, PV):實際的物理磁盤或分區
- 卷組(Volume Group, VG):多個物理卷組成的存儲池
- 邏輯卷(Logical Volume, LV):從卷組中分配的邏輯存儲單元
LVM 的優勢
- 靈活性:可以動態調整分區大小
- 擴展性:可以跨多個物理磁盤
- 快照功能:支持創建快照備份
- 在線操作:大多數操作可以在不停機的情況下進行
🔍 準備工作:識別可用磁盤
1. 查看系統磁盤狀態
# 查看磁盤分區信息
lsblk -l# 查看磁盤使用情況
df -h# 查看磁盤詳細信息
fdisk -l
命令說明:
-
lsblk -l
:以列表形式顯示所有塊設備
-
df -h
:顯示文件系統磁盤使用情況,-h
參數以可讀格式顯示
-
fdisk -l
:列出所有磁盤和分區的詳細信息
2. 識別可擴展的磁盤
查看 lsblk
輸出,尋找以下特征的磁盤:
- 未掛載的磁盤:MOUNTPOINT 列為空
- 未分區的磁盤:只顯示磁盤本身,沒有分區(如 sdc 但沒有 sdc1)
- 足夠大的磁盤:SIZE 列顯示的容量滿足需求
3. 查看當前LVM狀態
# 查看物理卷
pvs
pvdisplay# 查看卷組
vgs
vgdisplay# 查看邏輯卷
lvs
lvdisplay
命令說明:
-
pvs
/pvdisplay
:顯示物理卷信息,pvs
簡潔格式,pvdisplay
詳細格式
-
vgs
/vgdisplay
:顯示卷組信息和可用空間
-
lvs
/lvdisplay
:顯示邏輯卷信息和使用情況
🛠? 磁盤擴展詳細步驟
步驟1:確認文件系統類型
# 方法1:查看掛載信息
mount | grep " / "# 方法2:顯示文件系統類型
df -T /# 方法3:顯示塊設備文件系統
lsblk -f
為什么需要確認文件系統類型?
- 不同文件系統使用不同的擴展命令
- XFS 使用
xfs_growfs
- EXT4 使用
resize2fs
步驟2:對新磁盤進行分區
# 使用 fdisk 對磁盤進行分區(假設新磁盤為 /dev/sdc)
fdisk /dev/sdc
在 fdisk 交互界面中的操作:
命令 (m 為幫助): n # 創建新分區
分區類型: p # 主分區
分區號: 1 # 分區號為1
起始扇區: 回車 # 使用默認值
結束扇區: 回車 # 使用整個磁盤
命令 (m 為幫助): t # 修改分區類型
分區號: 1 # 選擇分區1
分區類型: 8e # LVM類型
命令 (m 為幫助): w # 寫入分區表并退出
步驟作用:
- 創建分區表,讓系統能夠識別磁盤
- 設置分區類型為 LVM (8e),便于后續操作
- 建議使用整個磁盤作為一個分區
步驟3:創建物理卷
# 創建物理卷
pvcreate /dev/sdc1# 驗證物理卷創建成功
pvs
命令作用:
pvcreate
:將分區初始化為LVM物理卷- 在分區上創建LVM元數據
- 使分區能夠被LVM管理
步驟4:擴展卷組
# 查看現有卷組名稱
vgdisplay# 將新物理卷添加到卷組(假設卷組名為 centos_centos)
vgextend centos_centos /dev/sdc1# 驗證卷組擴展成功
vgs
命令作用:
vgextend
:將新的物理卷添加到現有卷組- 增加卷組的總容量
- 為后續邏輯卷擴展提供空間
步驟5:擴展邏輯卷
# 查看卷組可用空間
vgdisplay centos_centos# 方法1:使用所有可用空間擴展邏輯卷
lvextend -l +100%FREE /dev/mapper/centos_centos-root# 方法2:指定擴展大小(例如500G)
# lvextend -L +500G /dev/mapper/centos_centos-root# 驗證邏輯卷擴展成功
lvs
參數說明:
-l +100%FREE
:使用卷組中所有可用空間-L +500G
:指定增加500G空間-L 1T
:指定總大小為1T
步驟6:擴展文件系統
# 對于 XFS 文件系統(CentOS 7/8 默認)
xfs_growfs /# 對于 EXT4 文件系統
# resize2fs /dev/mapper/centos_centos-root
命令作用:
xfs_growfs
:擴展XFS文件系統到邏輯卷的完整大小resize2fs
:擴展EXT4文件系統- 必須在邏輯卷擴展后執行,否則新空間無法使用
步驟7:驗證擴展結果
# 查看磁盤使用情況
df -h# 查看LVM狀態
lvs
vgs
pvs# 查看詳細的掛載信息
mount | grep mapper
📊 操作前后對比示例
擴展前:
[root@centos ~]# df -h
/dev/mapper/centos_centos-root 641G 601G 41G 94% /[root@centos ~]# vgs
VG #PV #LV #SN Attr VSize VFree
centos_centos 2 2 0 wz--n- 648.99g 0
擴展后:
[root@centos ~]# df -h
/dev/mapper/centos_centos-root 1.2T 601G 541G 53% /[root@centos ~]# vgs
VG #PV #LV #SN Attr VSize VFree
centos_centos 3 2 0 wz--n- 1.12t 0
?? 重要注意事項
1. 備份數據
# 創建重要數據備份
tar -czf /tmp/important_data_backup.tar.gz /path/to/important/data# 或使用 rsync 同步到其他服務器
rsync -avz /important/data/ user@backup-server:/backup/path/
2. 確認磁盤沒有被使用
# 檢查磁盤是否被掛載
mount | grep sdc# 檢查磁盤是否有文件系統
blkid /dev/sdc# 確認磁盤不在fstab中
grep sdc /etc/fstab
🔧 故障排除
常見錯誤及解決方案
1. 分區表錯誤
錯誤:Device or resource busy
解決:umount /dev/sdc1 或重啟系統
2. 物理卷創建失敗
錯誤:Device /dev/sdc1 not found or ignored by filtering
解決:partprobe /dev/sdc # 重新讀取分區表
3. 文件系統擴展失敗
錯誤:xfs_growfs: /dev/mapper/centos_centos-root is not a mounted XFS filesystem
解決:確認文件系統類型和掛載點正確
回滾操作(如果需要)
# 如果需要移除新添加的磁盤
vgreduce centos_centos /dev/sdc1
pvremove /dev/sdc1
📝 一鍵腳本示例
#!/bin/bash
# LVM 擴展自動化腳本DISK="/dev/sdc"
VG_NAME="centos_centos"
LV_PATH="/dev/mapper/centos_centos-root"echo "開始LVM磁盤擴展..."# 1. 分區
echo "正在對 $DISK 進行分區..."
(
echo n
echo p
echo 1
echo
echo
echo t
echo 8e
echo w
) | fdisk $DISK# 2. 創建物理卷
echo "創建物理卷..."
pvcreate ${DISK}1# 3. 擴展卷組
echo "擴展卷組..."
vgextend $VG_NAME ${DISK}1# 4. 擴展邏輯卷
echo "擴展邏輯卷..."
lvextend -l +100%FREE $LV_PATH# 5. 擴展文件系統
echo "擴展文件系統..."
xfs_growfs /echo "擴展完成!"
df -h /
🎉 總結
LVM磁盤擴展是Linux系統管理中的常見操作,掌握這項技能對系統管理員來說非常重要。通過本教程,你應該能夠:
- 理解LVM架構:掌握PV、VG、LV的概念和關系
- 識別可用磁盤:使用各種命令查看和分析磁盤狀態
- 執行擴展操作:按步驟完成完整的磁盤擴展過程
- 處理常見問題:識別和解決擴展過程中的常見錯誤
磁盤操作具有一定風險,建議在生產環境操作前先在測試環境中練習