Chinaunix首页 | 论坛 | 博客
  • 博客访问: 500155
  • 博文数量: 82
  • 博客积分: 3003
  • 博客等级: 中校
  • 技术积分: 1285
  • 用 户 组: 普通用户
  • 注册时间: 2007-09-11 15:27
文章分类

全部博文(82)

文章存档

2011年(1)

2010年(5)

2009年(63)

2008年(13)

我的朋友

分类: LINUX

2009-10-10 17:49:48

LVM小总结

LVM整体结构图

(图)

Physical Volumes

Physical Volumes是处于底层的存储单元,是一个块设备,也就是说可以是一个分区或者是整个磁盘。但使用之前块设备之前必须将其初始化为PV,初始化的时候将在此设备的开端建一个LVM label。

Pv层次图

(图)

LVM Label位于第二个512段,之后是元数据,再后是可用的空间。

PV Label

默认情况下label是建立在第二个512-byte段(sector),由于LVM tools扫描PV Label读取的是前4个段,因此也可以建立在任何开始的4个段。一个LVM lable记录了一个物理设备的标识(identification)和在系统启动的时候设备激活的顺序。在系统重启和整个集群中一个LVM label会一直存在。LVM label将此设备标识为一个LVM PV,包含了PV的UUID(UUID是一个随机的唯一的标识号)。另外它记录了块设备的大小(单位byte)和LVM元数据(metadata)在此设备的位置。PV Label都以LABELONE.为开端。

LVM元数据

LVM元数据很小,以ASCII的形式存储,它保存了LVM卷组的详细配置。元数据的拷贝存在于每一个PV的元数据区(metadata area),默认情况下有一份拷贝,当前的LVM允许在一个PV创建0、1、2个备份。一旦你指定了拷贝的数量就不能更改了。如果有两个拷贝的话,第一份会在设备的前端,另一份会在设备的后端,一个被破坏了之后可以通过另一个来恢复。默认的元数据大小很小,如果一个volume group有多个logical volume或是多个physical volume这个大小就不能满足了。可以在使用pvcreate的时候指定--metadatasize选项来指定大小。如果一个卷组包含很多PV,就没有必要保留很多份冗余的备份了,否则效率将很低。使用pvcreate的时候通过--metadatacopies 0可以创建一个没有元数据的备份。

元数据区是一个循环的buffer,如果新的元数据添加到旧的元数据之后,指针指向新的区域。具体的元数据包括那些信息,可以参看一下一下的例子。

元数据例子

以下是一个元数据的例子,卷组名称为VolGroup00。“/etc/lvm/archive/VolGroup00_00000.vg”

# Generated by LVM2 version 2.02.40-RHEL5 (2008-10-24): Mon Oct 5 05:08:14 2009


contents = "Text Format Volume Group"

version = 1


description = "Created *before* executing 'vgdisplay --ignorelockingfailure -v VolGroup00'"


creation_host = "localhost.localdomain" # Linux localhost.localdomain 2.6.18-128.el5 #1 SMP Wed Dec 17 11:42:39 EST 2008 i686

creation_time = 1254690494 # Mon Oct 5 05:08:14 2009


VolGroup00 {

id = "yt44ic-2pK7-JUxD-0ZgH-CUcT-kpLi-YhGGiH"

seqno = 3

status = ["RESIZEABLE", "READ", "WRITE"]

flags = []

extent_size = 8192 # 4 Megabytes

max_lv = 0

max_pv = 0


physical_volumes {


pv0 {

id = "dXclZ0-KO6m-b932-qKOW-vtGA-46sb-RUrBDD"

device = "/dev/sda2" # Hint only

status = ["ALLOCATABLE"]

flags = []

dev_size = 12370050 # 5.8985 Gigabytes

pe_start = 384

pe_count = 1509 # 5.89453 Gigabytes

}

}


logical_volumes {

LogVol00 {

id = "ZwbPFM-5RUZ-XapB-mZ1O-WUpT-aQsW-vFG6NL"

status = ["READ", "WRITE", "VISIBLE"]

flags = []

segment_count = 1

segment1 {

start_extent = 0

extent_count = 1248 # 4.875 Gigabytes

type = "striped"

stripe_count = 1 # linear

stripes = [

"pv0", 0

]

}

}


LogVol01 {

id = "KHb30X-tZxC-HBxh-2n9b-qLWW-70co-CSKjf1"

status = ["READ", "WRITE", "VISIBLE"]

flags = []

segment_count = 1

segment1 {

start_extent = 0

extent_count = 64 # 256 Megabytes

type = "striped"

stripe_count = 1 # linear

stripes = [

"pv0", 1248

]

}

}

}

}

VolumeGroups

Volume Group由PV构成,它创建了一个磁盘池用来分配LVM。VG中,可用的磁盘被以固定大小的单元分割,其中最小单元称为extent。在PV中被称为PV extent,在LV中被称为LV extent。PV extent与LV extent相等。VG将LV extent映射为PV extent。

LVM Logical Volume

Vg将被分为LV,有四种LVM Logical Volums,它们分别是线性LV(Linear Volumes)、条带LV(Striped Volumes)、镜像LV(Mirrored Vlumes)和快照LV(Snapshot Volumes)。分别见以下结构图解

1、Linear Volumes

(图)

2、Striped Volumes

(图)

3、Mirrored Volumes

(图)

4、Snapshot Volumes

快照主要是记录原来的数据第一次变化之前的值。可以实现在线备份而不需要 停 机。快照主要是基于块设备实现的,其对数据的记录是在块设备上的,而非文件系 统之上的。

通过使用Snapshot可以实现很多功能:

1、可以在不中断正在运行的系统的同时完成在LVM的备份。不中断系统意味 着可以实现系统持续性的进行数据更新。

2、可以通过对snapshot使用fsck命令检查文件系统的完整性,以便决定是不 是对原文件系统是否进行修复。

3、snapshot支持可读可写,因此在不破坏原始数据的前提下,在snapshot 上做测试。

4、利用snapshot的功能,可以创建xen虚拟机。比如创建的Dom U占用了 5G的空间,而通过snapshot建立Dom U的副本,而其需要的空间仅仅1G就 足够了,另外只需要两条命令的输入就可以完成一台虚拟机的创建。

(待续,图请参看LVM总结.pdf)

文件:LVM总结.pdf
大小:347KB
下载:下载
阅读(2366) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~