背景
以下場景我們經常會遇到:
- 我們在安裝系統的時候可能沒有合理的分配空間,導致某些分區空間吃緊,而另外一些空間基本使用不到;
- 由於業務量激增->數據量激增,磁盤空間被用光;
這種情況下重新調整磁盤分區就很有必要。但是系統的數據都是很寶貴的,調整空間的前提是保證當前數據不被破壞。
要求
擴容操作不影響系統已經存在的數據,最好不用重啟系統。
相關概念
分區:磁盤上的區域划分,例如windows中常見的C,D,E盤
擴容:增加分區的大小
扇區(sector):讀寫磁盤上的數據的最小單位,一般是512bytes
xfs,ext2,ext3,ext4:linux系統中常見的文件系統格式,xfs可以通過xfs_growfs命令調整文件系統,但是只能增大,不能縮小;ext2,ext3,ext4格式的文件系統可以通過resize2fs命令調整大小,增大和縮小都支持
LVM:Logical Volume Manager(邏輯卷管理)的簡寫,它是Linux環境下對磁盤分區進行管理的一種機制。
PV:物理卷(Physical Volume)
VG:卷組(Volume Group)
LV:邏輯卷(Logical Volume)
PE:物理塊(Physical Extent)
LE:邏輯塊(Logical Extent)
LVM的LV代替了傳統磁盤管理方式中的PV,使磁盤空間的擴展和壓縮變得容易。最明顯的優勢是LV中的空間可以來自於多個不同的PV。
傳統磁盤擴容(非LVM)
擴容前提:可用空間緊挨着被擴充分區結束扇區的位置
fdisk -l
找到要擴容的磁盤和分區情況,我要對/dev/sda1擴容
fdisk /dev/sda
修改磁盤分區,輸入m
顯示幫助信息
- 輸入
d
刪除要擴容的分區,只有一個分區時會直接刪除,多個分區時按提示輸入分區號
- 輸入
n
新建分區 - 輸入
p
選擇主分區或者輸入e
選擇擴展分區,一般選擇p
,注意linux系統中主分區最多只能有4個,建立4個主分區后將無法再新增分區 - 按
回車
輸入默認的第一個和最后一個扇區號 - 其他提示輸入
y
- 輸入
w
保存修改 - 使用
partprobe
重新偵測分區,可能報錯,這個時候需要重啟系統 - 調整文件系統,ext2,ext3,ext4系統使用
resize2fs
命令,xfs系統使用xfs_growfs
,通過mount
命令可以查看文件系統的類型
- 通過
df-h
命令檢查分區是否已經擴容
LVM擴容(新增分區)
- 假設要操作的磁盤為/dev/sda,使用
fdisk /dev/sda
的n
命令創建新分區,步驟和傳統磁盤擴容中描述的一致 - 使用
partprobe
重新偵測分區,假設新增的分區為/dev/sda3 - 使用
pvcreate /dev/sda3
創建PV - 使用
pvdisplay
查看新創建的PV - 使用
vgdisplay
查看當前的VG信息 - 假設新增的PV要增加到名為centos的VG,執行
vg_extend centos /dev/sda3
- 使用
df -h
找到要增加的LV的名稱,假設是/dev/mapper/centos-root - 使用
lvextend -l +100%FREE /dev/mapper/centos-root
將VG中的剩余空間全部添加到指定的LV,也可以使用lvextend -L +30G /dev/mapper/centos-root
增加指定的大小 - 調整文件系統,ext2,ext3,ext4系統使用
resize2fs
命令,xfs系統使用xfs_growfs
,通過mount
命令可以查看文件系統的類型,例如resize2fs /dev/mapper/centos-root
或者xfs_growfs /dev/mapper/centos-root
- 通過
df-h
命令檢查分區是否已經擴容
LVM擴容(PV擴容)
新增分區的方式不是任何情況都適用的。例如某個磁盤當前已經有了4個主分區,此時如果再擴容則無法使用LVM(新增分區)的方式。此時可以將空間增加到特定的PV
擴容前提:可用空間緊挨着被擴充分區結束扇區的位置
- 假設要擴容的PV所在的分區為/dev/sda4
- 輸入
d
,再根據提示輸入4
刪除要擴容的分區 - 輸入
n
新建分區 - 輸入
p
選擇主分區或者輸入e
選擇擴展分區,主要需要與刪除前的分區屬性一致 - 按
回車
輸入默認的第一個和最后一個扇區號 - 其他提示輸入
y
- 輸入
t
修改分區類型 - 輸入
4
選擇要修改的分區 - 輸入
8e
將分區類型改為linux LVM - 輸入
w
保存修改 - 使用
partprobe
重新偵測分區,可能報錯,這個時候需要重啟系統 - 輸入
pvresize /dev/sda4
調整PV的大小 - 使用
lvextend -l +100%FREE /dev/mapper/centos-root
將VG中的剩余空間全部添加到指定的LV,也可以使用lvextend -L +30G /dev/mapper/centos-root
增加指定的大小 - 假設LV的名稱為/dev/mapper/centos-root。調整文件系統,ext2,ext3,ext4系統使用
resize2fs
命令,xfs系統使用xfs_growfs
,通過mount
命令可以查看文件系統的類型,例如resize2fs /dev/mapper/centos-root
或者xfs_growfs /dev/mapper/centos-root
- 通過
df-h
命令檢查分區是否已經擴容