Bootstrap

LVM逻辑卷管理详解


参考:https://www.cnblogs.com/f-ck-need-u/p/7049233.html

基本概念

在这里插入图片描述

PV(Physical Volume)即物理卷
	硬盘分区后(还未格式化为文件系统)使用pvcreate命令可以将分区创建为pv,要求分区的system ID8e,即为LVM格式的系统标识符
	
VG(Volume Group)即卷组
	将多个PV组合起来,使用vgcreate命令创建成卷组
	
LV(Logical Volume)即逻辑卷
	VG相当于整合过的硬盘,那么LV就相当于分区,只不过该分区是通过VG来划分的。
	VG中有很多PE单元,可以指定将多少个PE划分给一个LV,也可以直接指定大小(如多少兆)来划分。
	划分为LV之后就相当于划分了分区,只需再对LV进行格式化即可变成普通的文件系统
	
LE(logical extent)
	PE是物理存储单元,而LE则是逻辑存储单元,也即为lv中的逻辑存储单元,和pe的大小是一样的。
	从vg中划分lv,实际上是从vg中划分vg中的pe,只不过划分lv后它不再称为pe,而是成为le
基本操作

准备system ID为8e的磁盘分区

1.创建PV
[root@localhost ~]# pvcreate /dev/sdb1
  Physical volume "/dev/sdb1" successfully created.
[root@localhost ~]# pvscan 
  PV /dev/sda2   VG centos          lvm2 [<99.00 GiB / 4.00 MiB free]
  PV /dev/sdb1                      lvm2 [<16.00 GiB]
  Total: 2 [<115.00 GiB] / in use: 1 [<99.00 GiB] / 
  in no VG: 1 [<16.00 GiB]Physical volume  "/dev/sdb1" successfully created.
2.创建VG
vgcreate datavg /dev/sdb1
[root@localhost ~]# vgcreate datavg /dev/sdb1
  Volume group "datavg" successfully created
[root@localhost ~]# pvscan 
  PV /dev/sdb1   VG datavg          lvm2 [<16.00 GiB / <16.00 GiB free]
  PV /dev/sda2   VG centos          lvm2 [<99.00 GiB / 4.00 MiB free]
  Total: 2 [114.99 GiB] / in use: 2 [114.99 GiB] / in no VG: 0 [0   ]
3.创建LV
[root@localhost ~]# lvcreate -L 5G -n first_data_lv datavg
  Logical volume "first_data_lv" created.
[root@localhost ~]# lvscan 
  ACTIVE            '/dev/datavg/first_data_lv' [5.00 GiB] inherit
  ACTIVE            '/dev/centos/swap' [<7.88 GiB] inherit
  ACTIVE            '/dev/centos/home' [<41.12 GiB] inherit
  ACTIVE            '/dev/centos/root' [50.00 GiB] inherit
4.格式化lv为文件系统,并挂载
[root@localhost ~]# mkfs.xfs /dev/datavg/first_data_lv 
meta-data=/dev/datavg/first_data_lv isize=512    agcount=4, agsize=327680 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=1310720, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@localhost ~]# mount /dev/datavg/first_data_lv /mnt
[root@localhost ~]# df -Th
Filesystem                       Type      Size  Used Avail Use% Mounted on
/dev/mapper/centos-root          xfs        50G  8.4G   42G  17% /
devtmpfs                         devtmpfs  7.8G     0  7.8G   0% /dev
tmpfs                            tmpfs     7.8G     0  7.8G   0% /dev/shm
tmpfs                            tmpfs     7.8G   25M  7.8G   1% /run
tmpfs                            tmpfs     7.8G     0  7.8G   0% /sys/fs/cgroup
/dev/sda1                        xfs      1014M  145M  870M  15% /boot
/dev/mapper/centos-home          xfs        42G  1.1G   41G   3% /home
tmpfs                            tmpfs     1.6G     0  1.6G   0% /run/user/0
/dev/mapper/datavg-first_data_lv xfs       5.0G   33M  5.0G   1% /mnt
XFS扩容
#### xfs文件系统只支持增大分区空间的情况,不支持减小的情况
1.如果vgdisplay显示还有free PE
lvextend -L +5G /dev/datavg/first_data_lv
xfs_growfs /dev/datavg/first_data_lv 

2.如果没有需要增加VG中的PE
分区磁盘,创建pv,扩容vg,扩容lv,扩展文件系统
fdisk /dev/sdb
pvcreate /dev/sdb1 
vgextend centos /dev/sdb1
lvextend -l +100%FREE /dev/mapper/centos-root
xfs_growfs /dev/mapper/centos-root

ext2,3,4扩缩容
lvextend -L 120G /dev/mapper/centos-home     #增大至120G
lvextend -L +20G /dev/mapper/centos-home     #增加20G
lvreduce -L 50G /dev/mapper/centos-home      #减小至50G
lvreduce -L -8G /dev/mapper/centos-home      #减小8G
resize2fs /dev/mapper/centos-home            #执行调整
扩缩容注意事项

1.缩容需要umount,慎重操作
2.VG中需要有足够的free PE,如果不够,可创建PV,并将PV加入VG,增加PE容量

创建PV:pvcreate /dev/sdb1
增加VG容量:vgextend centos /dev/sdb1

[root@localhost ~]# vgdisplay |grep "Free  PE"
  Free  PE / Size       1535 / <6.00 GiB
再对LV扩容
常用命令
1.管理PV
pvcreate		创建PV
pvscan			扫描并列出所有的pv
pvdisplay		列出pv属性信息
pvremove	移除pv
pvmove		移动pv中的数据
pvresize		

2.管理VG
vgcreate		创建VG
vgscan			扫描并列出所有的vg
vgdisplay		列出vg属性信息
vgremove	移除vg,即删除vg
vgreduce		从vg中移除pv
vgextend		将pv添加到vg中
vgchange	修改vg属性

3 管理LV
lvcreate		创建LV
lvscan			扫描并列出所有的lv
lvdisplay		列出lv属性信息
lvremove		移除lv,即删除lv
lvreduce		缩小lv容量
lvextend		增大lv容量
lvresize		改变lv容量
;