lvm管理详解

lvm解决的问题。

当服务器中存储数据的分区磁盘空间不够了,我们正常的思路,是换一块较大的磁盘,但是不论多大的磁盘,总会有不够的时候,lvm就是用来解决这些问题的,可以实现动态的扩容。

lvm的工作原理

正常的文件传输是在文件系统和磁盘之间,lvm做的就是在文件系统和磁盘之间添加新的一层逻辑层。它对文件系统屏蔽了下层的磁盘,它对磁盘进行了封装,从而使得文件系统面向逻辑卷,逻辑卷采用一定的方式对磁盘进行操作。也就是说,磁盘的扩展直接影响的是逻辑卷。给文件系统的赶紧就是逻辑卷变大了,仅此而已。

常用的名词术语

物理存储介质:也就是lvm可以操作的介质有:整个磁盘,磁盘分区,raid阵列,san磁盘。
pv:物理卷,就是存储介质加上lvm自己的一些信息
vg:多个pv组成
lv:建立在vg之上的,可以在lv上建立文件系统
pe:pv中最小的存储单元
le:lv中最小的存储单元。le=pe,因为lv是基于vg的,vg是由多个pv构成的,pv的存储单元是pe,lv的存储单元是le,所以他们相等。
名称 最小存储单元
硬盘 扇区——512byte
文件系统 block——1k
raid chunk——512k
lvm le——4m

LVM优点

使用卷组,使多个硬盘空间看起来像是一个大的硬盘
使用逻辑卷,可以跨多个硬盘空间的分区 sdb1 sdb2 sdc1 sdd2 sdf
在使用逻辑卷时,它可以在空间不足时动态调整它的大小
在调整逻辑卷大小时,不需要考虑逻辑卷在硬盘上的位置,不用担心没有可用的连续空间
可以在线对LV,VG 进行创建,删除,调整大小等操作。LVM上的文件系统也需要重新调整大小。
允许创建快照,可以用来保存文件系统的备份。

LVM+RAID

RAID+LVM一起用:LVM是软件的卷管理方式,而RAID是磁盘管理的方法。对于重要的数据,使用RAID来保护物理的磁盘不会因为故障而中断业务,再用LVM用来实现对卷的良性的管理,更好的利用磁盘资源。

LVM的命令详解

lvm管理详解_第1张图片
在这里插入图片描述

lvm的创建过程

多个存储介质——多个pv——合成卷组vg——从vg中划出lv——格式化lv并且进行挂载使用

过程详解(pv——vg——lv)

#1使用fdisk对sde进行分区,分区过程如下
fdisk /dev/sde
#2创建pv
pvcreate /dev/sde{1,2,3,4}
#3查看物理卷的信息
pvdisplay /dev/sde1
#创建vg卷组
vgcreate vg01 /dev/sde1
#查看vg卷组的信息
vgdisplay vg01
#创建lv
lvcreate -n lv01 -L 16M vg01
#查看lv的信息
lvs
#查看pv的信息
pvdisplay /dev/sde1

分区类似如下的设置
lvm管理详解_第2张图片
设置如下的4个分区,大小一致,都为1G
lvm管理详解_第3张图片
pv逻辑卷的创建
lvm管理详解_第4张图片
pv逻辑卷的查看
lvm管理详解_第5张图片
创建vg卷组:
语法: vgcreate vg名字 pv的名字 可以跟多个pv

在这里插入图片描述
查看vg的信息
lvm管理详解_第6张图片
查看vg的详细信息
lvm管理详解_第7张图片
创建LV
lvcreate -n 指定新逻辑卷的名称 -L指定lv大小的SIZE(M,G) (-l:小l 指定LE的数量) vgname

lvm管理详解_第8张图片
查看vg01的信息
lvm管理详解_第9张图片

文件系统的挂载(lv挂载和格式化)

#查看刚才创建的lv01的目录
ll /etc/vg01/lv01
#格式化lv01,并且进行挂载
#之所以格式化为ext4的文件系统,是因为xfs不支持动态扩容。为了后期的例子,使用ext4这种文件格式。
mkfs.ext4 /dev/vg01/lv01
mkdir /raid01
mount /dev/vg01/lv01 /raid01
#查看磁盘信息
df -h
#设置开机自动挂载
echo "/dev/vg01/lv01 /lv01 ext4 defaults 0 0" >>/etc/fstab

