LVM卷管理

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、查看文件是否都在

原文地址:https://www.cnblogs.com/pansn/p/13452079.html