二十二、LVM动态扩容

今日内容:LVM 动态扩容
	传统分区方式:直接通过硬件操控,弊端浪费空间
	LVM优点:解决传统方式的弊端
	LVM弊端:通过LVM来操控硬件,效率略低

六、LVM

1、简介:

我们在对磁盘分区的大小进行规划时,往往不能确定每个分区使用的空间大小,只能凭经验分配一个大小,而我们通常用的fdisk、gdisk等工具对磁盘分区后,每个分区的大小就固定死了,这么做的问题是:

1>如果分区设置过大,会白白浪费磁盘空间;

2>如果分区设置过小,会导致空间不够用的情况出现;

对于分区过小的问题,我们可以重新规划磁盘的分区,或通过软连接的方式,将此分区的目录链接到另外一个分区,这样做虽然能临时解决问题,但却给管理带来了麻烦。

不过这些问题,可以通过LVM来解决~

LVM是一个动态扩容、动态缩容的软件

逻辑卷管理LVM是硬盘的一个系统工具,无论是在Linux或其他系统,都非常好用,传统分区使用固定大小分区,重新调整大小十分麻烦,但LVM可以创建、管理“逻辑”卷,而不是直接使用物理硬盘,可以让管理员弹性的管理逻辑卷的扩大缩小,操作简单,而不损坏已存储的数据,可以随意将新的硬盘添加到LVM,以直接扩展已经存在的逻辑卷,LVM并不需要重启,就可以让内核知道分区的存在!
在这里插入图片描述

通过LVM技术,可以屏蔽掉磁盘分区的底层差异,在逻辑上给文件系统提供了一个卷的概念,然后在这些卷上建立相应的文件系统。

2、LVM的优缺点:

优点:
​	1>可以在系统运行的状态下,动态的扩展文件系统的大小;
​	2>文件系统可以跨多个磁盘,因此文件系统大小不会受物理磁盘的限制;
​	3>可以增加新的磁盘到LVM的存储电池中;
​	4>可以以镜像的方式冗余重要的数据到多个物理磁盘;
​	5>可以方便的导出整个卷组到另一台机器;

缺点:
​	1>因为加入了额外的操作,存取性能受到影响;
​	2>卷组中的一个磁盘损坏时,整个卷组都会受到影响;
	#LVM若有一个磁盘损坏,整个LVM都坏了,LVM只有动态扩展作用
	#方案:底层用raid+上层LVM=既有冗余又有动态扩展
​	3>在从卷组中移除一个磁盘的时候必须使用reducevg命令
	#该命令要求使用root权限,且不允许在快照卷组中使用

1、LVM的基本使用

命令概念:

PV:物理分区
VG:卷组
LV:逻辑卷
作用:卷组将物理分区或卷整合,来拆分成多个逻辑卷
谁家有面也不能都蒸成馒头---郭德纲
买面(PV物理分区)>>>和面(VG卷组)>>>蒸馒头(LV逻辑卷)

在这里插入图片描述
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mshZgrTe-1604927164431)(C:\Users\秋风、亦冷\AppData\Roaming\Typora\typora-user-images\image-20201109150725526.png)]

准备工作:

安装所需命令: yum install -y lvm2

2、创建逻辑卷LVM

先lsblk查看一下硬盘分区状况:
[root@peng ~] lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0   20G  0 disk 
├─sda1   8:1    0  256M  0 part /boot
├─sda2   8:2    0  768M  0 part [SWAP]
└─sda3   8:3    0   19G  0 part /
sdb      8:16   0   10G  0 disk 
└─sdb1   8:17   0    2G  0 part 
sdc      8:32   0   40G  0 disk 
└─sdc1   8:33   0    5G  0 part 
sr0     11:0    1  4.5G  0 rom  

1、一次创建两个物理卷PV
[root@peng ~] pvcreate /dev/sdb1 /dev/sdc1 
  Physical volume "/dev/sdb1" successfully created.
  Physical volume "/dev/sdc1" successfully created.
[root@peng ~] pvs 看一下pv
  PV         VG Fmt  Attr PSize PFree
  /dev/sdb1     lvm2 ---  2.00g 2.00g
  /dev/sdc1     lvm2 ---  5.00g 5.00g

2、创建2个卷组VG
[root@peng ~] vgcreate vg1 /dev/sdb1
  Volume group "vg1" successfully created
[root@peng ~] vgcreate vg2 /dev/sdc1
  Volume group "vg2" successfully created
[root@peng ~] vgs 看一下vg
  VG  #PV #LV #SN Attr   VSize  VFree 
  vg1   1   0   0 wz--n- <2.00g <2.00g
  vg2   1   0   0 wz--n- <5.00g <5.00g

3、创建逻辑卷LV
可以指定不同vg卷组
	vg1卷组:
[root@peng ~] lvcreate -L 200M -n lv1_from_vg1 vg1
  Logical volume "lv1_from_vg1" created.
[root@peng ~] lvcreate -L 400M -n lv2_from-vg1 vg1
WARNING: xfs signature detected on /dev/vg1/lv2_from-vg1 at offset 0. Wipe it? [y/n]: y
  Wiping xfs signature on /dev/vg1/lv2_from-vg1.
  Logical volume "lv2_from-vg1" created.
[root@peng ~] lvs 看一眼
  LV           VG  Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv1_from_vg1 vg1 -wi-a----- 200.00m                        
  lv2_from-vg1 vg1 -wi-a----- 400.00m                         
	VG2卷组:
