Chinaunix首页 | 论坛 | 博客
  • 博客访问: 487839
  • 博文数量: 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,包含了PVUUIDUUID是一个随机的唯一的标识号)。另外它记录了块设备的大小(单位byte)和LVM元数据(metadata)在此设备的位置。PV Label都以LABELONE.为开端

LVM元数据

LVM元数据很小,以ASCII的形式存储,它保存了LVM卷组的详细配置。元数据的拷贝存在于每一个PV的元数据区(metadata area),默认情况下有一份拷贝,当前的LVM允许在一个PV创建012个备份。一旦你指定了拷贝的数量就不能更改了。如果有两个拷贝的话,第一份会在设备的前端,另一份会在设备的后端,一个被破坏了之后可以通过另一个来恢复。默认的元数据大小很小,如果一个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 GroupPV构成,它创建了一个磁盘池用来分配LVMVG中,可用的磁盘被以固定大小的单元分割,其中最小单元称为extent。在PV中被称为PV extent,在LV中被称为LV extentPV extentLV extent相等。VGLV extent映射为PV extent

LVM Logical Volume

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

1Linear Volumes

(图)

2Striped Volumes

(图)

3Mirrored Volumes

(图)

4Snapshot Volumes

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

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

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

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

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

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

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

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