1 LVM介紹

LVM(Logical Volume Manager)邏輯卷管理,它是Linux環境下對磁盤分區進行管理的一種機制,LVM是建立在硬盤和分區之上的一個邏輯層,來提高磁盤分區管理的靈活性。通過LVM系統管理員可以輕松管理磁盤分區,

image ?

??????????????????????????????????????????????????? 邏輯卷管理器的技術結構

2 LVM的優缺點

優點:

1. 文件系統可以跨多個磁盤,因此文件系統大小不會受物理磁盤的限制。

2. 可以在系統運行的狀態下動態的擴展文件系統的大小。

3. 可以增加新的磁盤到LVM的存儲池中。

4. 可以以鏡像的方式冗余重要的數據到多個物理磁盤。

5. 可以方便的導出整個卷組到另外一臺機器。

缺點:

1. 在從卷組中移除一個磁盤的時候必須使用reducevg命令(這個命令要求root權限,并且不允許在快照卷組中使用)。

2. 當卷組中的一個磁盤損壞時,整個卷組都會受到影響。

3. 因為加入了額外的操作,存貯性能受到影響。

3 LVM基礎概念

1. 物理卷……PV(Physical Volume):物理卷在邏輯卷管理中處于最底層,它可以是實際物理硬盤上的分區,也可以是整個物理硬盤。

2. 卷組……VG(Volumne Group):卷組建立在物理卷之上,一個卷組中至少要包括一個物理卷,在卷組建立之后可動態添加物理卷到卷組中。一個LVM系統中可以只有一個卷組,也可以擁有多個卷組。

3. 邏輯卷……LV(Logical Volume):邏輯卷建立在卷組之上,卷組中的未分配空間可以用于建立新的邏輯卷,邏輯卷建立后可以動態地擴展和縮小空間。系統中的多個邏輯卷可以屬于同一個卷組,也可以屬于不同的多個卷組。

4. 物理區域……PE(Physical Extent):物理區域是物理卷中可用于分配的最小存儲單元,物理區域的大小可根據實際情況在建立物理卷時指定。物理區域大小一旦確定將不能更改,同一卷組中的所有物理卷的物理區域大小需要一致。

5. 邏輯區域……LE(Logical Extent):邏輯區域是邏輯卷中可用于分配的最小存儲單元,邏輯區域的大小取決于邏輯卷所在卷組中的物理區域的大小。

6. 卷組描述區域……VGDA(Volume Group Descriptor Area):卷組描述區域存在于每個物理卷中,用于描述物理卷本身、物理卷所屬卷組、卷組中的邏輯卷及邏輯卷中物理區域的分配等所有信息,卷組描述區域是在使用pvcreate建立物理卷時建立的。

4 LVM管理命令

PV:Physical(物理卷)

pvcreate、pvs 、pvdisplay 、pvremove、pvmove、pvscan

VG:Volume Group(卷組)

vgcreate、vgs、vgdisplay、vgremove、vgrename、vgreduce、vgextent

LV:logical Volume(邏輯卷)

lvs、lvdisplay、lvremove、lvextend、lvresize、lvscan、lvrename

功能命令

物理卷管理

卷組管理

邏輯卷管理

掃描

pvscan

vgscan

lvscan

建立

pvcreate

vgcreate

lvcreate

顯示

pvdisplay /pvs

vgdisplay /vgs

lvdisplay /lvs

刪除

pvremove

vgremove

lvremove

擴展

?

vgextend

lvextend

縮小

?

vgreduce

lvreduce

5 LVM的配置

部署邏輯卷創建過程:

1.創建物理卷, 添加物理磁盤

2.創建卷組, 添加物理卷加?到該卷組

3.在卷組中劃分邏輯卷

操作步驟:

1、部署邏輯卷

1. 準備物理磁盤

[root@lvm ~]# lsblk |grep "sd[bcd]"

image

2. 將磁盤加?pv

[root@lvm ~]# pvcreate /dev/sdb

image

3. 檢查pv創建情況

[root@lvm ~]# pvs

image

4. 創建名為datavg的卷組

vgcreate

-s 指定PE大小

[root@lvm ~]# vgcreate datavg /dev/sdb

image

5. 檢查卷組

[root@lvm ~]# vgs

image

6. 查看卷組組信息

[root@lvm ~]# vgdisplay test

image

7. 創建邏輯卷, 分配名稱, 以及??, 指定卷組