[root@peng ~] lvcreate -L 500M -n lv3_from_vg2 vg2
  Logical volume "lv3_from_vg2" created.
[root@peng ~] lvcreate -L 300M -n lv4_from_vg2 vg2
  Logical volume "lv4_from_vg2" created.
[root@peng ~] lvs 看一眼
  LV           VG  Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv1_from_vg1 vg1 -wi-a----- 200.00m                                                 
  lv2_from-vg1 vg1 -wi-a----- 400.00m                                                 
  lv3_from_vg2 vg2 -wi-a----- 500.00m                                                 
  lv4_from_vg2 vg2 -wi-a----- 300.00m  
  
4、制作文件系统
这里两个卷组各举一个例子:vg1里的lv1,vg2里的lv3:
[root@peng ~] mkfs.xfs /dev/vg1/lv1_from_vg1 
meta-data=/dev/vg1/lv1_from_vg1  isize=512    agcount=4, agsize=12800 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=51200, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=855, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

[root@peng ~] mkfs.xfs /dev/vg2/lv3_from_vg2 
meta-data=/dev/vg2/lv3_from_vg2  isize=512    agcount=4, agsize=32000 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=128000, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=855, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

5、挂载逻辑卷
[root@peng ~] mkdir /test1 /test2
[root@peng ~] mount /dev/vg1/lv1_from_vg1 /test1
[root@peng ~] mount /dev/vg2/lv3_from_vg2 /test2

查看一下
[root@peng ~] df -h
Filesystem                    Size  Used Avail Use% Mounted on
devtmpfs                      476M     0  476M   0% /dev
tmpfs                         487M     0  487M   0% /dev/shm
tmpfs                         487M  7.7M  479M   2% /run
tmpfs                         487M     0  487M   0% /sys/fs/cgroup
/dev/sda3                      19G  2.3G   17G  12% /
/dev/sda1                     253M  123M  130M  49% /boot
tmpfs                          98M     0   98M   0% /run/user/0
/dev/mapper/vg1-lv1_from_vg1  197M   11M  187M   6% /test1
/dev/mapper/vg2-lv3_from_vg2  497M   26M  472M   6% /test2

6、动态扩容
	PS:整体流程:添加硬盘>PV>VG>LV #pv需要新建,vg与lv这一步可以直接添加;
	PS:可新添加一块硬盘,从分区一步步添加到Lv;
	PS:也可从其他硬盘的分区划分空间,再添加到lv;
	这里以两块硬盘各创建一个分区来举例:
1>创建新分区
[root@peng ~] gdisk /dev/sdb
Last sector (4196352-20971486, default = 20971486) or {+-}size{KMGTP}: +1G
[root@peng ~] gdisk /dev/sdc
Last sector (10487808-83886046, default = 83886046) or {+-}size{KMGTP}: +4G
[root@peng ~] partprobe 同步分区表
看一眼是否创建成功
[root@peng ~] lsblk 
NAME                  MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda                     8:0    0   20G  0 disk 
├─sda1                  8:1    0  256M  0 part /boot
├─sda2                  8:2    0  768M  0 part [SWAP]
└─sda3                  8:3    0   19G  0 part /
sdb                     8:16   0   10G  0 disk 
├─sdb1                  8:17   0    2G  0 part 
│ ├─vg1-lv1_from_vg1  253:0    0  200M  0 lvm  /test1
│ └─vg1-lv2_from--vg1 253:1    0  400M  0 lvm  
└─sdb2                  8:18   0    1G  0 part 创建成功
sdc                     8:32   0   40G  0 disk 
├─sdc1                  8:33   0    5G  0 part 
│ ├─vg2-lv3_from_vg2  253:2    0  500M  0 lvm  /test2
│ └─vg2-lv4_from_vg2  253:3    0  300M  0 lvm  
└─sdc2                  8:34   0    4G  0 part 创建成功

2>创建完制作一下文件系统:
[root@peng ~] mkfs.xfs /dev/sdb2
[root@peng ~] mkfs.xfs /dev/sdc2

3>开始扩容
扩容前先看一眼:
[root@peng ~] vgs
  VG  #PV #LV #SN Attr   VSize  VFree 
  vg1   1   2   0 wz--n- 2.00g   2.41g
  vg2   1   2   0 wz--n- 5.00g   4.21g
给VG扩容:
[root@peng ~] vgextend vg1 /dev/sdb2
[root@peng ~] vgextend vg2 /dev/sdc2
扩容成功:
[root@peng ~] vgs
  VG  #PV #LV #SN Attr   VSize VFree 
  vg1   2   2   0 wz--n- 2.99g  2.41g 原来2g成了3g
  vg2   2   2   0 wz--n- 8.99g  8.21g 原来5g成了8g
从VG给LV扩容:
[root@peng ~] lvs 查看#扩容前
  LV           VG  Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv1_from_vg1 vg1 -wi-ao---- <0.86g                                                    
  lv2_from_vg2 vg2 -wi-ao---- <1.86g 
[root@peng ~] lvextend -L +1000M /dev/vg1/lv1_from_vg1 
[root@peng ~] lvextend -L +2G /dev/vg2/lv2_from_vg2 
[root@peng ~] lvs 查看#扩容后
  LV           VG  Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv1_from_vg1 vg1 -wi-ao---- <1.86g                                                    
  lv2_from_vg2 vg2 -wi-ao---- <3.86g 

7、快照
 

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

posted @ 2022-06-09 18:19  秋风お亦冷  阅读(146)  评论(0编辑  收藏  举报