查看逻辑卷的目录
在这里插入图片描述
格式化lv01并且进行挂载
lvm管理详解_第10张图片
先不进行挂载,然后设置为自动挂载
在这里插入图片描述
使用df进行查看,可以发现lv01已经出现。
lvm管理详解_第11张图片
指定PE大小用的参数: -s ,如果存储的数据都是大文件,那么PE尽量调大,读取速度快。可以使用s的参数来创建一个pe较大的vg来进行lv的创建,这样就使得读取大数据文件更快。
lvm管理详解_第12张图片

接下来的内容是lvm的高级使用。它的基础是前面的简单使用。主要讲述的是lv和vg的扩容和缩小。我的理解:pv是将许多个存储介质打上lvm的标识,是为了lvm使用的方便,也就是说将磁盘,磁盘分区,raid都看作是lvm中的物理卷。vg是基于物理卷的操作,将多个物理卷整合起来,形成更大的空间,而lv是vg根据用户需要生成的另类的磁盘,只不过它的大小可以由用户自己设置。当vg比较小的时候,我们需要扩容vg,也就是往vg中增加更多的空间。lv的不足,我们可以从vg中分配更多的空间给他,而vg的不足,我们需要将更多的物理卷给他。

LV扩容

#首先查看vg的信息,我们的lv01是基于vg01进行创建的,同时lv不支持跨vg扩容。
vgs
#查看lv的信息
lvs
#进行扩容。扩容命令:lvextend和vgextend,参数有L,扩容30M:-L +30M,扩容到30M:-L 30M,因为这是lv的扩容,所以使用lvextend
#扩展30M
lvextend -L +30M /dev/vg01/lv01 
#扩展到30M
#lvextend -L 30M /dev/vg01/lv01
#查看扩容后的lv01
lvs
#查看文件系统是否进行了扩展。
df -h 

使用lvextend -L +30M /dev/vg01/lv01进行扩展,最后结果是lv01的大小进行了扩展,由16到48。这里的30是30M,然后pe的最小存储单元是4M,我们并没有进行修改lv01的大小,30除以4为7余2,剩下的2M,还需要一个pe进行存储,所以最后的大小为48,不是46
lvm管理详解_第13张图片
通过查看文件系统,得知,大小并没有发生变化。所以使用lv的扩容,扩容lv只是将lv的大小进行了扩展,而lv01之上的文件系统并没有进行扩展。现在进行扩展文件系统。接下来介绍3种扩展文件系统的方式。
ext4文件系统扩容使用命令语法: resize2fs 逻辑卷名称
xfs文件系统扩容使用命令语法: xfs_growfs 挂载点
lvextend 加上参数r就可以对lv扩容的同时,并且进行文件系统的扩容。r支持多种文件系统,推荐使用。
resize2fs和xfs_growfs 两者的区别是传递的参数不一样的,xfs_growfs是采用的挂载点;resize2fs是逻辑卷名称,而且resize2fs命令不能对xfs类型文件系统使用。

lvm管理详解_第14张图片
因为我们的文件系统是ext4,之前格式化的时候就格式化为ext4,所以我们接下来使用resize2fs进行文件系统的扩容。扩容结束可以进行查看

#进行ext4文件系统的挂载
resize2fs /dev/vg01/lv01
#查看磁盘的使用情况
df -h

lvm管理详解_第15张图片

使用lvextend进行一次性扩容,例子:在vg01的基础创建lv02,初始大小为16M,使用lvextend -r 一次性扩容到30M的大小。

#创建挂载点
mkdir /lv02
#创建指定大小的lv02
lvcreate -n lv02 -L 16M vg01
#进行挂载
mount /devvg01/lv02 /lv02
#查看当前磁盘的使用情况
df -h
#使用lvextend -r进行扩展
lvextend -r -L 30M /dev/vg01/lv02
#再次查看磁盘的使用情况,如果没有错误的话,lv02的磁盘应该已经扩展到30M
df -h 
[root@break ~]# mkdir /lv02
[root@break ~]# lvcreate -n lv02 -L 16M vg01
  Logical volume "lv02" created.
[root@break ~]# mount /dev/vg01/lv02 /lvo2^C
[root@break ~]# mkfs.ext4 /dev/vg01/lv02
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=1024 (log=0)
分块大小=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
4096 inodes, 16384 blocks
819 blocks (5.00%) reserved for the super user
第一个数据块=1
Maximum filesystem blocks=16777216
2 block groups
8192 blocks per group, 8192 fragments per group
2048 inodes per group
Superblock backups stored on blocks: 
	8193
