LVM逻辑卷管理

一.LVM的工作原理

LVM是在磁盘分区和文件系统之间添加的一个逻辑层,来为文件系统屏蔽下层磁盘分区布局,提供一个抽象的盘卷,在盘卷上建立文件系统。管理员利用LVM可以在磁盘不用重新分区的情况下动态调整文件系统的大小,并且利用LVM管理的文件系统可以跨越磁盘,当服务器添加了新的磁盘后,管理员不必将原有的文件移动到新的磁盘上,而是通过LVM可以直接扩展文件系统跨越磁盘

         它就是通过将底层的物理硬盘封装起来,然后以逻辑卷的方式呈现给上层应用。在LVM中,其通过对底层的硬盘进行封装,当我们对底层的物理硬盘进行操作时,其不再是针对于分区进行操作,而是通过一个叫做逻辑卷的东西来对其进行底层的磁盘管理操作。

       逻辑卷管理的核心在于如何处理我们系统中安装的硬盘及其分区,对于我们的逻辑卷管理器来说,把硬盘当作物理卷来看

 

1.1 LVM常用的术语

先来了解一下常用的名词解释

物理存储介质(The physical media)

       这里指系统的存储设备文件,可是磁盘分区,整个磁盘,RAID阵列或SAN磁盘,设备必须初始化为LVM物理卷,才能与LVM结合使用

物理卷PV(physical volume) 

       物理卷就是指硬盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数 (注册物理设备以便在卷组中使用),创建物理卷它可以用硬盘分区,也可以用硬盘本身;

卷组VG(Volume Group) 

         LVM卷组类似于非LVM系统中的物理硬盘,一个LVM卷组由一个或多个物理卷组成 

逻辑卷LVlogical volume 

  类似于非LVM系统中的硬盘分区,LV建立在VG之上,可以在LV之上建立文件系统

PE(physical extents) 

         PV中可以分配的最少存储单元,PE的大小是可以指定的,默认为4MB

LE(logical extent) 

         LV中可以分配的最少存储单元,在同一个卷组中,LE的大小和PE是相同的,并且一一对应

LVM逻辑卷管理_第1张图片

1.2 LVM优点

使用卷组,使多个硬盘空间看起来像是一个大的硬盘

使用逻辑卷,可以跨多个硬盘空间的分区  sdb1 sdb2  sdc1  sdd2  sdf

在使用逻辑卷时,它可以在空间不足时动态调整它的大小

在调整逻辑卷大小时,不需要考虑逻辑卷在硬盘上的位置,不用担心没有可用的连续空间

可以在线对LV,VG 进行创建,删除,调整大小等操作。LVM上的文件系统也需要重新调整大小。

可以将正在使用中的硬盘迁移到别的硬盘上(emc--500G  DELL---1.2T)

允许创建快照,可以用来保存文件系统的备份。只能使用一次

解释:

         LVM是软件的卷管理方式,而RAID是磁盘保护的方法。对于重要的业务来说,一般是同时存在。RAID用来保护物理的磁盘不会因为故障而中断业务。LVM用来实现对卷的良性的管理,更好的利用磁盘资源

二.创建LVM的基本步骤

1) 先做物理卷 pvcreate /dev/sdb1

2) 把不同的物理卷加入到卷组当中  vgcreate datavg /dev/sdb1

3) 创建逻辑卷  lvcreate

4) 格式化文件系统  mkfs.xfs

5)创建挂载点并进行挂载  mount

2.1 lvm常用的命令

功能

PV管理命令

VG管理命令

LV管理命令

scan 扫描

pvscan

vgscan

lvscan

create 创建

pvcreate

vgcreate

lvcreate

display显示

pvdisplay

vgdisplay

lvdisplay

remove 移除

pvremove

vgremove

lvremove

extend 扩展

 

vgextend

lvextend

reduce减少

 

vgreduce

lvreduce

2.2 创建并使用LVM逻辑卷

查看卷名

简单对应卷信息的查看

扫描相关的所有的对应卷

详细对应卷信息的查看

物理卷

pvs

pvscan

pvdisplay

卷组

vgs

vgscan

vgdisplay

逻辑卷

lvs

lvscan

lvdisplay

2.3 创建PV

准备硬盘

定义物理卷:fdisk /dev/sdb ==> t ==>选择分区号 === 8e ==w

创建pv

#pvcrate device-name

LVM逻辑卷管理_第2张图片

把物理卷标记为LVM系统中的分区

