Linux下配置LVM
1 LVM介紹
LVM(Logical Volume Manager)邏輯卷管理,它是Linux環境下對磁碟分割槽進行管理的一種機制,LVM是建立在硬碟和分割槽之上的一個邏輯層,來提高磁碟分割槽管理的靈活性。通過LVM系統管理員可以輕鬆管理磁碟分割槽,
邏輯卷管理器的技術結構
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. 準備物理磁碟
[[email protected] ~]# lsblk |grep "sd[bcd]"
2. 將磁碟加⼊pv
[[email protected] ~]# pvcreate /dev/sdb
3. 檢查pv建立情況
[[email protected] ~]# pvs
4. 建立名為datavg的卷組
vgcreate
-s 指定PE大小
[[email protected] ~]# vgcreate datavg /dev/sdb
5. 檢查卷組
[[email protected] ~]# vgs
6. 檢視卷組組資訊
[[email protected] ~]# vgdisplay test
7. 建立邏輯卷, 分配名稱, 以及⼤⼩, 指定卷組
[[email protected] ~]# lvcreate -L 200M -n data test
8. 檢查邏輯卷
[[email protected] ~]# lvscan
9. 檢視邏輯卷資訊
[[email protected] ~]# lvdisplay /dev/test/data
10. 格式化⽂件系統
[[email protected] ~]# mkfs.xfs /dev/test/data
11. 掛載並使⽤
[[email protected] ~]# mkdir /data
[[email protected] ~]# mount /dev/test/data /data/
[[email protected] ~]# df –h
2、卷組池管理
1. 新硬碟加⼊pv
[[email protected] ~]# pvcreate /dev/sdc
2. 檢視pv資訊
[[email protected] ~]# pvdisplay /dev/sdc
3. 擴展卷組VG, 擴⼤VG卷組使⽤vgextend擴充套件
[[email protected] ~]# vgextend test /dev/sdc
4. 檢視vg資訊
[[email protected] ~]# vgdisplay test
5. 移除卷組VG, 移除vg組中某⼀塊硬碟
[[email protected] ~]# vgreduce datavg /dev/sdb
6. 檢視vg資訊
[[email protected] ~]# vgdisplay test
7.資料遷移卷組VG, 同⼀卷組的磁碟才可以進⾏線上遷移
檢查當前邏輯卷VG中PV使⽤情況
[[email protected] ~]# pvs
8. pvmove線上資料遷移⾄其他pv
[[email protected] ~]# pvmove /dev/sdb
9. 檢查是否將sdb資料遷移⾄sdc
[[email protected] ~]# pvs
3、擴容邏輯卷
邏輯卷的擴充套件, 取決於vg卷中剩餘多少容量, 擴充套件容量不能超過卷組VG
xfs擴容 lv邏輯卷
1. 增加800M分配給邏輯卷 {注意: 800M +800M 不⼀樣;直接800M是擴充套件到800M,+800M是在原有基礎+800M。}
[[email protected] ~]# lvextend -L +800M /dev/test/data
2. 重新整理磁碟分割槽
[[email protected] ~]# xfs_growfs /dev/test/data
3. 檢視磁碟大小
[[email protected] ~]# df –Th
4. ext擴容分配磁碟池中多少百分⽐給邏輯卷
[[email protected] ~]# lvextend -l +50%FREE /dev/test/nfs
[[email protected] ~]# resize2fs /dev/test/nfs
5. 檢視磁碟大小
[[email protected] ~]# df –Th
4、縮⼩邏輯卷
ext4 離線減小邏輯卷
1. 取消掛載/dev/test/nfs
[[email protected] ~]# umount /dev/test/nfs/
2. 掃描資訊 (把空的資料補齊)
[[email protected] ~]# e2fsck -f /dev/test/nfs
3. 減小檔案系統到600M
[[email protected] ~]# resize2fs /dev/test/nfs 600M
4. 減小邏輯卷為600M
[[email protected] ~]# lvreduce -L 600M /dev/test/nfs
5. 重新掛載磁碟,並檢視掛載資訊
[[email protected] ~]# mount /dev/test/nfs /nfs/
[[email protected] ~]# df –Th
xfs只能擴大檔案系統大小,不能減小檔案系統大小。
5、刪除邏輯卷
當生產環境中想要重新部署LVM或者不再需要使用LVM時,則需要執行LVM的刪除操作。為此,需要提前備份好重要的資料資訊,然後依次刪除邏輯卷、卷組、物理卷裝置,這個順序不可顛倒。若你寫入自動掛載配置檔案中,首先取消邏輯卷與目錄的掛載關聯,刪除配置檔案中永久生效的裝置引數。
1. 刪除邏輯卷裝置,需要輸入y來確認操作
[[email protected] ~]# lvremove /dev/test/nfs
2. 刪除卷組,此處只寫卷組名稱即可,不需要裝置的絕對路徑。
[[email protected] ~]# vgremove test
3. 刪除物理卷裝置。
[[email protected] ~]# pvremove /dev/sdb /dev/sdc
4. 在上述操作執行完畢之後,再執行lvdisplay、vgdisplay、pvdisplay命令來檢視LVM的資訊時就不會再看到資訊了(前提是上述步驟的操作是正確的)。
[[email protected] ~]# pvdisplay /dev/sdb
[[email protected] ~]# vgdisplay test
[[email protected] ~]# lvdisplay /dev/test/nfs