11.1 LVM基本概念
11.1.1 LVM简介
上一章我们讲解了标准分区的使用过程,可以看到,标准分区的配置比较简单,但是标准分区也有很显著的缺点,如:分区创建后不可扩容、分区的空间必须连续,不允许跨越多块空间或磁盘。但是这些缺点,却是我们在生产环境中比较常见的需求,如:存放某个软件相关数据的分区,经常会被软件的数据所占满,需要空间扩容,而且一块磁盘存满了,还需要再加一块新的磁盘。为了满足这种需求,Linux中就需要使用LVM技术来实现。
LVM的简单原理就是把多块磁盘或分区组织一个小组,划分存储空间时从小组中的成员上占用空间,即可以跨越多个磁盘或分区,也可以随时扩容、缩容。是一种十分灵活的磁盘管理方案。
11.1.2 LVM原理
下面我们来具体介绍下LVM的工作原理,首先来学习几个概念
PV:物理卷,可以把一个分区或一块磁盘制作成PV,即一块用于存储数据的磁盘空间。
VG:卷组,由多个PV组成一个PV组
LV:逻辑卷,从VG中划分出一块存储空间,制作文件系统,并挂载使用。LV允许跨越VG中多个PV的空间。
PE:物理单元,PV加入到VG时,会按照VG事先制定好的固定大小,划分成n多个存储单元,称为PE
LE:逻辑单元,从VG中划分出LV时,是按照LV的大小,从VG中划分出足够多的PE给LV使用,被LV所占用的PE,在LV中称为LE。即LE是PE在LV中的映射。
PV、VG、LV、PE、LE的关系如上图所示。分区制作成PV后,加入到VG中,被划分成了多个PE,假设PE大小=1G,则sda7的40G空间个会被分成40个PE,sda8分成50个PE。所以我们可以认为VG其实管理的是内部的PE资源。当要划分LV时,LV所需空间30G,则VG会从PE池中划分出30个PE映射给LV使用。这些PE可以来自于不同的PV上。另外当LV空间被用满时,可以随时的增加空间,若VG中剩余空间不足,则可以先给VG中增加新的PV,再给LV扩容。
11.3 LVM创建文件系统
关于LVM创建LV并制作文件系统使用的实验,我们可以按一下五部逐步完成。
1、新建分区
fdisk /dev/sda ---使用fdisk管理/dev/sda
创建三个分区:sda7(600M) sda8(800M) sda9(1000M)
设置三个分区的文件系统类型均为 8e Linux LVM,结果如下图
partprobe ---更新生效
2、创建PV
pvcreate /dev/sda7 ---制作PV,执行成功的前提:设定类型是8e
pvcreate /dev/sda8
pvcreate /dev/sda9
#pvcreate /dev/sdb
注:PV的来源可以是分区,也可以是整个磁盘,其实在生产环境中,使用更多的是把整个磁盘制作成一个PV。在这里,我们实验的简单、明了,暂时使用分区制作成PV。
pvdisplay ---查看本机所有PV信息
pvdisplay /dev/sda7 ---查看指定的PV信息
3、创建VG,加入PV
vgcreate -s 8m vg01 /dev/sda7 /dev/sda8
注:创建vg, -s指定PE大小,不写,默认4m,后面的vg01是给新VG起的名字,再后的sda7、sda8是加入到VG的PV
vgdisplay ---查看本机所有VG信息,可见:VG大小、PE大小、PE数、使用数、PV数、活动PV数等信息。(读者可对应英文自行查看)
pvdisplay ---可查看到PV加入到VG后的信息,如:PE数、使用数、空闲数。
4、从VG中划分出LV
lvcreate -L 500M -n lv01 vg01
注:创建LV,-L 指定LV大小 -l指定LV中的LE数,-n指定lv名 最后的
vg01指定从哪个VG分
# lvcreate -L 500M -n lv01 vg01 /dev/sda8
注:创建LV时,也可以在命令最后指定PV,即设定LV的LE从哪个PV上占用
lvdisplay ---查看lv信息
lvdisplay -m /dev/vg01/lv01 ---查看LV信息及LE、PE的映射关系
5、给LV制作文件系统,挂载使用
mkfs -t ext4/dev/vg01/lv01 ---制作文件系统
mkdir /mnt/d1 ---创建挂载点
mount /dev/vg01/lv01 /mnt/d1 ---挂载使用
df -h
lsblk ---查看
vi /etc/fstab ---配置开机自动挂载
/dev/vg01/lv01 /mnt/d1 ext4 defaults 1 2
11.4 LVM管理
11.4.1 LVM扩容
我们之前讲过,LVM的最大优势就是可以根据需求灵活的做出扩容操作,下面我们就来看一下扩容的具体命令:
vgextend vg01 /dev/sda9 ---扩容VG,即给VG增加PV
lvextend -L +200M /dev/vg01/lv01 ---扩容LV
参数说明:-L 表示按大小扩容,-l 表示按LE数扩容。不写 + 表示扩容到多大,写 + 表示增加多大
lvextend -L +200M /dev/vg01/lv01 /dev/sda8
注:也可以在扩容时指定在哪个PV上占用新空间。
lsblk 或lvdisplay 都可以看到lv扩容成功,空间大小已增加。
但是,如果我们使用df -h 查看发现文件系统使用信息,会发现lv所在的文件系统大小未发生变化。这是因为扩容增加的空间并未制作文件系统。但如果我们使用mkfs命令重新制作文件系统的话,原有数据将会丢失,所以,我们需要做的只是将新增空间制作文件系统。命令如下:
resize2fs /dev/vg01/lv01 ---重置LV大小,自动将未做文件系统的空间格式化。
或者,我们也可以在扩容的同时,增加-r参数,扩容后直接对新增空间制作文件系统,如下。
lvextend -L +200M -r/dev/vg01/lv01
11.4.2 数据转移
再者,就是LE对于PE映射的转移。我们可以想象,如果有一块磁盘已经有了明显的故障迹象,读写速度命令降慢了许多,我们是不可以等着这块磁盘彻底故障、不可读写了再将其替换的,那样就容易产生数据丢失了。所以我们要在磁盘还能够读写,但已经有故障的初级现象时就提前更换。那么势必要将原有磁盘上的数据转移到新磁盘。可以使用如下命令:
pvmove /dev/sda7 /dev/sda9
解释:把sda7上所有LE对PE的映射,转移到sda9上,即所有LE映射到sda9的PE上,数据也跟着复制过去,不会丢失
另外,当我们发现VG中的PV使用不合理,有些PV上LV比较多,使用率高,而有些PV则很少被LV所占用,造成PV使用不均衡,单个PV数据读写压力大的现象。则我们也需要把一个PV上的部分被LV占用的映射PE转移到其他PV上。命令如下:
pvmove /dev/sda9:0-10 /dev/sda8 ---把sda9的0-9 号PE对LE的映射,转移到sda8上,以实现磁盘使用的均衡化
注意:在指定源PV时,指定的是PV上的PE号,而不是在LV中的映射LE号。
lvdisplay -m /dev/vg01/lv01 ---转移完毕可见到新的映射关系
11.4.3 缩容
既然能做VG、LV扩容,当然也可以所缩容。LV的缩容命令如下:
lvreduce -L -200M/dev/vg01/lv01 ---LV缩容
但是,缩容后,文件系统的超级块将被破坏,则文件系统不可再用,可以将原文件系统卸载后再次挂载以证明。所以只能重新mkfs制作文件系统再使用,但原数据会丢失。若果重新格式化时报错失败,则可以使用dd命令将LV的前100M用二进制的0作擦除后,再格式化(具体的dd命令前面章节已经讲过)。
如果VG中有未用的PV,如之前被替换的故障PV,则可以将其从VG中删除,命令如下:
vgreduce /dev/vg01 /dev/sda7 ---VG缩容,删除PV
11.4.4 LVM删除
如果LVM不想再使用,要全部清除,思路就是按照创建时的过程逆向操作即可:
umount /dev/vg01/lv01 ---卸载文件系统
lvremove /dev/vg01/lv01 ---删除LV
vgremove /dev/vg01 ---删除VG,前提:VG中已没有LV
pvremove /dev/sda[789] ---删除PV。PS:用到了正则表达式,是否记得?
fdisk /dev/sda ---进入fdisk菜单,删除分区
11.4.5 小结
①文件系统是指可用的,被格式化好的存储空间,存储空间,可由分区提供,也可以从多块磁盘上占用。
②LV实质是由PE组成的存储空间,在该空间内制作文件系统,划分block,可以认为,PE大,block小,是在PE内划分的block
11.5 swap交换分区
我们之前在安装系统时讲过,swap分区又称交换分区,就是常说的虚拟内存。功能是:当系统物理内存不足的或使用空间紧张系统会在磁盘上开辟块空间,临时当内存使用,称为虚拟内存
在不同操作系统中,虚拟内存也有诸多叫法:虚拟内存(统一叫法),swap交换空间(Linux),页面文件(windows),换页空间(unix)。
我们之前讲过,swap空间的大小是于物理内存的大小相关的,最大可用量是物理内存的2倍。
那么当我们扩容了主机物理内存的大小后,如何手动扩容swap大小呢?这就需要创建swap分区来实现。具体步骤如下:
free -h ---查看内存系统信息,swap行表示swap空间使用信息
fdisk /dev/sda ---磁盘内创建一个分区,文件系统类型设置成:82 Linux swap,如sda10 500M,之后partprobe更新
mkswap /dev/sda10 ----制作swap文件系统
swapon /dev/sda10 ---启用swap分区
free -h ---可见swap空间已增加
swapoff /dev/sda10 ---关闭swap分区
lsblk ---可见swap分区
vi /etc/fstab ---配置开机自动挂载
/dev/sda10 swap swap default 0 0
之上,是用标准分区模式创建的swap分区,其实使用LV做swap过程类似:
lvcreate -L 400M -nlv03 vg01 --创建lv03
mkswap /dev/vg01/lv03 ---制作swap文件系统
swapon /dev/vg01/lv03 ---启用swap
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有