LVM逻辑卷管理_第3张图片

2.4 创建卷组

#vgcreate vgname pv1 pv2 ...

查看VG简要信息

LVM逻辑卷管理_第4张图片

查看VG详细信息

LVM逻辑卷管理_第5张图片

再去看一下你的物理卷

LVM逻辑卷管理_第6张图片

2.5 创建LV

#lvcreate -n 指定新逻辑卷名称 -L 指定大小(M,G){-l 指定LE的数量} vgname

LVM逻辑卷管理_第7张图片

2.6 文件系统格式与挂载

LVM逻辑卷管理_第8张图片

三.实战

3.1 PE大小的更改

指定PE的大小用的参数: -s

[root@xuegod1603 ~]# vgcreate -s 16M vg01 /dev/sdb7

  Volume group "vg01" successfully created

[root@xuegod1603 ~]# vgdisplay vg01 

 --- Volume group ---

  VG Name               vg01

  System ID            

  Format                lvm2

  Metadata Areas        1

  Metadata Sequence No  1

  VG Access             read/write

  VG Status             resizable

  MAX LV                0

  Cur LV                0

  Open LV               0

  Max PV                0

  Cur PV                1

  Act PV                1

  VG Size               96.00 MiB

  PE Size               16.00 MiB

  Total PE              6

  Alloc PE / Size       0 / 0  

  Free  PE / Size       6 / 96.00 MiB

  VG UUID               h6zoV3-h4eO-XN6H-16mf-8H0K-S9yI-GVNbJZ

PE的大小只有为2的幂数,且最大为512M

3.2 LV扩容

首先,确定一下是否还有可扩容的空间,因为空间是从VG里面创建的。所以我们要保证VG还有剩余空间,而且LV不能够跨VG扩容的

LVM逻辑卷管理_第9张图片

用的命令如下:

extend扩展

vgextend

lvextend

扩容逻辑卷

[root@xuegod1603 ~]# lvextend -L +50m /dev/datavg/waslv

  Rounding size to boundary between physical extents: 52.00 MiB.

  Size of logical volume datavg/waslv changed from 32.00 MiB (8 extents) to 84.00 MiB (21 extents).

  Logical volume datavg/waslv successfully resized.

说明:在指定大小的时候,扩容50m和扩容到50m是不一样的写法

扩容50m ===》 -L +50m

扩容到50M ==》 -L 50m

看一下文件系统是否扩容成功?

上面我们可以看到LV虽然扩展了,但是文件系统大小还是原来的

ext类型文件系统扩容: resize2fs

xfs类型文件系统扩容: xfs_growfs

resize2fsxfs_growfs 两者的区别是传递的参数不一样的,xfs_growfs是采用的挂载点;resize2fs是逻辑卷名称,而且resize2fs命令不能对xfs类型文件系统使用

LVM逻辑卷管理_第10张图片

LVM逻辑卷管理_第11张图片

除了上在的文件系统扩容方式,还有一种替代方式:在lvextend命令中加参数 -r ,它是支持多种不同的文件系统,比如: ext3 ext4  xfs...

[root@xuegod1603 ~]# lvextend -r -L +20M /dev/datavg/waslv

  Size of logical volume datavg/waslv changed from 84.00 MiB (21 extents) to 104.00 MiB (26 extents).

  Logical volume datavg/waslv successfully resized.

meta-data=/dev/mapper/datavg-waslv isize=512    agcount=6, agsize=4096 blks

         =                       sectsz=512   attr=2, projid32bit=1

         =                       crc=1        finobt=0 spinodes=0

data     =                       bsize=4096   blocks=21504, imaxpct=25

         =                       sunit=0      swidth=0 blks

naming   =version 2              bsize=4096   ascii-ci=0 ftype=1

log      =internal               bsize=4096   blocks=855, version=2

         =                       sectsz=512   sunit=0 blks, lazy-count=1

realtime =none                   extsz=4096   blocks=0, rtextents=0

data blocks changed from 21504 to 26624

[root@xuegod1603 ~]# df -Th /was/

Filesystem               Type  Size  Used Avail Use% Mounted on

/dev/mapper/datavg-waslv xfs   101M  1.9M   99M   2% /was

[root@xuegod1603 ~]# lvextend -r -L +20M /dev/datavg/weblv  

Size of logical volume datavg/weblv changed from 60.00 MiB (15 extents) to 80.00 MiB (20 extents).

  Logical volume datavg/weblv successfully resized.

resize2fs 1.42.9 (28-Dec-2013)

