lvm的概念
LVM(Logical Volume Manager)是一种逻辑卷管理器,是Linux系统中的一个重要的存储管理技术。
它的主要作用是将若干个硬盘分区或者物理硬盘合并成一个逻辑卷组(Volume Group,简称VG),
然后再将逻辑卷组划分成一个个的逻辑卷(Logical Volume,简称LV)。
这样,用户就可以将逻辑卷看作是一个可动态扩展、快速创建和方便管理的分区,
而不用考虑实际的硬件分区。
使用LVM技术可以很方便地对存储空间进行管理,比如动态地增加或缩减逻辑卷的大小,
移动逻辑卷的位置,
备份和恢复逻辑卷,以及实现热备份等。此外,LVM还可以将不同物理硬盘的存储空间合并起来,
为应用程序提供更大的存储空间。
LVM的优点
硬盘容量的限制:传统的分区方式,将硬盘划分为多个区域,每个区域的大小是固定的,难以灵活地调整和管理。
LVM通过将硬盘的空间划分为多个逻辑卷组(Volume Group,VG),
逻辑卷(Logical Volume,LV)和物理卷(Physical Volume,PV),可以将多个硬盘空间汇聚起来,
实现硬盘空间的动态扩展。
高可用性:LVM支持在多个物理卷之间建立冗余存储(RAID),提供数据冗余和容错机制,保证数据的安全性和高可用性。
使用LVM的主要原因如下:
灵活性:LVM提供了一种动态分配和管理存储空间的方法,可以动态调整逻辑卷的大小,方便地增加或减少存储容量,从而满足应用程序的需要。在实际应用中,如果存储空间的容量不足或者需要扩展容量,使用LVM技术可以很方便地实现。
可靠性:使用LVM技术可以提高数据的可靠性和可用性,可以实现热备份和数据的动态迁移。
当某个物理硬盘出现故障时,可以在不停机的情况下进行数据恢复和重建,从而提高了数据的可靠性。
管理性:LVM提供了一种管理多个物理硬盘和多个逻辑卷的方式,可以对存储空间进行集中管理和监控。
通过LVM的命令和工具可以方便地查看和监控存储空间的使用情况,以及进行性能调优和容错管理。
性能:LVM提供了一种数据块级别的数据读写操作,可以实现高效的数据存储和访问。
此外,LVM还可以利用多个物理硬盘的并行处理能力,提高数据访问的速度和效率。
物理卷(Physical Volume,PV):就是真正的物理硬盘或分区。
卷组(Volume Group,VG):将多个物理卷合起来就组成了卷组。
组成同一个卷组的物理卷可以是同一块硬盘的不同分区,也可以是不同硬盘上的不同分区。
我们可以把卷组想象为一块逻辑硬盘。
逻辑卷(Logical Volume,LV):卷组是一块逻辑硬盘,硬盘必须分区之后才能使用,
我们把这个分区称作逻辑卷。逻辑卷可以被格式化和写入数据。我们可以把逻辑卷想象为分区。
物理扩展(Physical Extend,PE):PE 是用来保存数据的最小单元,
我们的数据实际上都是写入 PE 当中的。PE 的大小是可以配置的,默认是 4MB。
建立逻辑卷
建立逻辑卷
[root@localhost ~]# pvcreate /dev/设备名(可以是分区也可以是磁盘)
[root@localhost ~]#pvcreate /dev/sdb1
Physical volume "/dev/sdb1" successfully created.
[root@localhost ~]#pvcreate /dev/sdc1
Physical volume "/dev/sdc1" successfully created.
建立卷组
[root@localhost ~]# vgcreate 卷组名 /dev/设备名 ... //将一个或多个设备加入卷组
[root@localhost ~]#vgcreate vg1 /dev/sdb1 /dev/sdc1
Volume group "vg1" successfully created
建立逻辑卷
[root@localhost ~]# lvcreate -L 逻辑卷大小 -n 逻辑卷名 取PE的卷组
[root@localhost ~]#lvcreate -L 12G -n ljj1 vg1
Logical volume "ljj1" created.
使用逻辑卷
建立文件系统
[root@localhost ~]# mkfs.文件系统类型 /dev/卷组名/逻辑卷名
[root@localhost ~]#mkfs.xfs /dev/vg1/ljj1
meta-data=/dev/vg1/ljj1 isize=512 agcount=4, agsize=786432 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=3145728, 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/卷组名/逻辑卷名 挂载点
[root@localhost ~]#mount /dev/vg1/ljj1 /mnt
扩容逻辑卷
卷组扩容
[root@localhost ~]# vgextend 卷组名 /dev/设备名
[root@localhost ~]#vgextend vg1 /dev/sdd1
Physical volume "/dev/sdd1" successfully created.
Volume group "vg1" successfully extended
逻辑卷扩容
[root@localhost ~]# lvextend -L +扩容的大小 /dev/卷组名/逻辑卷名
#注:扩容 -L 后一定要 + 号!!!这里是扩容,如果没有+号,会当成赋值。
[root@localhost ~]#lvextend -L +6G /dev/vg1/ljj1
Size of logical volume vg1/ljj1 changed from 12.00 GiB (3072 extents) to 18.00 GiB (4608 extents).
Logical volume vg1/ljj1 successfully resized.
刷新扩容逻辑卷
[root@localhost ~]# xfs_growfs 挂载点 //xfs文件系统刷新扩容方式
[root@localhost ~]# resize2fs /dev/卷组名/逻辑卷名 //ext4文件系统刷新扩容方式
通用方式:在逻辑卷扩容命令加上 -r 选项 自动刷新扩容