一、 基本理論知識
LVM是 Logical Volume Manager(邏輯卷管理)的簡寫,是Linux環境下對磁盤分區進行管理的一種機制。邏輯卷管理通過將底層物理硬盤抽象封裝起來,以邏輯卷的形式表現給上層系統,邏輯卷的大小可以動態調整,而且不會丟失現有數據。新加入的硬盤也不會改變現有上層的邏輯卷。作爲一種動態磁盤管理機制,邏輯卷技術大大提高了磁盤管理的靈活性。
二、lvm 基本術語
物理區域: PE(physical extend)默認爲4MB的基本塊 。物理卷是用固定大小的PE來定義的。
物理卷:PV(physical volume)硬盤或分區 。將設備指定爲物理卷,在物理捲上創建的邏輯卷是由PE組成。
卷組: VG(volume group)由一個或多個PV組成的整體 。用一個或者多個物理捲來創建一個卷組。
邏輯卷: LV(logical volume)從VG中切割出的空間用於創建文件系統。可以在邏輯捲上創建文件系統。
三、 lvm 的創建
1.分區或增加新的硬盤
如果是分區,注意分區的ID設置爲8e。
fdisk -l /dev/sdb 查看指定塊設備/dev/sdb的分區信息
fdisk /dev/sdb 對指定硬盤dev/sdb修改分區 t:轉換分區類型ID
fdisk -l /dev/sdb 查看指定塊設備/dev/sdb的分區信息
2. 創建物理卷pv
pvcreate /dev/sdb1 /dev/sdb2 將/dev/sdb1 /dev/sdb2 指定爲物理卷
pvs 查看命令
pvdisplay /dev/sdb1 具體查看物理卷/dev/sdb的信息
pvcreate /dev/sdb1 /dev/sdb2
pvs 查看pv物理卷 pvdisplay 後可加具體pv 查看較詳細
pvdisplay /dev/sdb1 查看/dev/sdb1的詳細信息
3.創建卷組vg
多個物理捲來創建一個卷組
vgcreate vgname /dev/sdb1 /dev/sdb2 創建一個包含兩個pv(/dev/sdb1 /dev/sdb2)名爲vgname的卷組
vgcreate -s 55M vgname /dev/sdb1 /dev/sdb2 創建一個包含兩個pv(/dev/sdb1 /dev/sdb2)名爲vgname的卷組
vgs 查看卷組信息
vgdisplay vgname 具體查看某一卷組的信息
vgcreate vgchen /dev/sdb1 /dev/sdb2 創建一個包含兩個pv(/dev/sdb1 /dev/sdb2)名爲vgchen的卷組 vgs 查看卷組信息 vgdisplay vgchen 具體查看vgchen卷組的信息 部分截圖
4.創建邏輯卷lv
lvcreate -l pe num /-L size -n lvname vgname 創建 以pe個數爲單位 / 設置大小 名爲lvname的邏輯卷
lvs 查看邏輯卷
lvdisplay 詳細查看邏輯卷
此處引入一個lvm名稱的擴展:
/dev/mapper/vgname-lvname
/dev/vgname/lvname
lvcreate -L 200M -n lvchen vgchen 創建大小爲200M的邏輯卷lvchen lvs lvdisplay
四、 擴展與減少邏輯卷
1、擴展邏輯卷
邏輯卷的魅力:具有在線擴展的能力。擴展邏輯卷分爲兩種情況。第一種情況,需要擴展的pe數量,vg可以提供。第二種情況,vg空間不夠,需先擴展vg,擴展vg就是往vg中加pv。下面具體分析:
1. 第一種情況,需要擴展的pe數量,vg可以提供。
lvextend -r -L +200M /dev/vgchen/lvchen 邏輯卷在原來的基礎上擴展200M
lvextend -r -L 400M /dev/vgchen/lvchen 邏輯卷擴展至400M
( -r: resize2fs /dev/vgchen/lvchen ) 將邏輯卷的文件系統擴展(如:房子建好了,需要裝修,不需要指定大小)
lvextend -r -L 400M /dev/vgchen/lvchen 邏輯卷擴展至400M lvs 查看邏輯卷信息
2. 第二種情況,vg空間不夠。
在第一種情況中,已把所有的vg空間提供。再需要擴展時,vg空間已沒有,需要先擴展vg,擴展vg就是往vg中加pv。
1)加硬盤,或創建分區等來增加block device
fdisk /dev/sdb 對指定硬盤修改分區
2)創建pv
pvcreate /dev/sdb3
在此處pv創建不成,根據提示錯誤,沒有發現/dev/sdb3 分區。
lsblk 查看內核分區信息 沒有/dev/sdb3 分區,需要同步下分區信息 partprobe /dev/sdb3 (centos 7)
partprobe /dev/sdb 同步信息 pvcreate /dev/sdb3 創建名爲/dev/sdb3的物理卷
3)擴展vg
vgextend vgchen /dev/sdb3 vg的擴展
vgextend vgchen /dev/sdb3 將/dev/sdb3 擴展到vgchen卷組 vgs 查看卷組信息
4)lvextend -L 500M -r /dev/vgchen/lvchen 邏輯卷的擴展
lvextend -L 500M -r /dev/vgchen/lvchen 將邏輯卷增加至500M lvs 查看邏輯卷的信息 邏輯卷已成功擴展至500M (好開心 噠噠噠 ^.^)
2、減少邏輯卷
邏輯卷的擴展具有在線擴展的魅力,減少時需要先卸載。
umount /dev/vgchen/lvchen 或 umount /app 卸載 掛載源 / 掛載點 兩者其一都可以。
e2fsck -f /dev/vgchen/lvchen 在減少邏輯卷時,需要先掃描下空白空間,避免損壞已存在數據。
resize2fs /dev/vgchen/lvchen 200M 先減少文件系統至200M (一定先減文件系統,再減邏輯卷。)
lvreduce -L 200M /dev/vgchen/lvchen 減少邏輯卷至200M
mount -a 讀取配置文件重新掛載
現在局勢如圖所示:
umount /app 卸載 e2fsck -f /dev/vgchen/lvchen
resize2fs /dev/vgchen/lvchen 200M 先減少文件系統至200M
lvreduce -L 200M /dev/vgchen/lvchen 減少邏輯卷至200M mount -a 可能會掛載不上,需要人爲修改配置文件 /etc/fstab
vim /etc/fstab 在最後一行寫入/dev/vgchen/lvchen /app ext4 defaults 0 0 mount -a 讀取配置文件重新掛載