Filesystem at /dev/mapper/datavg-weblv is mounted on /weblv; on-line resizing required

old_desc_blocks = 1, new_desc_blocks = 1

The filesystem on /dev/mapper/datavg-weblv is now 81920 blocks long.

[root@xuegod1603 ~]# df -Th /weblv

Filesystem               Type  Size  Used Avail Use% Mounted on

/dev/mapper/datavg-weblv ext4   77M  1.4M   72M   2% /weblv

3.3 VG扩容

前提要准备物理卷

LVM逻辑卷管理_第12张图片

扩容VG

LVM逻辑卷管理_第13张图片

3.4 LVM缩小

LV的缩小

[root@xuegod1603 ~]# lvreduce -L -34m /dev/datavg/waslv

  Rounding size to boundary between physical extents: 32.00 MiB.

  WARNING: Reducing active and open logical volume to 72.00 MiB.

  THIS MAY DESTROY YOUR DATA (filesystem etc.)

Do you really want to reduce datavg/waslv? [y/n]: y

  Size of logical volume datavg/waslv changed from 104.00 MiB (26 extents) to 72.00 MiB (18 extents).

  Logical volume datavg/waslv successfully resized.

LINUX7只能对LV动态增加,但是XFS不支持缩减

VG的缩小,前提要保证pv没有被使用

[root@xuegod1603 ~]# vgreduce datavg /dev/sdb8

  Removed "/dev/sdb8" from volume group "datavg"

[root@xuegod1603 ~]# pvs

  PV         VG     Fmt  Attr PSize   PFree 

  /dev/sda2  rootvg lvm2 a--   12.00g      0

  /dev/sdb10        lvm2 ---  100.00m 100.00m

  /dev/sdb5  datavg lvm2 a--   96.00m      0

  /dev/sdb6  datavg lvm2 a--   96.00m  40.00m

  /dev/sdb7  vg01   lvm2 a--   96.00m  96.00m

  /dev/sdb8         lvm2 ---  100.00m 100.00m

  /dev/sdb9         lvm2 ---  100.00m 100.00m

3.5 LVM删除

创建:  pvcreate ---> vgcreate ---> lvcrdeate ---> mkfs.xfs lv ----> mount

删除: umount ----> lvremove lv -----> vgremove vg -----> pvremove

 

[root@xuegod1603 ~]# umount /was

[root@xuegod1603 ~]# lvremove /dev/datavg/waslv

Do you really want to remove active logical volume datavg/waslv? [y/n]: y

  Logical volume "waslv" successfully removed

[root@xuegod1603 ~]# vgs

  VG     #PV #LV #SN Attr   VSize   VFree 

  datavg   2   1   0 wz--n- 192.00m 112.00m

  rootvg   1   2   0 wz--n-  12.00g      0

  vg01     1   0   0 wz--n-  96.00m  96.00m

[root@xuegod1603 ~]# vgremove vg01

  Volume group "vg01" successfully removed

[root@xuegod1603 ~]# vgs

  VG     #PV #LV #SN Attr   VSize   VFree 

  datavg   2   1   0 wz--n- 192.00m 112.00m

  rootvg   1   2   0 wz--n-  12.00g      0

[root@xuegod1603 ~]# pvs

  PV         VG     Fmt  Attr PSize   PFree 

  /dev/sda2  rootvg lvm2 a--   12.00g      0

  /dev/sdb10        lvm2 ---  100.00m 100.00m

  /dev/sdb5  datavg lvm2 a--   96.00m  68.00m

  /dev/sdb6  datavg lvm2 a--   96.00m  44.00m

  /dev/sdb7         lvm2 ---  100.00m 100.00m

  /dev/sdb8         lvm2 ---  100.00m 100.00m

  /dev/sdb9         lvm2 ---  100.00m 100.00m

[root@xuegod1603 ~]# pvremove /dev/sdb10

  Labels on physical volume "/dev/sdb10" successfully wiped.

[root@xuegod1603 ~]# pvs

  PV         VG     Fmt  Attr PSize   PFree 

  /dev/sda2  rootvg lvm2 a--   12.00g      0

  /dev/sdb5  datavg lvm2 a--   96.00m  68.00m

  /dev/sdb6  datavg lvm2 a--   96.00m  44.00m

  /dev/sdb7         lvm2 ---  100.00m 100.00m

  /dev/sdb8         lvm2 ---  100.00m 100.00m

  /dev/sdb9         lvm2 ---  100.00m 100.00m

