一、LVM的相关知识
1、什么是LVM ?
LVM是逻辑盘卷管理(Logical Volume Manager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。
2、为什么要使用LVM?
在日常工作或者学习中,随着电脑的不断被使用,我们的磁盘空间可能会越来越小,这时候,我们不能直接更换大硬盘,因为硬盘有价,数据无价,这时候我们就可以使用LVM,LVM将存储虚拟化,使用逻辑卷,你不会受限于物理磁盘的大小,另外,和硬件相关的存储设置被其隐藏,你能不用停止应用或卸载文件系统来调整卷大小或数据迁移.这样能减少操作成本,LVM最大的特点就是可以对磁盘进行动态管理。因为逻辑卷的大小是可以动态调整的,而且不会丢失现有的数据。如果我们新增加了硬盘,其也不会改变现有上层的逻辑卷。作为一个动态磁盘管理机制,逻辑卷技术大大提高了磁盘管理的灵活性。
3、LVM的工作机制
LVM就是通过将底层的物理硬盘抽象的封装起来,然后以逻辑卷的方式呈现给上层应用。在传统的磁盘管理机制中,我们的上层应用是直接访问文件系统,从而对底层的物理硬盘进行读取,而在LVM中,其通过对底层的硬盘进行封装,当我们对底层的物理硬盘进行操作时,其不再是针对于分区进行操作,而是通过一个叫做逻辑卷的东西来对其进行底层的磁盘管理操作
4、几个专业名词
物理卷(PV, Physical Volume)
物理卷就是指磁盘,磁盘分区或从逻辑上和磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有和LVM相关的管理参数。当前LVM允许你在每个物理卷上保存这个物理卷的0至2份元数据拷贝.默认为1,保存在设备的开始处.为2时,在设备结束处保存第二份备份.
卷组(VG, Volume Group)
LVM卷组类似于非LVM系统中的物理硬盘,其由物理卷组成。能在卷组上创建一个或多个“LVM分区”(逻辑卷),LVM卷组由一个或多个物理卷组成。
逻辑卷(LV, Logical Volume)
LVM的逻辑卷类似于非LVM系统中的硬盘分区,在逻辑卷之上能建立文件系统(比如/home或/usr等)。
PE(physical extent):
物理区域是物理卷中可用于分配的最小存储单元,物理区域大小在建立卷组时指定,一旦确定不能更改,同一卷组所有物理卷的物理区域大小需一致,新的pv加入到vg后,pe的大小自动更改为vg中定义的pe大小。
LE(logical extent):
逻辑区域是逻辑卷中可用于分配的最小存储单元,逻辑区域的大小取决于逻辑卷所在卷组中的物理区域的大小
二、LVM的制作
1>打开一个shell监控设备信息
-
watch -n 1 ‘pvs; echo ======; vgs; echo ======;lvs’
2>创建多个分区,并把分区分区id修改为8e
用命令fdisk /dev/vdb 在磁盘/dev/vdb中建立多个分区
将分区id修改为8e
3>创建物理卷 -
pvcreate /dev/vdb{2,3}
4>创建物理卷组 -
vgcreate nihao /dev/vdb{2,3} 物理卷组的名称可以随意取,这里是nihao
5>创建逻辑卷
在物理卷组中提取一部分空间,生成逻辑卷lv0.-L指定逻辑卷的大小,-n指定逻辑卷的名称 -
lvcreate -n lv0 -L 1G nihao
逻辑卷创建成功之后,会产生一个虚拟的设备文件:
6>逻辑卷的删除 -
lvremove /dev/nihao/lv0
7>物理卷组的删除 -
vgremove nihao
8>物理卷的删除 -
pvremove /dev/vdb{2,3}
三、逻辑卷的应用
1>格式化逻辑卷设备
-
mkfs.ext4 /dev/nihao/lv0
2>挂载设备到文件系统 -
mkdir /lvm
-
mount /dev/nihao/lv0 /lvm/
3>编辑开机自动挂载 -
vim /etc/fstab
写入以下内容:
查看挂载是否成功:
四、ext4格式逻辑卷的拉伸与缩减
1、目的:将逻辑卷拉伸到1.8G大小
1>确定卷组是否有足够的空间可以拉伸 -
vgs
2>逻辑卷拉伸命令 -
lvextend -L 1.8G /dev/nihao/lv0
-
lvextend -L +800M /dev/nihao/lv0
3>查看拉伸之后的大小
lvs #查看逻辑卷设备的大小是否被拉伸成功
逻辑卷设备拉伸成功。
df -h #查看文件系统的大小是否拉伸成功
此时我们发现文件系统的大小并没有拉伸成功,这是因为我们没有更新文件系统。
4>更新文件系统
- resize2fs /dev/nihao/lv0
5>查看更新后的文件系统
df -h
更新后的文件系统拉伸成功。
2、拉伸物理卷组
目标:将逻辑卷拉伸到3.5G
1>确定卷组是否有足够的空间可以拉伸
vgs
2>创建一个物理卷,如果存在空闲的物理卷组可以不用创建
3>将新的物理卷添加到物理卷组中
将/dev/vdb5添加到nihao这个物理卷组中
-
vgextend nihao /dev/vdb5
4>查看拉伸后的物理卷组大小 -
vgs
5>拉伸逻辑卷 -
lvextend -L 3.5G /dev/nihao/lv0
-
df -h
更新文件系统:
-
resize2fs /dev/nihao/lv0
-
df -h
查看更新之后的文件系统
3、缩小逻辑卷
1>卸载正在挂载的逻辑卷
umount /lv
2>对文件系统进行校验 -
e2fsck -fv /dev/nihao/lv0
3>缩小文件系统到2G -
resize2fs /dev/nihao/lv0 2G
4>缩小逻辑卷 -
lvreduce -L 1.5G /dev/nihao/lv0
重新挂载设备,查看缩减是否生效
5>查看卷组中是否有空闲的分区,如果有,则移除分区
/dev/vdb5为空闲分区,我们将他移除
先移除物理卷组中的/dev/vdb5
再移除逻辑卷中/dev/vdb5
五、xfs格式u逻辑卷的拉伸(不能缩减)
目标:将逻辑卷拉伸到1.5G
1>重新创建逻辑卷,格式化逻辑卷并挂载
2>查看卷组是否有足够的空间可以拉伸
3>逻辑卷拉伸命令
-
lvextend -L 1.5G /dev/nihao/lv0
-
lvextend -L +300M /dev/nihao/lv0
4>查看拉伸之后的大小
5>更新文件系统 -
xfs_growfs /dev/nihao.lv0
6>查看更新之后的文件系统
总结:ext格式的逻辑卷可以拉伸和缩减,更新文件系统的命令是resize2fs /dev/nihao/lv ,xfs格式的逻辑卷的只能进行拉伸,不嫩缩减,更新系统文件的命令是xfs_growfs /dev/nihao/lv0