1. LVM基本原理
大致解释一下上图出现的名词
- 物理卷:就是真正的物理硬盘或分区
- 卷组(VG,Volume Group):将多个物理卷合起来就组成了卷组,组成同一个卷组的物理卷
可以是同一个硬盘的不同分区,也可以是不同硬盘上的不同分区。我们可以把卷组想象为一
个逻辑硬盘。 - 逻辑卷(LV,LogicalVolume):卷组是一个逻辑硬盘,硬盘必须分区之后才能使用,这个
分区我们称作逻辑卷。逻辑卷可以格式化和写入数据。我们可以把逻辑卷想象成为分区。
总结一下LVM的用途,主要为了可以动态调整分区的大小,也就是我们磁盘空间不够用的时候,可以在不卸载、不重装、不重启的情况下添加大小
总结一下实验需要的步骤:
1. 首先需要把物理硬盘分成分区,当然也可以是整块物理硬盘。
2. 然后把物理分区建立成为物理卷(PV),也可以直接把整块硬盘都建立为物理卷。
3. 接下来把物理卷整合成为卷组(VG)。卷组就已经可以动态的调整大小了,可以把物理分区
4. 加入卷组,也可以把物理分区从卷组中删除。
5. 最后就是把卷组再划分成为逻辑卷(LV),当然逻辑卷也是可以直接调整大小的。我们说逻
6. 辑卷可以想象成为分区,所以也需要格式化和挂载。
2. 实验开始
2.1 硬盘分区
这里创建的分区的格式必须时linux LVM(8e),建立分区必须使用fdisk,不能用parted
分区已经完成,如图所示
2.2 创建物理卷
查看建立好的物理卷
- 命令:
pvscan
pvdisplay
- 结果:
2.3 建立卷组
2.3.1 建立
[root@localhost ~]# vgcreate hygvg /dev/sdb5 /dev/sdb6 # 把上面的两个物理卷先加入卷组
Volume group "hygvg" successfully created
2.3.2 查看
[root@localhost ~]# vgcreate hygvg /dev/sdb5 /dev/sdb6
Volume group "hygvg" successfully created
[root@localhost ~]# vgdisplay
--- Volume group ---
VG Name hygvg
System ID
Format lvm2
Metadata Areas 2
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 2
Act PV 2
VG Size 9.99 GiB
PE Size 4.00 MiB
Total PE 2558
Alloc PE / Size 0 / 0
Free PE / Size 2558 / 9.99 GiB
VG UUID LS5zhd-m32V-feUO-GlRQ-pfHI-9r7u-n8LFtx
2.3.3 扩容
[root@localhost ~]# vgextend hygvg /dev/sdb7 # 扩容命令
Volume group "hygvg" successfully extended
[root@localhost ~]# vgdisplay
--- Volume group ---
VG Name hygvg
System ID
Format lvm2
Metadata Areas 3
Metadata Sequence No 2
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 3
Act PV 3
VG Size <14.99 GiB
PE Size 4.00 MiB
Total PE 3837
Alloc PE / Size 0 / 0
Free PE / Size 3837 / <14.99 GiB
VG UUID LS5zhd-m32V-feUO-GlRQ-pfHI-9r7u-n8LFtx
2.4 建立逻辑卷
2.4.1 建立
lvcreate -L 5G -n hyglv hygvg # -L 指定大小,-n:指定名字
Logical volume "hyglv" created.
2.4.2 格式化逻辑卷
[root@localhost ~]# mkfs.xfs /dev/hygvg/hyglv
meta-data=/dev/hygvg/hyglv 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
2.4.3 挂载逻辑卷
mount /dev/hygvg/hyglv /hyglv/
查看挂载情况:
已经挂载成功
查看逻辑卷情况:
[root@localhost ~]# lvdisplay
--- Logical volume ---
LV Path /dev/hygvg/hyglv
LV Name hyglv
VG Name hygvg
LV UUID 3AbeSF-vdET-dQe5-nwbV-fmNc-revX-TdkatR
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2022-01-02 07:42:36 -0800
LV Status available
# open 1
LV Size 5.00 GiB
Current LE 1280
Segments 2
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:0
到这里为止,相当于我们已经可以往/hyglv/这个目录下面放文件啦;目前的情况如下
卷组:hygvg
逻辑卷:hyglv,该逻辑卷大小:5G
2.4.4 逻辑卷大小调整
[root@localhost hyglv]# lvresize -L 7G /dev/hygvg/hyglv
Size of logical volume hygvg/hyglv changed from 5.00 GiB (1280 extents) to 7.00 GiB (1792 extents).
Logical volume hygvg/hyglv successfully resized.
[root@localhost hyglv]# lvdisplay
--- Logical volume ---
LV Path /dev/hygvg/hyglv
LV Name hyglv
VG Name hygvg
LV UUID 3AbeSF-vdET-dQe5-nwbV-fmNc-revX-TdkatR
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2022-01-02 07:42:36 -0800
LV Status available
# open 1
LV Size 7.00 GiB
Current LE 1792
Segments 2
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:0
我们把这个逻辑卷大小调整到了7G,但是df看并没有改变,还是原来的5个G
这时候再执行一下下面的命令就好了
[root@localhost hyglv]# resize2fs /dev/hygvg/hyglv # 这是针对centos6的命令,ext4
[root@localhost hyglv]# xfs_growfs /dev/hygvg/hyglv # 这是针对7以后的命令
meta-data=/dev/mapper/hygvg-hyglv isize=512 agcount=4, agsize=327680 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=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 bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 1310720 to 1835008
这时候我们再看df -h,已经调整过来了。
2.5 总结及后续
2.5.1 总结
到现在为止,我们总结一下做了写什么;
1. 我们创建了三个分区来做实验,大小分别为5G, /dev/sdb5(分区1),/dev/sdb6(分区2),/dev/sdb7(分区3).
2. 我们把上面的三个分区都做成了物理卷
3. 我们创建了一个卷组hygvg,并且开始把分区1,分区2加入了这个卷组,所以现在这个卷组的总大小为10G
4. 我们在卷组内新建了一个逻辑卷hyglv,挂载在了/hyglv目录,我们给了它初始大小为5G,后面我们又调整为了7G。
2.5.2 后续
场景假设,我们现在/hyglv目录已经用完了,也就是7个G都完了,那我们可以按照2.4.4的方法来调整大小,但是有限制,我们只能在10个G以内调整,超过不行,那我们就可以按照2.3.3的内容扩容,再假设,我们这些都用完了,那我们还可以新买一块硬盘,按照上面的操作来执行,在整个过程中,我们已经在/hyglv这个目录内的文件、服务等等内容不需要变动,即可实现动态扩容。