3.6 底层存储更换

[root@xuegod1603 ~]# pvcreate /dev/sdc1

[root@xuegod1603 ~]# nohup ping www.baidu.com >> /weblv/a.txt &

[1] 76666

[root@xuegod1603 ~]# nohup: ignoring input and redirecting stderr to stdout

[root@xuegod1603 ~]# pvs

  PV         VG     Fmt  Attr PSize   PFree 

  /dev/sda2  rootvg lvm2 a--   12.00g      0

  /dev/sdb5  datavg lvm2 a--   96.00m  68.00m

  /dev/sdb6  datavg lvm2 a--   96.00m  44.00m

  /dev/sdb7         lvm2 ---  100.00m 100.00m

  /dev/sdb8         lvm2 ---  100.00m 100.00m

  /dev/sdb9         lvm2 ---  100.00m 100.00m

  /dev/sdc1         lvm2 ---  476.82m 476.82m

[root@xuegod1603 ~]# vgextend datavg /dev/sdc1

  Volume group "datavg" successfully extended

[root@xuegod1603 ~]# pvs

  PV         VG     Fmt  Attr PSize   PFree 

  /dev/sda2  rootvg lvm2 a--   12.00g      0

  /dev/sdb5  datavg lvm2 a--   96.00m  68.00m

  /dev/sdb6  datavg lvm2 a--   96.00m  44.00m

  /dev/sdb7         lvm2 ---  100.00m 100.00m

  /dev/sdb8         lvm2 ---  100.00m 100.00m

  /dev/sdb9         lvm2 ---  100.00m 100.00m

  /dev/sdc1  datavg lvm2 a--  472.00m 472.00m

[root@xuegod1603 ~]# pvmove /dev/sdb5 /dev/sdc1

  /dev/sdb5: Moved: 100.00%

[root@xuegod1603 ~]# pvs

  PV         VG     Fmt  Attr PSize   PFree 

  /dev/sda2  rootvg lvm2 a--   12.00g      0

  /dev/sdb5  datavg lvm2 a--   96.00m  96.00m

  /dev/sdb6  datavg lvm2 a--   96.00m  44.00m

  /dev/sdb7         lvm2 ---  100.00m 100.00m

  /dev/sdb8         lvm2 ---  100.00m 100.00m

  /dev/sdb9         lvm2 ---  100.00m 100.00m

  /dev/sdc1  datavg lvm2 a--  472.00m 444.00m

[root@xuegod1603 ~]# pvmove /dev/sdb6 /dev/sdc1

  /dev/sdb6: Moved: 61.54%

  /dev/sdb6: Moved: 100.00%

[root@xuegod1603 ~]# pvs

  PV         VG     Fmt  Attr PSize   PFree 

  /dev/sda2  rootvg lvm2 a--   12.00g      0

  /dev/sdb5  datavg lvm2 a--   96.00m  96.00m

  /dev/sdb6  datavg lvm2 a--   96.00m  96.00m

  /dev/sdb7         lvm2 ---  100.00m 100.00m

  /dev/sdb8         lvm2 ---  100.00m 100.00m

  /dev/sdb9         lvm2 ---  100.00m 100.00m

  /dev/sdc1  datavg lvm2 a--  472.00m 392.00m

[root@xuegod1603 ~]# vgreduce datavg /dev/sdb5

  Removed "/dev/sdb5" from volume group "datavg"

[root@xuegod1603 ~]# vgreduce datavg /dev/sdb6

  Removed "/dev/sdb6" from volume group "datavg"

[root@xuegod1603 ~]# pvs

  PV         VG     Fmt  Attr PSize   PFree 

  /dev/sda2  rootvg lvm2 a--   12.00g      0

  /dev/sdb5         lvm2 ---  100.00m 100.00m

  /dev/sdb6         lvm2 ---  100.00m 100.00m

  /dev/sdb7         lvm2 ---  100.00m 100.00m

  /dev/sdb8         lvm2 ---  100.00m 100.00m

  /dev/sdb9         lvm2 ---  100.00m 100.00m

  /dev/sdc1  datavg lvm2 a--  472.00m 392.00m

上面步骤如下:

新建PV pvcreate /dev/sdc1

扩容VG   vgextend datavg /dev/sdc1

移动数据  pvmove /dev/sdb5  /dev/sdc1

VG缩小  vgreduce datavg /dev/sdb5

删除小盘  pvremove /dev/sdb5

 

你可能感兴趣的:(Linux)