Linux学习笔记(九)-LVM
为什么要使用LVM
问题:
(1) Windows系统中常常出现的问题:
电脑使用久了,某个分区(特别是C盘)不够用了。
解决方案:使用特殊的工具软件,进行调整,或者再加一个硬盘,然后再创建一个大一点的分区,并把数据复制过去。总之,非常麻烦、耗时!
(2) Linux系统中也存在类似问题:
使用一段时间后,/home对应的分区不够用了,导致不能再在这个目录内添加数据,甚至不能创建用户。
解决方案:和Windows类似,创建1个更大的分区,然后进行复制。
分析:以上问题的根本原因,在于分区的大小不能改变!分区太小了不够用,太大了又浪费。
解决方案:
使用LVM(逻辑卷管理器)
LVM,可以弹性的调整文件系统的容量
LVM,可以调整“分区”(实际上是“逻辑卷”)的大小
LVM的概念
理解:逻辑卷,如果荆轲刺秦是使用的画卷,可以随意变长变短。
基础概念:
(1)物理卷(PV)
Physical Volume
LVM中最底层的就是物理卷PV
原来的物理分区,需要转换为物理卷PV(把分区的分区类型编码改为8e即可)
(2)卷组 / 卷用户组(VG)
多个PV组成一个VG
VG相当于标准分区中的“磁盘”
VG最多可包含65534个PE,但是PE大小可调整
(3)物理扩展块 / 物理区域(PE)
Physical Extend
是PV中可用于分配的最小存储单元
PE相当于标准分区中的“扇区”
PE的大小在创建VG时指定,默认为4MiB(可调整),一旦确定后不能修改。
同一VG中的所有PE大小必须一致,新的PV加入到vg后,PE的大小自动更改为VG中定义的PE大小。
(4)逻辑卷(LV)
1个VG可“切”成多个LV
LV的设备文件名一般取“/dev/VG的名称/LV的名称”
LV在功能上,相当于标准分区中的物理分区。
注意:LV中包含多个PE, 有的已经使用,有的还没有使用,但不存在“空闲”的PE, 其中的PE都属于该LV,PV中包含多个PE, 可分配给多个不同的LV, 还没有分配给LV的,就称为“空间“(free)的PE
(5)逻辑扩展块 / 逻辑区域(LE)
LE是LV中可用于分配的最小存储单元,
LE的大小取决于LV所在VG中的PE大小(大小相等)
原理图示
小结:LVM可实现,在不影响已有数据的情况下,动态方便地改变文件系统的容量。
LVM的使用
(1)准备物理设备
即使用fdisk或gdisk创建一个物理分区,并把分区的类型设置为8e(MBR分区)或8e00(GPT分区)
# fdisk /dev/vda
(2)创建PV
把物理分区,“转换”为物理卷PV
# pvcreate /dev/vda1 /dev/vda2
或:
# pvcreate /dev/vda1
pvcreate命令可同时对多个分区进行转换。
(3)创建VG(卷组 / 卷用户组)
一个VG可包含多个PV
可创建多个VG .
# vgcreate vg-alpha /dev/vda1 /dev/vda2
创建了一个卷组,名为vg-alpha, 该卷组中包含两个PV(/dev/sda1和/dev/sda2)
注意: 物理分区和物理卷,都使用相同的 设备文件名,比如 /dev/sda1
(4)创建LV
从卷组vg中可“切割“出多个LV
# lvcreate -n lv1 -L 100M vg-alpha
从卷组vg-alpha中,创建一个LV, 名称为lv1, 大小为100MiB
lv1对应设备文件名为: /dev/vg-alpha/lv1
# lvcreate -n lv2 -l 10 vg-alpha
从卷组vg-alpha中,创建一个LV, 名称为lv2, 大小为10个PE
lv2对应设备文件名为: /dev/vg-alpha/lv2
逻辑卷的对应的设备名(又称path): /dev/卷组名/逻辑卷名
(5)格式化LV
和格式化物理分区的方式相同。
# mkfs -t xfs /dev/vg-alpha/lv1
(6)挂载LV
和挂载物理分区的方式相同。
# mkdir /mnt/data1
# mount /dev/vg-alpha/lv1 /mnt/data1
(7)永久挂载
在/etc/fstab中添加:
/dev/vg-alpha/lv1 /mnt/data1 xfs defaults 1 3
# mount -a
(8)删除LV
和删除物理分区的方式类似。
删除准备:
1)先把需要保留的数据移动到另一个文件系统。
2) 卸载该LV
# umount /mnt/data1
删除LV:
# lvremove /dev/vg-alpha/lv1
注意:删除LV后,该LV中包含的PE,可分配给已有的LV或新的LV
(9)删除VG
# vgremove vg-alpha
说明:删除VG后,该VG中包含的PV,并没有被删除,可分配给已有的VG或新的VG。
(10)删除PV
PV和对应的物理分区,使用相同的设备文件名。
删除PV, 是指删除它的PV属性,“还原”为原来的特性,比如为“物理分区”
删除 PV后, 该PV就不存在了,但是所来所对应的物理分区还存在!
# pvremove /dev/vda1 /dev/vda2
(11)查看LVM的状态信息
1)查看物理卷的信息(pvdisplay)
# pvdisplay /dev/vda2
查看指定物理卷/dev/vda2的状态信息。
# pvdisplay
查看所有物理卷的状态信息。
2)查看卷组的信息(vgdisplay)
# vgdisplay vg-alpha
查看指定卷组的信息
# vgdisplay
查看所有卷组的信息
3)查看逻辑卷的信息 (lvdisplay)
# lvdisplay /dev/vg-alpha/lv1
查看指定逻辑卷的信息。
# lvdisplay
查看所有逻辑卷的信息
(12)扩展/缩减卷组VG
扩展VG
把额外的物理卷PV添加到VG, 使得该VG有更多的PE分配给逻辑卷LV
#fdisk /dev/vdb
准备好一个PV, 可创建一个新的分区再转换为PV,或者使用已有的不使用的PV
# vgextend vg-alpha /dev/vdb2
把物理卷/dev/vdb2添加到卷组vg-alpha中。
# vgdisplay vg-alpha
扩展后,检查VG是否增加可用的PE (free PE字段)
缩减VG
把物理卷PV从VG中删除
需要两个步骤:
步骤1)把该PV上的所有PE移动(实质是“复制”)到该VG中(或该VG中指定的)含有空闲PE的PV中
方式1:
# pvmove /dev/vdb2
把物理卷/dev/vdb2中的所有PE移动(实质是“复制”)到该VG中含有空闲PE的PV中
方式2:
# pvmove /dev/vdb2 /dev/vdb1
把物理卷/dev/vdb2中的所有PE移动(实质是“复制”)到该VG中的物理卷vdb1
步骤2)把PV从VG中删除
# vgreduce vg-alpha /dev/vdb2
把物理卷/dev/vdb2从卷组vg-alpha中删除,但是该物理卷本身并不删除。
3)补充
PV从VG中删除后,成为未使用的PV, 该PV可添加到其他的VG中,
也可以删除它的PV属性,“还原”为原来的特性,比如为“物理分区”。
# pvremove /dev/vdb2
把物理卷/dev/vdb2的PV属性删除,成为原来的物理分区。
(13)扩展逻辑卷LV
扩展LV
扩展LV需要3个步骤:
1) 检查LV所在的VG中是否还有空闲的PE
# vgdisplay vg-alpha
检查 Free PE字段
如果还有足够的PE,才能扩展LV,
如果没有足够的PE, 那应该先扩展VG
2)扩展LV
# lvextend -L +300M /dev/vg-alpha/lv1
把逻辑卷lv1增加 300MiB空间。
选项用法:
-L +300M 增加300MiB
-L 300M 设置为300MB
-l +100 增加100个PE
-l 100 设置为100个PE
-l +50%FREE 增加VG中可用空间的50%
3) 扩展文件系统
即,需要把扩展后的LV对应的文件系统(挂载点)进行“更新”一下。
否则LV扩展了,但是对应的文件系统并不会扩展。
有两种方式:
方式1:(适用于XFS文件系统)
# xfs_growfs /mnt/data1
xfs_growfs的参数为lv的挂载点。
方式2:(适用于ext4文件系统)
# resize2fs /dev/vg-alpha/lv1
resize2fs的参数为逻辑卷的完整设备文件名
补充:查看分区、逻辑卷的的文件系统格式
# df -T
作者:废权
链接:https://blog.yjscloud.com/archives/26
声明:如无特别声明本文即为原创文章仅代表个人观点,版权归《废权的博客》所有,欢迎转载,转载请保留原文链接。


共有 0 条评论