LVM卷管理
阿新 • • 發佈:2020-08-07
LVM邏輯卷管理
LVM 利用 Linux 核心的 device-mapper 來實現儲存系統的虛擬化(系統分割槽獨立於底層硬體)。 通過 LVM,你可以實現儲存空間的抽象化並在上面建立虛擬分割槽(virtual partitions),可以更簡便地擴大和縮小分割槽,可以增刪分割槽時無需擔心某個硬碟上沒有足夠的連續空間
LVM術語:
物理卷:pv
卷組:vg
邏輯卷:lv
物理區域:pe
1、檢視核心
LVM1版本需要2.4(包括)以後的核心支援;LVM2需要2.6(包括)以後的核心版本支援
[root@vm11 ~]# cat /etc/redhat-release CentOS Linux release 7.6.1810 (Core)
一、LVM(邏輯卷管理)
1.1 磁碟分割槽
# 新建 fdisk /dev/sdb Command (m for help): n Command action e extended p primary partition (1-4) # 主分割槽 p # 分割槽號 Partition number (1-4): 1 # 回車用預設的 1 First cylinder (1-1044, default 1): # 大小 Last cylinder, +cylinders or +size{K,M,G} (1-1044, default 1044): # 改變型別 Command (m for help): t Selected partition 1 #LVM 的分割槽程式碼 Hex code (type L to list codes): 8e Changed system type of partition 1 to 8e (Linux LVM) # 儲存 w # 退出 q # 檢視建立完後的分割槽 fdisk -l Disk /dev/sda: 96.6 GB, 96636764160 bytes 255 heads, 63 sectors/track, 11748 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x0008cbaf Device Boot Start End Blocks Id System /dev/sda1 * 1 64 512000 83 Linux Partition 1 does not end on cylinder boundary. /dev/sda2 64 11749 93858816 8e Linux LVM Disk /dev/sdb: 214.7 GB, 214748364800 bytes 255 heads, 63 sectors/track, 26108 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x16396101 Device Boot Start End Blocks Id System /dev/sdb1 1 26108 209712478+ 8e Linux LVM
1.2 物理卷管理
# 建立物理卷(PV) pvcreate /dev/sdb1 pvscan PV /dev/sdb1 VG vg_data lvm2 [200.00 GiB / 30.00 GiB free] PV /dev/sda2 VG VolGroup lvm2 [89.51 GiB / 1.51 GiB free] Total: 2 [289.50 GiB] / in use: 2 [289.50 GiB] / in no VG: 0 [0 ] pvdisplay --- Physical volume --- PV Name /dev/sdb1 VG Name vg_data PV Size 200.00 GiB / not usable 1.34 MiB Allocatable yes PE Size 4.00 MiB Total PE 51199 Free PE 7679 Allocated PE 43520 PV UUID c9js6G-WP93-ug9b-9aXe-unnZ-doWQ-AkzOKf --- Physical volume --- PV Name /dev/sda2 VG Name VolGroup PV Size 89.51 GiB / not usable 3.00 MiB Allocatable yes PE Size 4.00 MiB Total PE 22914 Free PE 386 Allocated PE 22528 PV UUID bFne0f-RnL8-vut2-AcKr-fr9k-VfeG-C8OHSR # 刪除物理卷 pvremove /dev/sdb1
1.3 卷組管理
# 建立卷組(VG)
vgcreate vg_data /dev/sdb1
vgcreate vg_data /dev/hda{6,7,8}
# 擴充套件 VG
vgextend vg_data /dev/hda9
# 檢視 VG 資訊
vgscan
Reading all physical volumes. This may take a while...
Found volume group "vg_data" using metadata type lvm2
Found volume group "VolGroup" using metadata type lvm2
vgdisplay
--- Volume group ---
VG Name vg_data
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 4
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 3
Open LV 3
Max PV 0
Cur PV 1
Act PV 1
VG Size 200.00 GiB
PE Size 4.00 MiB
Total PE 51199
Alloc PE / Size 43520 / 170.00 GiB
Free PE / Size 7679 / 30.00 GiB
VG UUID EQhiUt-Waj1-F3V2-cwej-2joz-oC3P-JMSFui
--- Volume group ---
VG Name VolGroup
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 6
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 5
Open LV 5
Max PV 0
Cur PV 1
Act PV 1
VG Size 89.51 GiB
PE Size 4.00 MiB
Total PE 22914
Alloc PE / Size 22528 / 88.00 GiB
Free PE / Size 386 / 1.51 GiB
VG UUID i0qDld-uOz4-P1BS-2gN8-2vhj-5gdc-DnHfa4
# 刪除 VG
vgremove vg_data
1.4 邏輯卷管理
# 建立邏輯卷(LV)
lvcreate -L 20g -n lv_oracle vg_data
lvcreate -l 100%FREE -n lv_oracle vg_data
# 檢視 LV
lvscan
ACTIVE '/dev/vg_data/lv_oracle' [20.00 GiB] inherit
ACTIVE '/dev/VolGroup/lv_root' [50.00 GiB] inherit
ACTIVE '/dev/VolGroup/lv_home' [10.00 GiB] inherit
lvdisplay
--- Logical volume ---
LV Path /dev/vg_data/lv_oracle
LV Name lv_oracle
VG Name vg_data
LV UUID P3jVXt-92Lp-QElD-ddl8-lW4r-okz7-n8fdXD
LV Write Access read/write
LV Creation host, time capdb, 2016-03-17 17:12:43 +0800
LV Status available
# open 1
LV Size 20.00 GiB
Current LE 5120
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:5
# 格式化邏輯卷
mkfs -t ext4 /dev/vg_data/lv_oracle
mkfs.ext4 /dev/vg_data/lv_oracle
# 掛載邏輯卷
mkdir /oracle
# 修改 fstab
vi /etc/fstab
/dev/vg_data/lv_oracle /oracle ext4 dafualts 0 0
# 測試 lv 是否可以掛載
mount -a
mount /dev/vg_data/lv_oracle /oracle
df -h
# 刪除邏輯卷
fuser -m /oracle
umount /oracle
lvremove /dev/vg_data/lv_oracle
總結:
新建20G邏輯卷
pvcreate /dev/sdb1
vgcreate vg_data /dev/sdb1
vgcreate vg_data /dev/hda9 #擴展卷組
lvcreate -L 20g -n lv_job vg_data
mkfs -t ext4 /dev/vg_data/lv_job
mkdir /oracle
mount /dev/vg_data/lv_job /oracle
二、LVM伸縮管理
2.1 LVM擴充套件
LVM 特點就是支援線上動態擴容,如果為了穩妥也可以先 umount
# 檢視 Free PE / Size 可用空間
vgdisplay
--- Volume group ---
VG Name vg_data
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 4
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 3
Open LV 3
Max PV 0
Cur PV 1
Act PV 1
VG Size 200.00 GiB
PE Size 4.00 MiB
Total PE 51199
Alloc PE / Size 43520 / 170.00 GiB
Free PE / Size 7679 / 30.00 GiB
VG UUID EQhiUt-Waj1-F3V2-cwej-2joz-oC3P-JMSFui
# 設定邏輯卷的大小
lvresize -L 40g /dev/vg_data/lv_oracle
lvresize -L +20g /dev/vg_data/lv_oracle
# 檢查磁碟錯誤,等待時間較長可以考慮跳過
e2fsck -f /dev/vg_data/lv_oracle
# 更新檔案系統資訊
resize2fs /dev/vg_data/lv_oracle
# 檢查邏輯卷狀態
lvdisplay vg_data
2.2 LVM縮減
# 解除安裝 LV
umout /oracle
# 檢查磁碟錯誤
e2fsck -f /dev/vg_data/lv_oracle
# 縮小檔案系統,更新檔案系統資訊
resize2fs /dev/vg_data/lv_oracle 10g
# 減少 LV 大小
lvresize -L 10g /dev/vg_data/lv_oracle
lvresize -L -30g /dev/vg_data/lv_oracle
# 檢查邏輯卷大小
lvdisplay
df -h
2.3 擴展卷組
# 建立一個 2GB 分割槽 sdc1,型別為 LVM(8e)
fdisk /dev/sdc
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-1044, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-1044, default 1044): +2G
Command (m for help): t
Selected partition 1
Hex code (type L to list codes): 8e
Changed system type of partition 1 to 8e (Linux LVM)
Command (m for help): w
The partition table has been altered!
# 建立一個物理卷 /dev/sdc1
pvcreate /dev/sdc1
# 增加到已存在的卷組
vgextend vg_data /dev/sdc1
# 驗證卷組大小
vgdisplay
2.4 刪除卷組
# 解除安裝邏輯卷
umount /oracle
# 刪除邏輯卷
lvremove /dev/vg_data/lv_oracle
# 取消啟用卷組
vgchange -a n vg_data
# 刪除卷組
vgremove vg_data
# 刪除物理卷
pvremove /dev/sdb1
pvremove /dev/hda{6,7,8}
# 普通磁碟型別是 83
fdisk /dev/sdb
t 83
lvm卷在重啟後消失問題處理過程
故障:
系統重啟後,發現LVM中/dev/sdb1丟失,如下
/dev/vg01/lvm01 完全消失,只剩下/dev/sdb盤
原因分析:
一般LVM的VG丟失都是由於突然斷電或者更換了作業系統等原因引起。嘗試執行vgscan命令掃描卷組
初步判斷是因為系統重啟後,/dev/sdb1消失導致VG無法找到物理卷
解決方法:
1、備份資料
為了防止資料丟失或破壞,首先對/dev/emcpowera裝置的資料進行備份
dd if=/dev/sdb of=/data/sdb #我的資料11T資料盤,太大,所以沒有做資料備份這個動作
2、修正UUID號
pvcreate -u p6LgHa-UfMC-oAD1-1kSw-zSlM-dlya-CZf9iF /dev/sdb --restorefile /etc/lvm/backup/vg01
報錯:原因是沒有對/dev/sdb進行分割槽
分割槽操作
注意:需問清楚之前sdb1分割槽大小,這次採取預設分割槽操作即可即
fdisk /dev/sdb
分割槽成功後重新執行修正uuid號
3、恢復卷組資訊
vgcfgrestore -f /etc/lvm/backup/vg01 vg01
4、檢視相關資訊
相關資訊都已恢復
pvs
vgs
lvs
4、啟用邏輯卷
lvchange -ay /dev/vg01/lvm01
5、重新掛載
mount /dev/vg01/lvm01 /work
6、檢視檔案是否都在