逻辑卷LVM配置spa
LVM是逻辑盘卷管理(Logical Volume Manager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是创建在硬盘和分区之上的一个逻辑层,来提升磁盘分区管理的灵活性。经过LVM系统管理员能够轻松管理磁盘分区,管理员能够在卷组上随意建立逻辑卷组(logical volumes),并进一步在逻辑卷组上建立文件系统。管理员经过LVM能够方便的调整存储卷组的大小,而且能够对磁盘存储按照组的方式进行命名、管理和分配。3d
PV(physical volume):物理卷在逻辑卷管理系统最底层,可为整个物理硬盘或实际物理硬盘上的分区。blog
VG(volume group):卷组创建在物理卷上,一卷组中至少要包括一物理卷,卷组创建后可动态的添加卷到卷组中,一个逻辑卷管理系统工程中可有多个卷组。rem
LV(logical volume):逻辑卷创建在卷组基础上,卷组中未分配空间可用于创建新的逻辑卷,逻辑卷创建后能够动态扩展和缩小空间。虚拟机
PE(physical extent):物理区域是物理卷中可用于分配的最小存储单元,物理区域大小在创建卷组时指定,一旦肯定不能更改,同一卷组全部物理卷的物理区域大小需一致,新的pv加入到vg后,pe的大小自动更改成vg中定义的pe大小。table
LE(logical extent):逻辑区域是逻辑卷中可用于分配的最小存储单元,逻辑区域的大小取决于逻辑卷所在卷组中的物理区域的大小。基础
底层PV是一种LVM格式,VG至关于普通磁盘,LV至关于磁盘上的分区,结构以下:扩展
任务配置 |
PV阶段gc |
VG阶段 |
LV阶段 |
查找(scan) |
pvscan |
vgscan |
lvscan |
新建(create) |
pvcreate |
vgcreate |
lvcreate |
显示(display) |
pvdisplay |
vgdisplay |
lvdisplay |
增长(extend) |
|
vgextend |
lvextend(lvresize) |
减小(reduce) |
|
vgreduce |
lvreduce(lvresize) |
删除(remove) |
pvremove |
vgremove |
lvremove |
改变容量(resize) |
|
|
lvresize |
改变属性(attribute) |
pvchange |
vgchange |
lvchange |
下面用一个示例,演示LVM经常使用的配置流程
如上图,虚拟机新磁盘sdb为10G,知足如下要求:
一、新建一个2G的逻辑卷,要求卷组名vg0_ext3,逻辑卷名lvm0,大小为1G,文件系统类型ext3,挂载点/data0;
二、将lvm0增大2G,同时增大文件系统,不影响已有文件;
三、将lvm0减少660M,同时减少文件系统,不影响已有文件;
四、新建一个3G的逻辑卷,要求卷组名vg1_xfs,逻辑卷名为lvm1,大小为3G,文件系统类型xfs,挂载点/data1;
五、将lvm1增大1G,增大文件系统,不影响已有文件;
配置以下:
首先使用fdisk划分出2G分区,分区类型为LVM格式;
fdisk /dev/sdb
n(新增分区)--->p(基础分区)--->1(分区号)--->Enter(起始柱面)--->+2G(分区大小)--->t(改变分区类型)--->1(改变的分区号)--->8e(LVM分区类型label)--->w(保存退出)
查看分区:
PV阶段,将sdb1设置为PV格式,并查看:
pvcreate /dev/sdb1
pvdisplay /dev/sdb1
VG阶段,在sdb1分区,新建VG,卷组名vg0_ext3,并查看该卷组;
vgcreate vg0_ext3 /dev/sdb1
vgdisplay /dev/vg0_ext3 #注意此时卷组名/dev/vg0_ext3
LV阶段,在卷组vg0_ext3上,新建LV,名称lvm0,大小为1G,并查看;
lvcreate -L 1G -n lvm0 /dev/vg0_ext3 #选项 -L指定大小 -n指定lvm名称
lvdisplay /dev/vg0_ext3/lvm0 #注意此处lvm格式
查看LVM配置结果:
格式化lvm0,文件系统类型ext3,挂载点/data0
mkfs.ext3 /dev/vg0_ext3/lvm0
echo '/dev/vg0_ext3/lvm0 /data0 ext3 defaults 0 0' >> /etc/fstab
mkdir /data0
mount -a
查看挂载结果:
因为剩余PV空间不足2G,需从新划分一个分区,大小2G,加到/dev/vg0_ext3/lvm0中;
配置以下:
fdisk /dev/sdb
N--->p--->2--->Enter--->+2G--->t--->2--->8e--->w--->partprobe(强制内核检查分区表)
umount /data0 #扩大LVM,首先umount挂载点
pvcreate /dev/sdb2 #将/dev/sdb2建立PV
vgextend /dev/vg0_ext3 /dev/sdb2 #扩大原有VG,将/dev/sdb2加入
lvextend -L 3G /dev/vg0_ext3/lvm0 #扩大原有LV为3G
e2fsck -f /dev/vg0_ext3/lvm0 #要求强制检查文件系统
resize2fs /dev/vg0_ext3/lvm0 3G #调整/dev/vg0_ext3/lvm0分区大小为3G
查看增大后分区,并挂载
缩小LVM,首先须要umount挂载点
umount /data0
减少660M文件系统,至关于文件系统减少为1024*3-660=2412M
e2fsck -f /dev/vg0_ext3/lvm0
resize2fs /dev/vg0_ext3/lvm0 2412M
lvreduce -L 2412M /dev/vg0_ext3/lvm0 #再减少LVM到2412M
从新挂载后结果
首先使用fdisk建立/dev/sdb3,大小为3G,以后开始建立LVM
pvcreate /dev/sdb3
vgcreate vg1_xfs /dev/sdb3
注意此处,因为/dev/sdb3大小是3G,建立LV时可能出现PE不够的状况
用vgdisplay查看空闲PE数后,用PE数量建立LV
lvcreate -l 767 -n lvm1 /dev/vg1_xfs # -l 参数表示PE个数
LV创建后进行格式化、挂载
mkfs.xfs /dev/vg1_xfs/lvm1
echo '/dev/vg1_xfs/lvm1 /data1 xfs defaults 0 0' >> /etc/fstab
mkdir /data1
mount -a
扩大dev/vg1_xfs/lvm1,首先fdisk新建分区/dev/sdb4,大小为1G,再增长LVM
pvcreate /dev/sdb4
vgextend /dev/vg1_xfs /dev/sdb4
查看VG,总PE数为1022
lvextend -l 1022 /dev/vg1_xfs/lvm1
扩大xfs文件系统,注意xfs文件系统能够在挂载的状况下扩大
xfs_growfs /dev/vg1_xfs/lvm1
查看LVM扩大后结果
过程跟建立LVM相反,先删除LV,再删除VG,举例删除/dev/vg1_xfs/lvm1
umount /data1
lvremove /dev/vg1_xfs/lvm1
vgremove vg1_xfs
pvremove /dev/sdb4
pvremove /dev/sdb3
最后用fdisk删除磁盘分区便可
一、ext3文件系统调整前必须umount,强制检查后调整,即先e2fsck后再resize2fs;
二、xfs文件系统用xfs_growfs扩大,不能减少,没有相应的减少命令,在挂载状态下执行;
三、文件系统减少有风险,尽可能避免对根分区操做;
四、若是LV扩大提示空间不足,考虑使用PE个数扩大;
五、PE大小默认4MB,若是要改变,VG阶段使用vgcreate -s指定PE大小,同时其余要加入的逻辑卷PE大小须保持一致;