首页 > 数据库 > Oracle > 理解LVM《二》lvm 组件
一个设备可以被 LVM 使用之前必须先被初始化为一个 PV 。这会在设备的起始位置放置一个标签,俗称“8e”。
默认情况下,LVM 标签被放在第2个 512 字节的扇区。
但是,你可以把PV 标签放在一个磁盘的前4个512字节的扇区中的任意一个。
一个 LVM 标签在重启后也会存在,同时在一个集群中都被知道。
LVM 标签用于把一个设备识别为一个 PV
LVM标签含:
① 对该设备的随机的唯一的标识符(UUID)
② 指出块设备的大小(字节)
③ 记录 LVM 元数据的存储位置
④ 设备顺序方面的信息(因为在系统启动时设备可以是以任何顺序出现)
LVM 元数据含有LVM 卷组的详细配置信息。默认情况下,一个卷组的元数据被放置到该卷组中的每个 PV 的一个特殊区域, 元数据很小,且以 ASCII 格式存储。
当前 LVM 允许在每个 PV 上存储0,1,2 个元数据的拷贝,默认是1个。
一旦你配置在每个 PV 上存储多少个元数据的拷贝后,你在后续就不能改动了。(也就是一旦 pv 加入 VG ,就不允许再修改了)
第一个拷贝被放在设备的起始位置,在 PV 标签的后面。如果有第2份拷贝,则放在设备的结束位置。
假如你不小心覆盖了开始位置的数据,你可以使用结束位置的第2份来恢复
LVM 标签放在第2个扇区,后面是 pv 所在卷组的元数据,然后就是可用空间。第一个扇区可能是启动扇区。

LVM 允许你用分区来做 PV ,而不是整个磁盘。但一般建议你把整个盘分成一个分区。
原因:
1、一是方便管理。而且如果一个磁盘上有多个 pv 会导致内核在启动时警告分区类型未知
2、条带化性能。因为 LVM 并不能判断两个 pv 是否在同一个磁盘上,如果你在这样的 PV 上建立 striped 逻辑卷,将导致性能的下降。
当然、自己作测试机、一盘多区作PV是可以考虑的
在一个 VG 中,磁盘空间被分成固定大小的单位,称为 extent。我们通常称之为“PE”。
PE是整个LVM最小的存储单位,也就是说,其实我们的文件数据都是由写入PE来处理的。
简单的说,PE就如oracle里面的block。
LVM的重点在于可以弹性调整文件系统的容量,实现这个便是通过交换PE来进行数据转换,将原本LV内的PE移到其他设备中以降低LV容量,
或将其他设备的PE加到此LV中以扩大容量。
PE与VG的相关性图示:

这个VG要扩充的话,加上其他的PV即可;而最重要的LV如果要扩充的话,也是通过加入VG内没有使用到的PE来扩充的!
VG 被分成多个逻辑卷,有三种可选 :线性逻辑卷、条带化逻辑卷、镜像卷
一个线性逻辑卷聚合多个 PV 称为一个逻辑卷。例如你有两个 60GB 的磁盘,你可以建立一个 120 GB 的逻辑卷。
两个物理存储设备可以看成首位相接的。
建立一个线性卷时,会按顺序分配某个范围的 PE 给 LV 用

用于建立 LV 的 PV 不需要相同的大小

你可以从可用的 PE 中建立多个线性逻辑卷,大小随意

你可以通过建立一个 striped 逻辑卷来控制数据如何写入物理卷。对于大型的连续读写来说,这可以提高性能.
条带化通过循环地把数据写入预先定好数量的 PV 上来提高性能。通过条带化,I/O 可以以并行的方式进行,在某些情况下,可以达到几乎线性倍数的性能提高.
下面是一个分布于三个 PV 上的条带化逻辑卷,可以看到和 RAID-0 是一样的原理.
不同的是,RAID-0 要求每个成员设备大小相同,而 LVM 不要求这样

在一个条带化的逻辑卷中,stripe 的大小不可以超过 PE 的大小
要扩展一个 striped 逻辑卷不像扩展一个 linear 逻辑卷那么简单,需要逻辑卷所在卷组有一定的自由空间以移动数据
例如你有一个跨越两个 PV 的 striped LV ,如果你想扩展它,必须“至少”增加2个 PV 才能实现条带化逻辑卷的扩展
当一个镜像 LV 的一部分失效时(例如一个 PV 失效),镜像 LV 会变成一个普通的线性 LV ,仍然可以被访问
LVM 支持镜像卷,当建立一个镜像逻辑卷时,LVM 确保写进一个底层 pv 的数据会被写进另外一个 pv
你可以用 LVM 建立一个带有多个镜像的逻辑卷
一个 LVM 镜像设备把源设备分成一个个区域,大小为 512 KB 。LVM 会维护一个日志,它用于跟踪那个(些)区域是同步。`
这个日志可以放在磁盘上,重启也不会丢失,或者可以被读入内存。

目前集群不支持镜像卷
LVM 的快照功能允许你为一个设备在某个特定的时间点建立一个“虚拟的”的镜像,而不用中断服务。
和镜像逻辑卷一样,LVM 的 snapshot 功能并不被集群所支持
在快照建立完成后,如果源设备有改变,则会把被改变的区域做一个拷贝,这样日后可以用于重建设备。
因为 snapshot 只拷贝在快照卷建立后被改变的数据区域,所以 snapshot 功能只需要很少的存储空间。
例如在一个很少更新的 LV 中,3-5%的空间就足够用于维护快照卷了。
注意,snapshot 只是一个虚拟的拷贝,不是实际的介质备份。snapshot 并不能取代普通的备份过程。
一旦快照卷满了,就被卸载。这是为了确保源文件系统有足够的空间。你应该定时观察快照卷的使用情况。 快照卷是可以调整大小的
当你建立一个快照文件系统时,源文件系统还是可以读写的。假如快照的一个 chunk 被改变,该 chunk 被打上标记,并不再从原来的卷中拷贝。
快照卷有如下用途 :
1、你可以在不用卸载原来的文件系统或者停止应用的情况下对一个 LV 进行备份
2、你可以对快照卷进行 fsck 再决定原来的文件系统是否需要修复
3、因为快照卷是可读写的,你可以告诉应用程序对快照卷的数据进行测试,而不用动原来的数据
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/26515977/viewspace-1207841/ ,如需转载,请注明出处,否则将追究法律责任。