相关概念
物理卷:PV
物理卷就是 底层 真正存储数据的设备,这个设备可以是 整个磁盘也可以是 磁盘的某一个分区。
卷组:VG
顾名思义是组,是物理卷的组,建立在物理卷之上,由一个或多个物理卷组成;就是 将多个物理卷融合在一起来提供容量。
逻辑卷:LV
逻辑卷就是建立在卷组之上,创建逻辑卷就是在 卷组中 『切』下一部分空间来使用。
物理区域:PE
每个物理卷 被 划分的最小单位,也是寻址的最小单位,默认是4M,也可以通过选项进行修改。
逻辑区域:LE
逻辑卷被划分的 最小单位,也是寻址的最小单位,在同卷组中,PE和LE 的大小是一一对应的。
使用逻辑卷的优点:
灵活管理、动态扩容、在线扩容、离线裁剪、数据条带化、数据镜像
总结:
真实的物理设备——>逻辑上做成物理卷(pv)——>卷组(vg)——>逻辑卷(lv)
实例部分:
Demo A . 创建 一个 1G的 逻辑卷,并且挂载使用。(必须挂载到挂载点才可以使用)
(实现环境:已经存在可用磁盘而且已经分好区,用第一个主分区进行实现)
1. 查看磁盘分区情况:lsblk 命令
1. 创建物理卷
# pvcreate /dev/sdb1
创建成功会有成功信息
查看 PV 信息 命令:
# pvs 简单查看
# pvdisplay 查看PV的详细信息
2. 创建卷组
命令:vgcreate VG名字 物理卷
# vgcreate vg1 /dev/sdb1
创建 卷组 vg1 ,并且把物理卷 sdb1 加入卷组,卷组中可以加入多个 物理卷
查看 VG 信息命令:
# vgs
# vgdisplay
命令 vgcreate 的常用选项
-s:卷组中物理卷的PE大小设置,默认下是 4M
-p:卷组中允许添加的最大物理卷数
-l :卷组上允许创建的最大逻辑卷数
注意: 创建 卷组的命令中,可以直接使用 /dev/sdb1 , 不用先创建物理卷,这个命令会把/dev/sdb1 自动创建为物理卷再添加到 卷组 中。
3. 创建逻辑卷
命令:lvcreate -n LV名字 -L 容量 卷组名
# lvcreate -n lv1 -L 2G vg1
在 卷组 vg1 中 切下 2G 的容量 来创建 逻辑卷 lv1
注意: 创建好 逻辑卷 后,会映射到以下两个路径:
# ll /dev/vg1/lv1
lrwxrwxrwx. 1 root root 7 7月21 19:41/dev/vg1/lv1->../dm-0
# ll /dev/mapper/vg1-lv1
lrwxrwxrwx. 1 root root 7 7月21 19:41/dev/mapper/vg1-lv1->../dm-0
这两个路径指的同一个文件。
详细内容查看:Linux中/dev/mapper目录浅谈
4. 格式化逻辑卷
格式化的作用:
格式化后才能挂载使用
命令:mkfs.ext4 /dev/vg1/lv1 或者 mkfs.ext4 /dev/mapper/vg1-lv1
对逻辑卷进行格式化,将文件系统格式化为 ext4
5. 挂载使用
mount /dev/vg1/lv1 /test
(/test 目录 已经存在,如果不存在,创建 mkdir /test )
Demo B . 在线扩容逻辑卷
扩容逻辑卷 分为两种情况:
(a)卷组的容量足够扩容逻辑卷:
1. 查看vg 的信息 :# vgs
VG #PV #LV #SN Attr VSize VFree
vg1 1 1 0 wz--n- 1.86g 880.00m
2. 其中 VFree 就是 还可用容量,如果这个 容量 大于 LV 需要扩展的容量 ,那么直接对 LV 扩容:
# lvextend -L +0.5G /dev/vg1/lv1 在原来的基础上 增加 0.5G
或者:
# lvextend -L 1.5G /dev/vg1/lv1 将 LV 扩容 到 1.5G
3. 将扩容的LV 同步文件系统
# resize2fs /dev/vg1/lv1
(b)卷组的容量不够扩容逻辑卷
1. 卷组(VG)的容量不够 直接给 逻辑卷(LV)扩容的情况下,那么首先需要进行扩容的 是 卷组(VG)。
命令: vgextend VG名 物理卷(或直接是 设备)
# vgextend vg1 /dev/sdb3
%卷组是由 物理卷 组成,如果直接将设备 加入卷组,那么系统会自动的把设备 创建为 物理卷(PV),然后再加入卷组%
2. 再查看VG的可用容量是否满足 LV 所需大小
# vgs
如果不够,继续扩容 VG 的 容量,如果足够,那么就是跟 a 情况 步骤一样
注意点: 扩容逻辑卷后,一定要 进行 文件系统的扩容,就是同步文件系统。不管是扩容还裁剪,都要进行 同步文件系统。
Demo C . 离线裁剪逻辑卷容量
> 做好数据备份 通过一些 备份方法对数据进行备份
> 卸载逻辑卷
# umount /root/stu1
> 先裁剪文件系统(同步文件系统)
%区别 扩容 操作中,先扩容再同步文件系统,裁剪逻辑卷是先 裁剪文件系统%
# resize2fs /dev/vg1/lv1 1G ---裁剪到 1G 的容量
# e2fsck -f /dev/vg1/lv1 ---检查 磁盘
> 裁剪逻辑卷
# lvreduce -L 1G /dev/vg1/lv1
或者
# lvreduce -L 1G /dev/mapper/vg1-lv1
lvs 对 逻辑卷信息查看,如果没有问题的话
> 重新挂载使用
# mount /dev/vg1/lv1 /root/stu1
裁剪的注意点:
1. 裁剪前 最好 做个数据备份
2. 裁剪 后的容量大小 一定要 大于 数据的容量大小
Demo D . 逻辑卷实现条带化
概念:把保存在逻辑卷上的数据分成 n 等分,分别同时写入 到不同的物理卷中,简单理解为:条带化就是,在卷组中 有多个 物理卷,在卷组的基础上创建一个逻辑卷,这个逻辑卷的容量 是 由 卷组中所有的 物理卷 平均提供同等的容量给逻辑卷,所以 逻辑卷存储的数据 是 分成 多个 等分,存入 卷组的 物理卷中。
优缺点:可以提高数据的读写速率;如果任何一个 涉及到 的 物理卷损坏,数据都将无法恢复。
> 创建条带化的逻辑卷
# lvcreate -n lv1 -L 1G -i 2 vg1 /dev/sdb[12]
选项 :i ------ 指定条带化的个数(指定条带化的个数为2 ,那么表示lv1 的1G 的容量 分别 来自 物理卷 /dev/sdb1 的 0.5G 和 /dev/sdb2 的0.5G)。
> 格式化文件系统
# mkfs.ext4 /dev/vg1/lv1
> 挂载使用
# mount /dev/vg1/lv1 /root/stu1
> 测试
# iostat -d -m /dev/sdb[12] 2
:-d ------查看磁盘
-m -------以什么速度显示信息,表示Mb/s
2 -------每隔2s 显示一次 * 如果 2 后面还接有数字,代表总共显示多少次
Demo D . 逻辑卷实现镜像
概念:对某个逻辑卷做数据镜像,实现数据备份作用
> 创建一个互为镜像的逻辑卷
# lvcreate -n lv2 -L 0.7G -m 1 vg2 dev/sdb[34]
选项:-m ---------指定镜像的个数
> 查看镜像数据的完成
# lvs
> 格式化文件系统,挂载使用
mkfs.ext4 /dev/vg2/lv2
mkdir /root/stu2
mount /dev/vg2/lv2 /root/stu2
> 测试验证
# dd if = /dev/zero of = /dev/sdb3 bs = 1M count = 300
# vgredue --removemissing -f vg2 ----强制从卷组中移除损坏的盘
> 再次将 逻辑卷 挂载使用,我们需要将坏的盘 修好换成 健康的 盘 让它 再次互为镜像
# lvconvert -m 1 /dev/vg2/lv2 /dev/sdb[34]
练习:
1、添加一块新的10g硬盘到你的linux系统中,并将其分为2个分区(大小自己决定),如sdb1和sdb2
答: lsblk -----查看磁盘情况
df -h ------查看所有分区的挂载情况
fdisk /dev/sdb -------对指定的 硬盘(dev/sdb) 进行分区
分区详情:
2、创建大小为2G的逻辑卷lv01挂载到系统中的/u01目录下面,并且在/u01目录下面创建file1~file5 5个文件
答: # vgcreate vgName /dev/sdb1 -----创建卷组
# lvcreate -n lv01 -L 2G vgName -----创建逻辑卷
# mkfs -t ext4 /dev/vgName/lv01 或者 mkfs.ext4 /dev/vgName/lv01 ---格式化
# mkdir /u01 ------创建 目录 /u01
# mount /dev/vgName/lv01 /u01 -----挂载到 目录 /u01
# cd /u01 ------切换到 /u01目录
# touch file{1..5} -------创建文件file1...file5
# ll -------查看
3、假设sdb1分区有坏块,现在需要将sdb1分区上的数据快速移动到另外的硬盘sdb2上,怎么做?
答: # vgextend vg01 /dev/sdb2 -----------把/dev/sdb2添加到卷组
# pvmove /dev/sdb1 /dev/sdb2 -----------把/dev/sdb1的数据移动/dev/sdb2
* pvmove 命令 通过 man pvmove 来查看详情。
4、由于业务需要,/u01目录需要扩大到9G,怎么做?
答: # vgs -------------------查看vg的剩余容量
如果不够的话:
# vgextend vg01 /dev/sdb3(/dev/sdc1....4) --------扩展VG容量
# lvextend -L 9G /dev/vg01/lv01 ------------------扩展LV容量
# resize2fs /dev/vg01/lv01 -------------------同步文件系统
5、新建一个卷组vg02,PEsize为8M,在卷组中创建一个名为lv02的逻辑卷,大小为50个pe,格式化成ext3的文件系统挂载使用.
答: # vgcreate -s 8M vg03 /dv/sdc1
# lvcreate -n lv02 -l 50 vg02
# mkfs.ext3 /dev/vg02/lv02
# mount /dev/vg02/lv02 /root/stu2
扩展:
1、测试验证已有逻辑卷的硬盘,从一台服务器换到另一台服务器上是否可以正常读取到原来的数据?需要怎么做?
答: 不能正常的读取原来的数据,要 激活 卷组,才可以挂载使用
vgchange 命令 激活卷组
2、测试验证已有互为镜像的逻辑卷的硬盘,从一台服务器换到另一台服务器上是否可以正常读取数据?怎么做?
答:
# lvmdiskscan ------扫描块设备,查看逻辑卷
源端Server:
# umount /root/stu2 -------------------------卸载
# lvchange -an /dev/vg02/lv01 ------------激活逻辑卷
# vgchange -an vg01 -------------------------激活卷组
# vgexport vg01 -------------------------导出卷组
目标段Server:
# vgimport vg01 ---------------------------导入卷组
# vgchange -an vg01 ------------------激活卷组
# mount /root/test --------------------------挂载使用