Allocating group tables: 完成                            
正在写入inode表: 完成                            
Creating journal (1024 blocks): 完成
Writing superblocks and filesystem accounting information: 完成

[root@break ~]# mount /dev/vg01/lv02 /lv02
[root@break ~]# df -h 
文件系统                   容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root     10G  4.4G  5.7G   44% /
devtmpfs                   975M     0  975M    0% /dev
tmpfs                      992M     0  992M    0% /dev/shm
tmpfs                      992M   11M  981M    2% /run
tmpfs                      992M     0  992M    0% /sys/fs/cgroup
/dev/sr0                   4.2G  4.2G     0  100% /mnt
/dev/sda1                  197M  135M   62M   69% /boot
tmpfs                      199M     0  199M    0% /run/user/0
tmpfs                      199M   32K  199M    1% /run/user/1000
/dev/mapper/mail-mail--lv 1014M   33M  982M    4% /mail-lv
/dev/mapper/vg01-lv01       46M  522K   43M    2% /lv01
/dev/mapper/vg01-lv02       15M  268K   14M    2% /lv02
[root@break ~]# lvextend -r -L 30M /dev/vg01/lv02
  Rounding size to boundary between physical extents: 32.00 MiB.
  Size of logical volume vg01/lv02 changed from 16.00 MiB (4 extents) to 32.00 MiB (8 extents).
  Logical volume vg01/lv02 successfully resized.
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/mapper/vg01-lv02 is mounted on /lv02; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 1
The filesystem on /dev/mapper/vg01-lv02 is now 32768 blocks long.

[root@break ~]# df -h 
文件系统                   容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root     10G  4.4G  5.7G   44% /
devtmpfs                   975M     0  975M    0% /dev
tmpfs                      992M     0  992M    0% /dev/shm
tmpfs                      992M   11M  981M    2% /run
tmpfs                      992M     0  992M    0% /sys/fs/cgroup
/dev/sr0                   4.2G  4.2G     0  100% /mnt
/dev/sda1                  197M  135M   62M   69% /boot
tmpfs                      199M     0  199M    0% /run/user/0
tmpfs                      199M   32K  199M    1% /run/user/1000
/dev/mapper/mail-mail--lv 1014M   33M  982M    4% /mail-lv
/dev/mapper/vg01-lv01       46M  522K   43M    2% /lv01
/dev/mapper/vg01-lv02       30M  395K   28M    2% /lv02

vg扩容:对vg01进行扩容,扩容的磁盘是同一磁盘下的不同分区的/dev/sde3

#查看当前的vg01的信息
vgs
#创建物理卷
pvcreate /dev/sde3
#进行扩容
lvextend vg01 /dev/sde3
#查看扩容后的vg
vgs

lvm管理详解_第16张图片

LVM可以动态增加和动态缩小,针对于不同的文件系统,增加和缩小情况不同。例如:xfs支持动态增加,不支持动态减小,btrfs文件系统支持动态减少。一般不用动态减少

经典例子:如果sde1是一个磁盘阵列,而这个磁盘阵列使用年代太久,我们必须移出怎么办?

#复制测试数据
cp -r /etc/* /lv01/
#数据转移
pvmove /dev/sde1 /dev/sde3
#这一步是需要上一步完全完成之后才可以,进行移除/dev/sde1这个分区
vgreduce vg01 /dev/sde1
#查看pv的信息
pvs

在这里插入图片描述
由图可以知道,我们已经完成了旧/dev/sde1分区的移除。
lvm管理详解_第17张图片

LVM的删除流程(与创建流程刚好相反)

创建LVM流程:
pvcreate创建pv -> vgcreate创建卷组 -> lvcreate创建逻辑卷 -> mkfs.xfs lv 格式化-> mount挂载
删除LVM流程:
umount卸载 -> lvremove lv移出卷组中所有逻辑卷-> vgremove vg移出卷组-> pvremove 移出pv

#不挂载/lv01
umount /lv01
#移除lv
lvremove /dev/vgo1/lvo1
#移除vg
vgremove vg01
#移除pv
pvremove /dev/sde2
#最终查看lvs,pvs,vgs

lvm管理详解_第18张图片
lv的移除
lvm管理详解_第19张图片
vg的移除
lvm管理详解_第20张图片
pv的移除
在这里插入图片描述
最终都将被移除
lvm管理详解_第21张图片

你可能感兴趣的:(lvm管理详解)