- 论坛徽章:
- 0
|
认识LVM
一、LVM出现的历史背景
传统上,分区是静态的固定不变的。这就要求系统的安装者在安装时,不仅必须考虑将来这个分区存储多大的数据,还要考虑已经在分区存储多少数据。当一个用户的数据量超出他的空间时,就必须要重新分区或者使用软链接。
分区的概念就是在物理磁盘上的一段连续的块。大多数unix系统都有能力分解物理磁盘组成一些存储单位(store unit)。来自不同物理磁盘的存储单位(store unit)能被组成一个“逻辑卷”,在它上面分配新的分区。另外当这些分区的空间需要改变时,能够增加和减少这些存储单位(store unit),这就是LVM的基础和LVM的来龙去脉。
从下面的例子我可以看出在LVM上分区比传统的分区更灵活,更方便,同时也能给我们带来更多使我们惊奇的功能。
如果说我们现在有一块1G的硬盘,已经在上面分配600M给/home,想像一下当 /home上面的数据超过600M时。你决定需要1G的空间,于是增加新的1G硬盘,分区格式后,将原来的数据复制过来。但是当你的分区是在LVM上建立时,你仅需要增加400M或者大一点的硬盘,然后扩展/home分区的存储单位。其它的一些工具可以帮助你扩展已经存在的文件系统,于是你所做的就是扩展到你想要的空间然后恢复生产就OK了。
作为一个特殊的处理,LVM甚至可以让你为一份静态的数据做一个“快照”备份。
二、组成LVM的基本要素
LVM中涉及到很多专业术语,不要被它们吓到,你应该理解他们以免使你的文件系统受到破坏。
下面是从LVM的底层向上去介绍这些术语:
物理介质 (The physical media)
在这里应该有保留的去理解physical,我们最初是假定它是一个硬盘或者是一个分区。例如:/dev/had,/dev/hda6,/dev/sda。你可以使这些任意连续的在块设备上的块组成PV。
物理卷(physical volume)
PV就是一个物理介质只不过它上面多了一些LVM的管理参数,一旦你增加PV,LVM就会使LVM去重新组织管理PE。
物理扩展(physical extents)
物理扩展就像一个大的块,常常是几个M的大小 ,能够被分配到一个VG中。
卷组(volume group)
一个VG是由一定数量的PE组成的(它们可能来自不同的PV或者硬盘)。而有人认为VG是由几个硬盘组成,但更准确的说它是由提供给它PE的硬盘组成。
逻辑卷(Logic volume)
LV就是我们上面所做工作的结果,最终它会生成LV,在它上面我们可以存储数据。作为一个分区,在逻辑分区上你可以创建文件系统。
文件系统(filesystem)
这个文件系统无论你想它是什么:标准的ext2,ext3,ReiserFS,NWFS,XFS,JFX,NTFS,等等。对于LINUX内核逻辑卷上的分区和普通分区是没有区别的。
下面的ASCII图表可以使它更形象,更容易被理解。
物理卷,包含物理扩展:
+-------[physical volume]--------+
| PE |PE |PE |PE |PE |PE |PE |PE |PE |PE |
+------------------------------+
如下图所示:一个VG,包含由6个PE组成的两个PV。
+----------[Volume Group]---------+
| +---[PV]----+ +----[PV]----+ |
| | PE | PE | PE | | PE | PE | PE | |
| +----------+ +------------+ |
+---------------------------------+
下图是上面两个的扩充:
+----------[Volume Group]---------+
| +---[PV]----+ +----[PV]----+ |
| | PE | PE | PE | | PE | PE | PE | |
| +---+---+--+ +---+---+---+ |
| | | +----/ | | |
| | | | | | |
| +-----------------------+
| Logical | | logical |
| volume | | volume |
| /home | | /var |
+-----------+ +---------+
+-------------------------------+
三、实战LVM
通过上面的介绍你应该对LVM有了一个初步的认识下面就让我们来动手做一些LVM的分区,在实践中加深一下对LVM的认识。
我用的环境是DC4.1, lvm-1.0.8。
#cat /etc/redflag-release
Red Flag DC Server release 4.1 (koumei)
#uname -r
2.4.21-9.30AX
#rpm -q lvm
Lvm-1.0.8-1AX
#pvcreate /dev/sda5
#pvcreate /dev/sdb
#pvcreate /dev/sdc
#pvcreate /dev/sdd
#vgcreate -s 8M VG00 /dev/sda5 /dev/sdb /dev/sdc /dev/sdd
#vgscan -v
#pvscan
#lvcreate -L 160M -n VG01_lvm VG01
#lvscan
#mkfs.ext3 /dev/VG01/VG01_lvm
经过上面的操作我们就可以挂载并使用/dev/VG01/VG01_lvm这个文件系统了。
三、LVM的维护
下面是向存在的VG01中增加PV和减少PV的操作:
#pvcreate /dev/sde
#pvmove /dev/sdd 将原来存在它面的数据移动到别的PV上面
#vgreduce VG01 /dev/sdd 从VG01中删除/dev/sdd
#vgextend VG01 /dev/sde
#vgscan
#pvscan
当每次执行:vgscan 时会产生/etc/lvmtab和/etc/lvmtab.d
VG第一次生成时会在/etc/lvmtab.d/VG.conf文件。
备份LVM信息的命令:vgcfgbackup VG
备份信息是LVM的VGDA。
VGDA是(卷组描述符区域)功能就好象是LVM的分区表,它存储在每一个物理卷的起始处。是由下面信息组成:
一个PV描述符
一个VG描述符
LV描述符
一些PE描述符
当系统启动LV时,VG被激活,并且VGDA被加载至内存。VGDA帮助识别LV的实际存储位置。当系统想要访问存储设备时,由VGDA建立起来的映射机制就用于访问实际的物理位置来执行I/O操作。
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/1110/showart_379505.html |
|