LVM逻辑卷管理

1. 名词解释

什么是LVM?

LVM是逻辑盘卷管理(Logical Volume Manager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。

英文缩写英文解释中文解释
PPPhysical Partitions物理分区。 LVM 的物理存储器,这些通常是标准分区。通过fdisk的t指令指定分区为8e类型(Linux LVM)
PVPhysical Volume物理卷。物理卷在逻辑卷管理系统最底层,可为整个物理硬盘或实际物理硬盘上的分区。
VGVolume Group卷组。卷组建立在PV上。能在卷组上创建一个或多个“LVM分区”(逻辑卷),LVM卷组由一个或多个物理卷组成。
LVLogica Volume逻辑卷。LV是位于PV上的信息的组合。

PE(physical extent): PE是物理卷中可用于分配的最小存储单元,PE大小在建立卷组时指定,一旦确定不能更改,同一卷组所有物理卷的物理区域大小需一致,新的PV加入到VG后,pe的大小自动更改为vg中定义的pe大小

LE(logical extent):LE是逻辑卷中可用于分配的最小存储单元,LE的大小取决于逻辑卷所在卷组中的PE的大小。

2. 创建LVM

1:安装了LVM管理工具
可通过yum install lvm*安装

2:创建PP
通过fdisk创建若干分区,定义Id为8e

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     2099199     1048576   8e  Linux LVM
/dev/sdb2         2099200     6293503     2097152   8e  Linux LVM
/dev/sdb3         6293504    12584959     3145728   8e  Linux LVM

3:创建PV

pvcreate 将物理分区新建为pv
pvscan 扫描所有磁盘上的物理卷
pvs/pvscan 查看系统里有pv的磁盘
pvdisplay 显示系统上面的pv状态
pvremove 删除pv

[root@localhost /]# pvcreate /dev/sdb1 /dev/sdb2 /dev/sdb3
  Physical volume "/dev/sdb1" successfully created.
  Physical volume "/dev/sdb2" successfully created.
  Physical volume "/dev/sdb3" successfully created.
[root@localhost /]# pvs
  PV         VG Fmt  Attr PSize  PFree
  /dev/sda2  ol lvm2 a--  19.00g    0 
  /dev/sdb1     lvm2 ---   1.00g 1.00g
  /dev/sdb2     lvm2 ---   2.00g 2.00g
  /dev/sdb3     lvm2 ---   3.00g 3.00g

4: 创建VG

vgcreate [-s xM] vgName pv1 pv2 pv3 ,新建vg,-s后面接pe的大小(可选),单位是M,G,可以放多块pv
vgscan 扫描
vgextend 扩展vg,就是增加pv
vgs/vgscan 查看系统里有vg的磁盘
vgdisplay 显示系统上面的vg状态
vgremove 删除vg
vgreduce 在vg里删除pv

[root@localhost /]# vgcreate vg0 /dev/sdb1 /dev/sdb2
  Volume group "vg0" successfully created
[root@localhost /]# vgs
  VG  #PV #LV #SN Attr   VSize  VFree
  ol    1   2   0 wz--n- 19.00g    0 
  vg0   2   0   0 wz--n-  2.99g 2.99g

5: 创建LV

lvcreate -l pe num /-L size -n lvname vgName  新建lv,-l指定pe的个数,-L指定容量,M,G
lvextend 增加容量
lvs/lvscan 查看系统里有lv的磁盘
lvdisplay vgName 显示系统上面的lv状态
lvremove 删除lv
lvreduce 在lv里减少容量

[root@localhost /]# lvcreate -L 510M -n lv01 vg0
  Rounding up size to full physical extent 512.00 MiB
  Logical volume "lv01" created.
[root@localhost /]# lvdisplay /dev/vg0
  --- Logical volume ---
  LV Path                /dev/vg0/lv01
  LV Name                lv01
  VG Name                vg0
  LV UUID                cmV0hm-Rquf-Tafp-MSWS-f0hM-8q5g-w1c7NN
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2020-03-20 02:31:57 +0800
  LV Status              available
  # open                 0
  LV Size                512.00 MiB
  Current LE             128
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           251:2

在这里插入图片描述
6: 格式化

[root@localhost /]# mkfs.xfs  /dev/vg0/lv01
meta-data=/dev/vg0/lv01          isize=256    agcount=4, agsize=32768 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=0        finobt=0, sparse=0
data     =                       bsize=4096   blocks=131072, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=0
log      =internal log           bsize=4096   blocks=853, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
#格式化后会生成文件系统uuid
[root@localhost /]# blkid 
/dev/sda1: UUID="9d5fb36f-75f2-4562-bb37-93f98b952753" TYPE="xfs" 
/dev/sda2: UUID="7Dew0p-TSr9-pfOc-8q2V-mDXz-YhBl-72SW9G" TYPE="LVM2_member" 
/dev/sr0: UUID="2016-11-08-13-35-03-00" LABEL="OL-7.3 Server.x86_64" TYPE="iso9660" PTTYPE="dos" 
/dev/mapper/ol-root: UUID="8817dd11-3448-48b3-ab7b-bd331d35e8b7" TYPE="xfs" 
/dev/mapper/ol-swap: UUID="d6a29f78-3afd-4161-a9b5-2c0d70cd6782" TYPE="swap" 
/dev/sdb1: UUID="ogri0N-oqe2-hKlZ-kq33-KOFJ-KZxK-gggXyH" TYPE="LVM2_member" 
/dev/sdb2: UUID="HgHVBj-wlkc-30w3-r2q1-0j8r-9hHn-oBUlk3" TYPE="LVM2_member" 
/dev/sdb3: UUID="8i3M8H-LsKB-wn2X-dmRH-tuCm-cwIm-BQGoE6" TYPE="LVM2_member" 
/dev/mapper/vg0-lv01: UUID="7c6d4a82-d951-4acb-9b28-58d5aad73b84" TYPE="xfs" 

7: 挂载

mount /dev/vg0/lv01 /data2

[root@localhost /]# df -hT
文件系统             类型      容量  已用  可用 已用% 挂载点
devtmpfs             devtmpfs  968M     0  968M    0% /dev
tmpfs                tmpfs     992M   84K  992M    1% /dev/shm
tmpfs                tmpfs     992M  9.1M  983M    1% /run
tmpfs                tmpfs     992M     0  992M    0% /sys/fs/cgroup
/dev/mapper/ol-root  xfs        17G  3.6G   14G   21% /
/dev/sda1            xfs      1014M  195M  820M   20% /boot
tmpfs                tmpfs     199M   16K  199M    1% /run/user/42
tmpfs                tmpfs     199M     0  199M    0% /run/user/1000
tmpfs                tmpfs     199M     0  199M    0% /run/user/0
/dev/mapper/vg0-lv01 xfs       509M   26M  483M    6% /data2

3. LVM在线扩容

1: vg空间足够,可直接扩容lv

分别查看lv和vg当前空间:

[root@localhost ~]# lvdisplay /dev/vg0/lv01  #lv名称、vg名称
...内容...
[root@localhost ~]# vgdisplay /dev/vg0	#vg名称
...内容...

2: vg空间不足,需先扩vg,再扩lv

[root@localhost ~]# vgs
  VG  #PV #LV #SN Attr   VSize  VFree
  ol    1   2   0 wz--n- 19.00g    0 
  vg0   2   1   0 wz--n-  2.99g 2.49g
[root@localhost ~]# vgextend vg0 /dev/sdb3
  Volume group "vg0" successfully extended
[root@localhost ~]# vgs
  VG  #PV #LV #SN Attr   VSize  VFree
  ol    1   2   0 wz--n- 19.00g    0 
  vg0   3   1   0 wz--n-  5.99g 5.49g
[root@localhost ~]# 

3: 扩容lv
两种方法:

###1. 扩大到1个G
[root@localhost ~]# lvs /dev/vg0
  LV   VG  Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv01 vg0 -wi-a----- 512.00m                                                                                               
[root@localhost ~]# lvextend -L 1G /dev/vg0/lv01
  Size of logical volume vg0/lv01 changed from 512.00 MiB (128 extents) to 1.00 GiB (256 extents).
  Logical volume vg0/lv01 successfully resized.
[root@localhost ~]# lvs /dev/vg0
  LV   VG  Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert                                                  
  lv01 vg0 -wi-a-----  1.00g  
  
###2. 扩大1个G
[root@localhost ~]# lvextend -L +1G /dev/vg0/lv01
  Size of logical volume vg0/lv01 changed from 1.00 GiB (256 extents) to 2.00 GiB (512 extents).
  Logical volume vg0/lv01 successfully resized.
[root@localhost ~]# lvs /dev/vg0
  LV   VG  Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv01 vg0 -wi-a----- 2.00g 
在这里插入代码片

4: lv扩容部分格式化
ext4:

resize2fs /dev/vg0/lv01

xfs:

xfs_growfs /dev/vg0/lv01

4. LVM数据迁移

LV数据迁移,其实就是PV的迁移,实际迁移的是allocated PE。

  • pvmove /dev/sdb1(将数据从/dev/sdb1迁移出)
[root@localhost ~]# pvmove /dev/sdb1
  /dev/sdb1: Moved: 24.71%
  /dev/sdb1: Moved: 100.00%
[root@localhost ~]# 
[root@localhost ~]# pvs
  PV         VG  Fmt  Attr PSize    PFree   
  /dev/sda2  ol  lvm2 a--    19.00g       0 
  /dev/sdb1  vg0 lvm2 a--  1020.00m 1020.00m
  /dev/sdb2  vg0 lvm2 a--     2.00g 1016.00m
  /dev/sdb3  vg0 lvm2 a--     3.00g    2.00g

推荐一个比较酷的命令,可以查看LV上的PE来自哪个PV。

空间Lsize为2g
分别来自/dev/sdb3的0-254 PE; /dev/sdb2的0-256 PE

[root@localhost ~]# lvs -o name,vg_name,devices,size,seg_pe_ranges
  LV   VG  Devices         LSize  PE Ranges          
  root ol  /dev/sda2(0)    17.00g /dev/sda2:0-4350   
  swap ol  /dev/sda2(4351)  2.00g /dev/sda2:4351-4862
  lv01 vg0 /dev/sdb3(0)     2.00g /dev/sdb3:0-254    
  lv01 vg0 /dev/sdb2(0)     2.00g /dev/sdb2:0-256  
  • pvmove /dev/sdb2 /dev/sdb3 (将数据从/dev/sdb2迁移至/dev/sdb3)
[root@localhost ~]# pvmove /dev/sdb2 /dev/sdb3
  /dev/sdb2: Moved: 12.84%
  /dev/sdb2: Moved: 100.00%
[root@localhost ~]# lvs -o name,vg_name,devices,size,seg_pe_ranges
  LV   VG  Devices         LSize  PE Ranges          
  root ol  /dev/sda2(0)    17.00g /dev/sda2:0-4350   
  swap ol  /dev/sda2(4351)  2.00g /dev/sda2:4351-4862
  lv01 vg0 /dev/sdb3(0)     2.00g /dev/sdb3:0-511 

5. 删除LVM

  • lvremove
#创建一个lv02
[root@localhost ~]# lvcreate -L 100M -n lv02 vg0
WARNING: xfs signature detected on /dev/vg0/lv02 at offset 0. Wipe it? [y/n]: y
  Wiping xfs signature on /dev/vg0/lv02.
  Logical volume "lv02" created.
  
#删除lv02
[root@localhost ~]# lvremove /dev/vg0/lv02
Do you really want to remove active logical volume vg0/lv02? [y/n]: y
  Logical volume "lv02" successfully removed

如果要把PP释放出来,需要依次删除LV、VG、PV。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值