随着科技的进步,人们不知不觉的就进入了大数据的时代,数据的不断增加我们发现我们的磁盘越来越不够用了,接下来就是令人头疼的事情–加硬盘,数据的备份与还原。LVM就是Linux下专门针对我们数据的不断的扩大,在原有动态磁盘的基础上动态的调整磁盘的大小的工具。
Linux操作系统时遇到的一个常见的难以决定的问题就是如何正确地评估各分区大小,以分配合适的硬盘空间。普通的磁盘分区管理方式在逻辑分区划分好之后就无法改变其大小,当一个逻辑分区存放不下某个文件时,这个文件因为受上层文件系统的限制,也不能跨越多个分区来存放,所以也不能同时放到别的磁盘上。而遇到出现某个分区空间耗尽时,解决的方法通常是使用符号链接,或者使用调整分区大小的工具,但这只是暂时解决办法,没有从根本上解决问题。随着Linux的逻辑卷管理功能的出现,这些问题都迎刃而解,用户在无需停机的情况下可以方便地调整各个分区大小。
百科上给我们提供了这样两张图来说明lvm是怎样去使用的,那么我们先来了解下几个英文缩写的含义:
pv :物理卷 :被lv命令处理过的物理分区
vg : 物理卷组 : 被组装到一起的物理卷
pe : 物理扩展 : lvm设备的最小存储单元
lvm : 逻辑卷 : 直接使用的设备,可以保持原有数据不变的情况下在线增大缩减容量
由上图我们可以看出lvm的
1.先产生物理卷pv
2.再将物理卷pv合为物理卷组vg
3.最后从物理卷组vg中划分出多个逻辑卷lv进行直接使用。
(1)物理磁盘被格式化为PV,空间被划分为一个个的PE
(2)不同的PV加入到同一个VG中,不同PV的PE全部进入到了VG的PE池内
(3)LV基于PE创建,大小为PE的整数倍,组成LV的PE可能来自不同的物理磁盘
(4)LV现在就直接可以格式化后挂载使用了
(5)LV的扩充缩减实际上就是增加或减少组成该LV的PE数量,其过程不会丢失原始数据
演示说明:
1.创建分区,并更改其类型为lvm
为 了 方 便 观 察 , 我 们 用 w a t c h 指 令 进 行 检 测 \color{blue}{为了方便观察,我们用watch指令进行检测} 为了方便观察,我们用watch指令进行检测
watch -n 1 'pvs;echo === ;vgs;echo === ; lvs;echo === ; df -h /data'
2.创建物理卷:pvcreate /dev/vdb1
3.设置物理卷组:vgcreate vg0 /dev/vdb1
这里我们也可以顺便指定最小存储单元pe【vgcreate -s 16M vg0 /dev/vdb1】
4.创建逻辑卷:
lvcreate -L 100M -n lv0 vg0
lv0名字任意,从vg0【物理卷组】中划分存储单元100M,命名为lv0
我们可以采用以下三条指令去单独查看物理卷,物理卷组,逻辑卷的情况:
pvdisplay
vgdisplay
lvdisplay
当我们设置vg的时候将pe修改为16时:当创建一个20M的lv时,会发现实际创建了32M的lv。
5.格式化逻辑卷,并挂载,投入使用。
上 面 我 们 说 过 了 , l v m 可 以 在 线 拉 伸 扩 展 存 储 , 下 面 来 看 下 : \color{blue}{上面我们说过了,lvm可以在线拉伸扩展存储,下面来看下:} 上面我们说过了,lvm可以在线拉伸扩展存储,下面来看下:
首先:当vg中剩余容量充足的情况:
lvextend -L 20M /dev/vg0/lv1 ##拉伸设备
xfs_grow /dev/vg0/lv1 ##拉伸文件系统
当vg存储池中容量不足时,我们就需要先给vg扩大容量了。
1.再次建立分区,并修改标签为8e,同步分区表,加到物理卷中
2.拉伸物理卷组vg
3.扩展lv设备
4.扩展文件系统
这就和我们默认的PE大小有关了。
x f s 文 件 系 统 不 支 持 缩 减 \color{blue}{xfs文件系统不支持缩减} xfs文件系统不支持缩减
针对ext文件系统的设备的拉伸和缩减,我们需要先更改文件系统格式:
umount /data ###取消挂载
mkfs.ext4 /dev/vg0/lv1 ###格式化:更改文件系统格式
mount /dev/vg0/lv1 /data ###挂载
拉伸:
lvextend -L 250M /dev/vg0/lv1
resize2fs /dev/vg0/lv1
缩减lv:
umount /dev/vg0/lv1 ###卸载设备
e2fsck -f /dev/vg0/lv1 ###扫描 【检查正确性】
resize2fs /dev/vg0/lv1 100M ###缩减文件系统到100M 【先缩减文件系统再缩减lv1】
lvreduce -L 100M /dev/vg0/lv1 ###缩减lv到100M
mount /dev/vg0/lv0 /data ###挂载
缩减vg:vg是由多个pv物理卷组成的,缩减vg,即将空余的pv移除。
vgreduce vg0 /dev/vdb2
移除含有数据的设备
我们此时vbd1上面含有数据,vdb2为空,我们需要将vdb1这块磁盘删除,这时就要将数据移动到vdb2上,再去删除vdb1,具体操作如下:
pvmove /dev/vdb1 /dev/vdb2 将数据移动到/dev/vdb2
vgreduce vg0 /dev/vdb1 将/dev/vdb1从vg中删除
pvremove /dev/vdb1 移除/dev/vdb1该分区
上 面 我 们 说 道 了 不 少 移 除 这 一 操 作 , 其 实 就 是 删 除 。 \color{blue}{上面我们说道了不少移除这一操作,其实就是删除。} 上面我们说道了不少移除这一操作,其实就是删除。
对于lvm的删除,我们还需要知道以下内容:
lvremove /dev/vg0/lv0-backup
lvremove /dev/vg0/lv0
vgremove vg0
pvremove /dev/vdb1
fidsk /dev/vdb ###【d 删除分区】
先删除lv,然后删除vg,然后pv,最后删除分区。和建立顺序相反。
补充最后一个内容:【lvm快照】
和虚拟机一样,lvm逻辑卷管理也有快照。快照可以让我们在类似镜子一样的设备上进行lvm操作,当有操作失误时,可以直接删除快照,而不影响原文件。
umount /data ###取消设备挂载
lvremove /dev/vg0/lv0-backup
lvcreate -L 40M -n lv0-backup -s /dev/vg0/lv0 ###快照建立,40M为快照大小。
mount /dev/vg0/lv0-backup /data ###挂载快照
rm -fr /data/*
大大的小小阳