[root@lvm ~]# lvcreate -L 200M -n data test

image

8. 檢查邏輯卷

[root@lvm ~]# lvscan

image

9. 查看邏輯卷信息

[root@lvm ~]# lvdisplay /dev/test/data

image

10. 格式化?件系統

[root@lvm ~]# mkfs.xfs /dev/test/data

image

11. 掛載并使?

[root@lvm ~]# mkdir /data

[root@lvm ~]# mount /dev/test/data /data/

[root@lvm ~]# df –h

image

2、卷組池管理

1. 新硬盤加?pv

[root@lvm ~]# pvcreate /dev/sdc

image

2. 查看pv信息

[root@lvm ~]# pvdisplay /dev/sdc

image

3. 擴展卷組VG, 擴?VG卷組使?vgextend擴展

[root@lvm ~]# vgextend test /dev/sdc

image

4. 查看vg信息

[root@lvm ~]# vgdisplay test

image

5. 移除卷組VG, 移除vg組中某?塊硬盤

[root@lvm ~]# vgreduce datavg /dev/sdb

image

6. 查看vg信息

[root@lvm ~]# vgdisplay test

image

7.數據遷移卷組VG, 同?卷組的磁盤才可以進?在線遷移

檢查當前邏輯卷VG中PV使?情況

[root@lvm ~]# pvs

image

8. pvmove在線數據遷移?其他pv

[root@lvm ~]# pvmove /dev/sdb

image

9. 檢查是否將sdb數據遷移?sdc

[root@lvm ~]# pvs

image

3、擴容邏輯卷

邏輯卷的擴展, 取決于vg卷中剩余多少容量, 擴展容量不能超過卷組VG

xfs擴容 lv邏輯卷

1. 增加800M分配給邏輯卷 {注意: 800M +800M 不?樣;直接800M是擴展到800M,+800M是在原有基礎+800M。}

[root@lvm ~]# lvextend -L +800M /dev/test/data

image

2. 刷新磁盤分區

[root@lvm ~]# xfs_growfs /dev/test/data

image

3. 查看磁盤大小

[root@lvm ~]# df –Th

image

4. ext擴容分配磁盤池中多少百分?給邏輯卷

[root@lvm ~]# lvextend -l +50%FREE /dev/test/nfs

image

[root@lvm ~]# resize2fs /dev/test/nfs

image

5. 查看磁盤大小

[root@lvm ~]# df –Th

image

4、縮?邏輯卷

ext4 離線減小邏輯卷

1. 取消掛載/dev/test/nfs

[root@lvm ~]# umount /dev/test/nfs/

image

2. 掃描信息 (把空的數據補齊)

[root@lvm ~]# e2fsck -f /dev/test/nfs

image

3. 減小文件系統到600M

[root@lvm ~]# resize2fs /dev/test/nfs 600M

image

4. 減小邏輯卷為600M

[root@lvm ~]# lvreduce -L 600M /dev/test/nfs

image

5. 重新掛載磁盤,并查看掛載信息

[root@lvm ~]# mount /dev/test/nfs /nfs/

[root@lvm ~]# df –Th

image

xfs只能擴大文件系統大小,不能減小文件系統大小。 ?

5、刪除邏輯卷

當生產環境中想要重新部署LVM或者不再需要使用LVM時,則需要執行LVM的刪除操作。為此,需要提前備份好重要的數據信息,然后依次刪除邏輯卷、卷組、物理卷設備,這個順序不可顛倒。若你寫入自動掛載配置文件中,首先取消邏輯卷與目錄的掛載關聯,刪除配置文件中永久生效的設備參數。

1. 刪除邏輯卷設備,需要輸入y來確認操作

[root@lvm ~]# lvremove /dev/test/nfs

image

2. 刪除卷組,此處只寫卷組名稱即可,不需要設備的絕對路徑。

[root@lvm ~]# vgremove test

image

3. 刪除物理卷設備。

[root@lvm ~]# pvremove /dev/sdb /dev/sdc

image

4. 在上述操作執行完畢之后,再執行lvdisplay、vgdisplay、pvdisplay命令來查看LVM的信息時就不會再看到信息了(前提是上述步驟的操作是正確的)。

[root@lvm ~]# pvdisplay /dev/sdb

[root@lvm ~]# vgdisplay test

[root@lvm ~]# lvdisplay /dev/test/nfs

image