使用fdisk分区,也称Linux的标准分区;当Linux标准分区格式成文件系统之后挂载使用,那么一旦文件系统空间满了,是无法扩容的,如果一定要扩容,需要将数据备份,再换一个更大的文件系统,再将数据还原回去,但这种方法一般来说效率贼低
因此逻辑卷的出现,成为了上面瑕疵的解决方案
逻辑卷是一个抽象的概念,衍生出一些专有名词
PV(physical volume) 物理卷(可以无限大;向PV里加入新的块设备就相当于扩容PV,从pv里删除块设备,相当于缩容PV)
VG(volume group) 卷组(也可在无限大的PV中创建贼多个VG;创建、删除、扩容)
LV(logical volume) 逻辑卷(一个vg中可以创建多个LV;创建、删除、扩容)
创建物理卷PV前先分区
db1 1G
db2 2G
物理卷(PV)
创建PV
创建物理卷
[root@ggbond ~]# pvcreate /dev/sdb1
[root@ggbond ~]# pvcreate /dev/sdb2
注意:另外PV也可以直接指定一块磁盘
[root@ggbond ~]# pvs # 查看物理卷
删除PV
pvremove #删除物理卷
另外PV如果被某个vg使用,则无法删除
[root@ggbond ~]# pvcreate /dev/sdb{1..2} # 一次创建多个pv
[root@ggbond ~]# pvdisplay /dev/sdb1 /dev/sdb2 # 查看物理卷的详细信息(很少用到)
卷组(VG)
创建VG
[root@ggbond ~]# vgcreate vg1 /dev/sdb1 # 创建卷组;vg1是随机命名的
[root@ggbond ~]# vgs # 查看卷组
[root@ggbond ~]# vgcreate vg2 /dev/sdb2 -s 8M #还可通过-s指定卷组大小
删除VG
[root@ggbond ~]# vgremove vg1 # 删除vg
[root@ggbond ~]# vgs # 我们可以看到vg1已被去除
同理:
如果vg上有逻辑卷在使用,则vg也无法删除
扩容VG
我们此时看到vg1中现在大小是2G
接下来给他进行vg扩容
[root@ggbond ~]# vgextend vg1 /dev/sdb2 # 用sdb2的空间给vg1扩容 此时看到扩容到4G
xdm切记一个pv中不可加两次vg,另外当我们想要将某一个分区扩到vg1时但这个分区没有创建pv;此时由于lvm2的优化特性,自动会将某分区加入到pv
逻辑卷(LV)
创建LV
[root@ggbond ~]# lvcreate -n lv1 -L 66M vg1 # 在vg1卷组中创建一个名为lv1的容量为66M的逻辑卷
[root@ggbond ~]# lvs # 查看逻辑卷
-n 参数表示逻辑卷的名字
-L 参数表示逻辑卷的大小
vg1 使用卷组vg1创建该逻辑卷
再向vg1中加一个逻辑卷2 如果发现无法添加改vg满了的话 ,我们需要扩容vg
逻辑卷创建完之后,可直接格式化成为文件系统之后使用
如果卷组下面创建了新的逻辑卷,那么该逻辑卷会自动在设备文件路径中出现,如下图
但逻辑卷实际目录则是在dm中
dm(device mapper)
我们所创建的逻辑卷,都在mapper文件夹中
[root@ggbond ~]# mkfs.ext4 /dev/vg1/lv2 # 格式化逻辑卷
查看逻辑卷的UUID
[root@ggbond ~]# ls -l /dev/disk/by-uuid/
删除LV
[root@ggbond ~]# lvremove /dev/vg1/lv2 #在删除时候必须指定lv2的精确路径
扩容LV
[root@ggbond /]# mkdir /ggbond #在根目录下创建一个挂载文件ggbond先挂载一下
[root@ggbond /]# mount /dev/vg1/lv1 /ggbond/ # 将lv1挂载到根目录下的ggbond下
接下来先模拟一下将lv1逻辑卷空间占满从而演示如何扩容
[root@ggbond /]# dd if=/dev/zero of=/ggbond/file
我们看到lv1无可用空间并且无法再创建文件
在线扩容即为文件系统不能卸载
我们将lv1扩容到100M
[root@ggbond /]# lvextend /dev/vg1/lv1 -L 100M # 此命令是将之前的容量覆盖了并不是追加
[root@ggbond /]# lvextend /dev/vg1/lv1 -L +68M #如果追加的话应该加上+号
此时我们看到lv1使用率还是百分百;是因为我们刚才扩容的部分没有格式化,在文件系统检测不到
[root@ggbond /]# xfs_growfs /dev/vg1/lv1
# 把空间重新加载到文件系统中,此处因为我是xfs文件系统所以用xfs_growfs命令来重新加载
你要是ext4文件系统则需要用resize2fs 命令来重新加载