现在的位置: 首页 > 综合 > 正文

lvm使用

2017年12月22日 ⁄ 综合 ⁄ 共 32677字 ⁄ 字号 评论关闭

RHEL6中针对LVM的一些新特性:支持逻辑卷的镜像操作、Device Mapper对udev的完整支持、当一个磁盘发生故障时可以使用lvconert –repair进行修复、支持对镜像卷创建快照(rhel6.1的新特性)等。详情请参考官方文档。

一、Volume Group的高级管理:

1、Combining Volume Groups:

一块100G大小的磁盘sdb,分了俩个分区:sdb1和sdb2。sdb1创建了vg01,sdb2创建了vg02.

合并前vg01的信息如下:

image

image

现在将vg01和vg02合并在一起,组成新的vg01.如上图所示,vg01的大小是50G,合并后的结果如下图所示:

image

vg01从50G扩大到100G了。再次查看vg01的信息:

image

image

2、Splitting a Volume Group

image

image

image

3、Backing Up Volume Group Metadata:

当创建vg的时候,系统默认会自动备份Metadata。/etc/lvm/backup下面存放的是metadata的备份信息,而/etc/lvm/archive下面存放的是metadata的archive信息。

image

查看下vg02的metadata备份信息:

image

由以上信息可以看出,vg02是从vg01分离出来的。

vg02的metadata archive信息:

image

也可以手工备份vg的metadata,这里用的命令是vgcfgbackup,同样恢复命令是vgcfgrestore。

image

image

恢复metadata:

image

4、Moving a Volume Group to Another System:

这里就一台机器,演示下效果就OK.

image

二、LVM的高级管理:

1、创建线型逻辑卷:

image

上面创建u02时指定的大小是vg02大小的20%,而创建u01时将vg02的所有空余空间全部分配给了u01。

2、Creating Mirrored Volumes:

刚开始的时候,我为sdb分了三个分区:/dev/sdb1,/dev/sdb2,/dev/sdb3,然后分别创建了vg01,vg02以及vg03:

image

接着在创建mirrored volume时报如下错误:

image

在网上查了查,也没有给出明确的解决办法,查看了下官方文档,也没有明确的答案,最后就将vg02、vg03删除了,将/dev/sdb2、/dev/sdb3、/dev/sdb4加到vg01,再次创建mirrored volume,就不会再出现上述错误了。

image

image

image

image

image

注意查看u01的Attr前面多了一个m,这就说明u01是镜像卷。Copy%代表正在同步数据。同步完的结果如下图所示:

image

查看/dev/mapper下面:

image

这里的vg01-u01_mlog是专门存放mirror log的设备。并且存放mirror log的设备不能与数据处于同一个PV里,否则会报错的。

image

使用lvdisplay可以看到u01的镜像卷设备个数是2个。

NOTICE:镜像卷不能被重新分配大小了。

image

系统对于镜像失败后的操作策略可以查看/etc/lvm/lvm.conf文件,主要是以下俩个参数:

image

对于log的失败策略,系统默认是allocate,而对于image的失败策略是remove.更详细的信息请参官方文档。

3、将一个逻辑卷转换为镜像卷:

新创建了一个u02逻辑卷:

image

使用lvconvert将其转换为mirror volume:

image

image

image

image

对于如何修复Mirrored Volume,等遇到具体的故障时在讨论。

4、Creating Snapshot Volumes:

对mirror volume创建快照是rhel6.1的新特性之一。下面针对镜像卷 u01创建快照:

当前/dev/vg01/u01挂载于/u01目录下,总共有56个文件:

image

创建快照:

image

image

通过lvs查看:

image

通过lvdisplay查看快照信息:

image

image

接着挂载/dev/vg01/u01_snap访问它:

image

image

对snap可以进行完全访问。

5、Merging Snapshot Volumes:

image

这个错误是由于u01目前正在使用,所以卸载它之后,系统立即开始合并:

image

6、Changing the Parameters of a Logical Volume Group:

将/dev/vg01/u02更改为只读状态:

image

对于存在快照的卷不能更改其读写模式,否则会报错的,以下使我更改u01时报错:

image

关于更多LVM的信息,请参考官方文档。

Red Hat Enterprise Linux 6 Logical Volume Manager Administration

 

 

 

 

卷组命令
卷组相关命令的名称通常以vg开始后面紧跟相应的操作动作,如下所示
命令                  说明
vgcfgbackup    备份卷组中各物理卷的VGDA信息到/etc/lvmconf目录的文件中
vgcfgrestore   从文件中恢复卷组中物理卷的VGDA
vgchange       改变卷组属性
vgck           检测卷组中VGDA的一致性
vgcreate       建立新的卷组
vgdisplay      显示卷组属性
vgexport       输出卷组,使系统不能识别该卷组
vgextend       把物理卷加入卷组,实现对卷组的动态扩展
vgimport       输入卷组,使系统能够识别该卷组
vgmerge        合并两个已存在的卷组
vgmknodes      重新建立已有卷组的卷组目录和其中的设备文件
vgreduce       把卷组中未使用的物理卷移出卷组
vgremove       删除空的(不包含任何逻辑卷)卷组
vgrename       重命名非活动的卷组
vgscan         查找系统中现有卷组
vgsplit        把一个卷组拆分为两个
卷组的一般维护命令
vgscan
vgscan命令检测系统中的所有磁盘,查找卷组的定义,并建立文件/etc/lvmtab和目录/etc /lvmtab.d中的文件
#vgscan
vgck
vgck [卷组名]
vgck命令用于检查卷组中卷组描述区域 (VGDA)信息的一致性。
#vgck
vgdisplay
vgdisplay [卷组名]
vgdisplay命令用于显示卷组的属性信息,包括逻辑卷、物理卷及其大小等信息。
#vgdisplay
vgrename
vgrename 原卷组名 新卷组名

vgrename 原卷组名路径 新卷组名路径
vgrename命令用于对已存在的卷组进行改名
#vgrename myVG myVG1
...
#vgrename /dev/myVG1 /dev/myVG
...
vgchange
vgchange -a y|n [卷组名]
vgchange -l 最大逻辑卷数
vgchange -x y|n [卷组名]
vgchange 命令用于改变卷组的相应属性,如卷组中可容纳的最大逻辑卷数、卷组是否有效、卷组是否可分配等。
#vgchange -a y
vgchange -- volume group "myVG" successfully activated
#vgchange -x n
vgchange -- doing automatic backup of volume group "myVG"
vgchange -- volume group "myVG" successfully changed
vgmknodes
vgmknodes [卷组名|卷组路径]
vgmknodes 命令用于建立(重新建立)已有卷组的卷组目录和其中的设备文件。
#vgmknodes
vgmknodes -- successfully made all nodes of volume group "myVG"
卷组配置的备份与恢复命令
vgcfgbackup
vgcfgbackup [卷组名]
vgcfgbackup命令用于把卷组中的VGDA信息备份到/etc/lvmconf目录中的文件
#vgcfgbackup
vgcfgbackup -- volume groups found:myVG
vgcfgbackup -- successfully VGDA backup of volume group "myVG" to "/etc/lvmconf/myVG.conf"
vgcfgrestore
vgcfgrestore -n 卷组名 物理卷全路径名
vgcfgrestore命令用于从卷组备份文件中恢复指定物理卷的VGDA信息。使用vgcfgrestore 命令后要执行vgmknodes命令,重新建立卷组和逻辑卷的设备文件。
#vgcfgrestore -n myVG /dev/hdb1
vgcfgrestore -- INFO: using backup file "/etc/lvmconf/myVG.conf"
vgcfgrestore -- VGDA for "myVG" successfully restored to physical volume "/dev/hdb1"
卷组的建立与删除命令
vgcreate
vgcreate 卷组名 物理卷全路径名 [物理卷全路径名]
vgcreate命令使用指定的物理卷创建卷组。
#vgcreate myVG /dev/hdb2
vgremove
vgremove 卷组名
vgremove 命令用于删除指定的卷组,被删除的卷组中不能包含逻辑卷,并且该卷组不能是活动的。
#vgremove myVG
卷组的扩充与缩小命令
vgextend
vgextend 卷组名 物理卷全路径名 [物理卷全路径名]
vgextend命令用于将一个或多个已初始化的物理卷添加到指定的卷组,扩充其容量。
#vgextend myVG /dev/hdb2
vgreduce
vgreduce 卷组名 物理卷全路径名 [物理卷全路径名]
vgreduce 命令用于从卷组中去除一个或多个未使用的物理卷,卷组的容量也会随之减小。
#vgreduce myVG /dev/hdb2
卷组的合并与拆分命令
vgmerge
vgmerge 目的卷组名 源卷组名
vgmerge命令用于合并两个已存在的卷组,要求两个卷组的物理区域(PE)大小相等,且源卷组是非活动的。
#vgmerge myVG myVG1
vgsplit
vgsplit 现有卷组 新卷组 物理卷组全路径名 [物理卷组全路径名]
vgsplit命令用于把一个或多个物理卷从其所在的卷组分离到新创建的卷组,被拆分的卷组应是“活动”的。被分离出来的物理卷中不能包含任何的逻辑卷,可以预先使用pvmove命令把逻辑卷转移到其他的物理卷中。
#vgsplit myVG myVG1 /dev/hdb2
卷组的输入输出命令
vgexport
vgexport 卷组名
vgexport 命令用于输出一个卷组,使系统不可识别该卷组,该卷组应是非活动的。此后就可以把该卷组中的所有物理卷转移到其他系统中,并用vgimport命令进行输入。一个已经输出的卷组不能够被vgscan命令识别到,但是pvscan命令可以显示哪些物理卷属于已输出的卷组。
#vgchange -a n myVG1
vgchange -- volume group "myVG1" successfully deactivated
#vgexport myVG1
vgexport -- volume group "myVG1" successfully exported
vgimport
vgimport 卷组名 卷组中的物理卷 [卷组中的物理卷]
vgimport 命令用于输入一个已输出的卷组,使当前系统可以识别到该卷组。
#vgimport myVG1 /dev/hdb2
逻辑卷命令
逻辑卷相关命令的名称通常以lv开始后面紧跟相应的操作动作,如下所示:
命令                说明
e2fsadm         对逻辑卷中的ext2文件系统扩充或缩小(需要使用resize2fs命令)
lvchange        改变逻辑卷属性
lvcreat         创建新的逻辑卷
lvdisplay       显示逻辑卷属性
lvextend        扩展逻辑卷容量
lvreduce        缩小逻辑卷容量
lvremove        删除非活动的逻辑卷
lvrename        对非活动的逻辑卷改名
lvscan          查找现有逻辑卷
逻辑卷的一般维护命令
lvscan
lvscan命令在系统可识别的卷组中查找已定义的逻辑卷
#lvscan
lvscan -- ACTIVE     "/dev/myVG/myLV" [12MB]
lvscan -- 1 logical volumes with 12 MB total in 1 volume group
lvscan -- 1 active logical volumes
lvdisplay
lvdisplay 逻辑卷全路径名 [逻辑卷全路径名]
lvdisplay命令用于显示指定逻辑卷的属性,如大小、读写状态等信息。
#lvdisplay /dev/myVG/myLV
......
lvrename
lvrename 旧逻辑卷全路径名 新逻辑卷全路径名
lvrename 卷组名 旧逻辑卷名 新逻辑卷名
lvrename命令用于对已存在的逻辑卷改名。该命令有两种命令格式,可以直接指定新旧逻辑卷的全路径名,也可以先指定该逻辑卷所在的卷组名后再指定新旧逻辑卷名。
#lvrename /dev/myVG/myLV /dev/myVG/myLV1
......
#lvrename myVG myLV1 myLV
......
lvchange
lvchange [-a/--available y/n] [-C/--contiguous y/n]
         [-p/--permission r/rw] [-r/--readahead ReadAheadSectors]
         逻辑卷全路径名 [逻辑卷全路径名]
lvchange 命令用于改变指定逻辑卷的属性,如可用性、连续性、读写许可、预读等属性。
#lvchange -a n /dev/myVG/myLV
e2fsadm
e2fsadm -L +|- 逻辑卷增减量 逻辑卷全路径名
e2fsadm命令用于改变(增加或减小)ext2分区的大小,该ext2分区可以是已挂载或未挂载的。
#e2fsadm -L +4M /dev/myVG/myLV
逻辑卷的创建与删除命令
lvcreate
lvcreate -L 逻辑卷大小 -n 逻辑卷名 卷组名
lvcreate命令用于在指定的卷组(VG)中建立逻辑卷(LV),可指定的参数有要建立的逻辑卷名称、大小等。
#lvcreate -L 10M -n myLV1 myVG
lvremove
lvremove 逻辑卷全路径名
lvremove命令用于从卷组中移除非活动的逻辑卷
#lvremove /dev/myVG/myLV1
逻辑卷的扩充与缩小命令
lvextend
lvextend -L|--size +逻辑卷大小增量 逻辑卷全路径名
lvextend命令用于扩展逻辑卷的大小,该命令也可以很好的扩展快照逻辑卷(snapshot logical volumes)
#lvextend -L +4M /dev/myVG/myLV
lvreduce
lvreduce -L| -size -逻辑卷减小量 逻辑卷全路径名
lvreduce 命令用于减小逻辑卷的大小。减小逻辑卷的时候应小心,因为逻辑卷中被减小部分的数据将丢失
#lvreduce -L -4M /dev/myVG/myLV
逻辑卷管理命令
逻辑卷管理命令的名称通常以lvm开始后面紧跟相应的操作动作,如下所示:
命令            说明
lvmchange     在紧急情况下用于复位逻辑卷管理器
lvmdiskscan   检测硬盘和分区中的逻辑卷管理信息
lvmsadc       收集逻辑卷的读写统计数据
lvmsar        报告lvmsadc命令收集的逻辑卷的读写统计数据
lvmdiskscan
lvmdiskscan检测所有的SCSI、IDE等存储设备,并输出摘要信息,包括名称、大小、类型等内容
#lvmdiskscan
lvmchange
lvmchange -R|--reset
lvmchange命令用于复位逻辑卷管理器(logical volume manager)。该命令将设置所有卷组和逻辑卷处于非活动状态,使用时一定要谨慎。
#lvmchange -R
lvmsadc
lvmsadc [日志文件全路径名]
lvmsadc命令收集逻辑卷管理器的读写统计信息,保存到指定的日志文件中。如未指定日志文件,则输出到标准输出设备。
#lvmsadc lvmlog
lvmsar
lvmsar 日志文件全路径名
lvmsar命令从lvmsadc命令生成的日志文件中读取并报告逻辑卷管理器的读写统计信息。
#lvmsar lvmlog
 
Linux中的分区与文件系统
ext2文件系统是Linux 中自带的文件系统类型,ext3是ext2文件系统的后继版本。
swap文件系统在Linux中作为交换分区使用。
在Linux中把 DOS下的所有FAT文件系统统统称为vfat。
NFS即为网络文件系统,用于在Unix系统间通过网络进行文件共享。
ISO9660是光盘所使用的标准文件系统。
在硬盘中建立分区
使用fdisk
在分区中建立文件系统,即所谓格式化分区,只有在分区中建立了相应的文件系统,分区才能够用于保存文件。
建立文件系统的命令:
命令名1        命令名2      命令名3         说明
mkfs.ext3      mkfs.ext2    mke2fs       建立ext3文件系统
mkfs.vfat      mkfs.msdos   mkdosfs      建立vfat文件系统
mkfs.reiserfs               mkreiserfs   建立reiser文件系统
mkfs.jfs                                 建立jfs文件系统
                            mkswap       建立swap文件系统
                           
在硬盘分区中建立文件系统时需要注意,分区类型与分区中建立文件系统的类型要一致,否则在挂载分区时会有问题。
把分区挂载到系统中
挂载点目录要求为空
使用 mount命令,如果需要系统每次启动时都自动挂载该文件系统则需要在文件/etc/fstab中添加相应的设置行。
磁盘分区命令
fdisk 用法如前所示
parted
parted [硬盘设备文件全路径名]
parted命令用于对指定硬盘中的分区进行维护。
// 如不在parted命令中指定硬盘设备文件,则使用系统当前的硬盘
#parted
......
(parted) help //输入help命令显示帮助信息
......
(parted) print //输入print命令显示硬盘分区
......
(parted) quit  //输入quit命令退出parted环境
ext3文件系统维护
mke2fs 分区设备文件名
mke2fs命令用于建立ext2/ext3文件系统
#mke2fs /dev/hdb1
e2label
e2label 分区设备文件 [新的卷标名称]
e2label命令用于显示或设置指定ext2或ext3分区的卷标
//设置/dev/hdb1的卷标为/var /ftp
#e2label /dev/hdb1 /var/ftp
//显示/dev/hdb1的卷标
#e2label /dev/hdb1
/var/ftp
findfs
findfs LABEL=文件系统卷标
findfs命令用于在系统中查找指定卷标的文件系统
#findfs LABEL=/var/ftp
/dev/hdb1
e2fsck
e2fsck 分区设备文件名
e2fsck命令用于检测指定分区中的ext2/ext3文件系统并进行错误修复
#e2fsck /dev/hdb1
e2fsck 1.32(09-Nov-2002)
/var/ftp:clean,11/50200 files,6351/200781 blocks
#e2fsck /dev/sda1
e2fsck 1.32(09-Nov-2002)
/dev/sda1 is mounted
WARNING!!! Running e2fsck on a mounted filesystem may cause SEVERE filesystem damage.
//e2fsck命令不能用于检测系统中已装载的文件系统,否则会造成文件系统的损害
Do you really want to continue (y|n)? no
check aborted.
mount
mount命令不指定任何参数,使用时显示当前系统中已挂载的文件系统的信息。
#mount
//mount命令显示的信息来自文件/etc/mtab
#more /etc/mtab
装载文件系统
mount 设备文件名 挂载点目录
mount用于把指定的设备(如硬盘分区)挂载到指定目录
#mount /dev/hdb1 /var/ftp/
设置系统启动时自动挂载文件系统
编辑/etc/fstab文件

 

Linux指令范例速查手册  

第11章 磁盘管理

http://book.51cto.com/art/201012/240835.htm

 

 

Linux逻辑卷管理LVM2详解

一、 前言
LVM是逻辑卷管理(Logical Volume Manager)的简称,它是建立在物理存储设备之上的一个抽象层,允许你生成逻辑存储卷,与直接使用物理存储在管理上相比,提供了更好灵活性。
LVM将存储虚拟化,使用逻辑卷,你不会受限于物理磁盘的大小,另外,与硬件相关的存储设置被其隐藏,你可以不用停止应用或卸载文件系统来调整卷大小或数据迁移.这样可以减少操作成本.
LVM与直接使用物理存储相比,有以下优点:
1. 灵活的容量.
当使用逻辑卷时,文件系统可以扩展到多个磁盘上,你可以聚合多个磁盘或磁盘分区成单一的逻辑卷.

2.可伸缩的存储池.
你可以使用简单的命令来扩大或缩小逻辑卷大小,不用重新格式化或分区磁盘设备.

3.在线的数据再分配.
你可以在线移动数据,数据可以在磁盘在线的情况下重新分配.比如,你可以在线更换可热插拔的磁盘.

4. 方便的设备命名
逻辑卷可以按你觉得方便的方式来起任何名称.

5.磁盘条块化.
你可以生成一个逻辑盘,它的数据可以被条块化存储在2个或更多的磁盘上.这样可以明显提升数据吞吐量.

6.镜像卷
逻辑卷提供方便的方法来镜像你的数据.

7.卷快照
使用逻辑卷,你可以获得设备快照用来一致性备份或者测试数据更新效果而不影响真实数据.

二、 LVM基本术语
前面谈到,LVM是在物理存储上添加的一个逻辑层,来为文件系统屏蔽下面的硬件存储设备,提供了一个抽象的盘卷,在盘卷上建立文件系统。首先我们讨论以下几个LVM术语:

* 物理存储介质(The Physical Media)
这里指系统的存储设备,如:/dev/hda1、/dev/sda等等,是存储系统最低层的存储单元。

* 物理卷(PV, Physical Volume)
物理卷就是指磁盘,磁盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。当前LVM允许你在每个物理卷上保存这个物理卷的0至2份元数据拷贝.默认为1,保存在设备的开始处.为2时,在设备结束处保存第二份备份.

* 卷组(VG, Volume Group)
LVM卷组类似于非LVM系统中的物理硬盘,其由物理卷组成。可以在卷组上创建一个或多个“LVM分区”(逻辑卷),LVM卷组由一个或多个物理卷组成。

* 逻辑卷(LV, Logical Volume)
LVM的逻辑卷类似于非LVM系统中的硬盘分区,在逻辑卷之上可以建立文件系统(比如/home或者/usr等)。

*线性逻辑卷 (Linear Volumes)
一个线性逻辑卷聚合多个物理卷成为一个逻辑卷.比如,如果你有两个60GB硬盘,你可以生成120GB的逻辑卷.

*条块化的逻辑卷(Striped Logical Volumes)
当你写数据到此逻辑卷中时,文件系统可以将数据放置到多个物理卷中.对于大量连接读写操作,它能改善数据I/O效率.

*镜像的逻辑卷(Mirrored Logical Volumes)
镜像在不同的设备上保存一致的数据.数据同时被写入原设备及镜像设备.它提供设备之间的容错。

*快照卷(Snapshot Volumes)
快照卷提供在特定瞬间的一个设备虚拟映像,当快照开始时,它复制一份对当前数据区域的改变,由于它优先执行这些改变,所以它可以重构当前设备的状态。

* PE(physical extent)
每一个物理卷被划分为称为PE(Physical Extents)的基本单元,具有唯一编号的PE是可以被LVM寻址的最小单元。PE的大小是可配置的,默认为4MB。

* LE(logical extent)
逻辑卷也被划分为被称为LE(Logical Extents) 的可被寻址的基本单位。在同一个卷组中,LE的大小和PE是相同的,并且一一对应。

和非LVM系统将包含分区信息的元数据保存在位于分区的起始位置的分区表中一样,逻辑卷以及卷组相关的元数据也是保存在位于物理卷起始处的VGDA(卷组描述符区域)中。VGDA包括以下内容: PV描述符、VG描述符、LV描述符、和一些PE描述符 。系统启动LVM时激活VG,并将VGDA加载至内存,来识别LV的实际物理存储位置。当系统进行I/O操作时,就会根据VGDA建立的映射机制来访问实际的物理位置。

三、 安装LVM
首先确定系统中是否安装了lvm工具:
[root@test2 root]# rpm ?qa|grep lvm
lvm-x-x-x
如果命令结果输入类似于上例,那么说明系统已经安装了LVM管理工具;如果命令没有输出则说明没有安装LVM管理工具,则需要从网络下载或者从光盘装LVM rpm工具包。

安装了LVM的RPM软件包以后,要使用LVM还需要配置内核支持LVM。RedHat默认内核是支持LVM的,如果需要重新编译内核,则需要在配置内核时,进入Multi-device Support (RAID and LVM)子菜单,选中以选项:
 

  • Multiple devices driver support (RAID and LVM)
       Device mapper support
         Snapshot target (EXPERIMENTAL)
         Mirror target (EXPERIMENTAL)                                                           
    然后重新编译内核,即可将LVM的支持添加到新内核中。

    为了使用LVM,要确保在系统启动时激活LVM,在RedHa的版本中,系统启动脚本已经具有对激活LVM的支持,在/etc/rc.d/rc.sysinit中有以下内容:
     
    if [ -x /sbin/lvm.static ]; then
              action $"Setting up Logical Volume Management:" /sbin/lvm.static vgchange -a y --ignorelockingfailure
    fi
    vgchange -a y命令激活系统所有卷组。

    四、 创建和管理LVM
    要创建一个LVM系统,一般需要经过以下步骤:
    1、 创建分区
    使用分区工具(如:fdisk等)创建LVM分区,方法和创建其他一般分区的方式是一样的,区别仅仅是LVM的分区类型为8e。
    # fdisk -l /dev/sdb /dev/sdc
    Disk /dev/sdb: 18.2 GB, 1820073Array840 bytes
    255 heads, 63 sectors/track, 2212 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    Disk /dev/sdb doesn’t contain a valid partition table
    Disk /dev/sdc: 18.2 GB, 1820073Array840 bytes
    255 heads, 63 sectors/track, 2212 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    Device Boot      Start         End      Blocks   Id  System
    /dev/sdc1               1         200     1606468+  8e  Linux LVM
    如果要将使用整块盘,可以通过下面的命令来覆盖磁盘上的原有分区信息:
    #dd if=/dev/zero of=/dev/sdc bs=512 count=1
      
    2、 创建物理卷
    创建物理卷的命令为pvcreate,利用该命令将希望添加到卷组的所有分区或者磁盘创建为物理卷。将整个磁盘创建为物理卷的命令为:
    # pvcreate /dev/sdb
    Physical volume "/dev/sdb" successfully created
      
    将单个分区创建为物理卷的命令为:
    # pvcreate /dev/sdc1
    Physical volume "/dev/sdc1" successfully created
    也可以同时生成多个卷:
    #pvcreate /dev/sdb /dev/sdc1

    3、扫描块设备
    通过lvmdiskscan可以看到那些设备成为了物理卷.
    #lvmdiskscan
      /dev/ramdisk             [       16.00 MB]
      /dev/sda                 [        4.00 GB]
      /dev/root                [        2.88 GB]
      /dev/ram                 [       16.00 MB]
      /dev/sda1                [      101.Array4 MB]
      /dev/VolGroup00/LogVol01 [        1.00 GB]
      /dev/ram2                [       16.00 MB]
      /dev/sda2                [        3.Array0 GB] LVM physical volume
      /dev/lvm_test/test       [      508.00 MB]
      /dev/ram3                [       16.00 MB]
      /dev/ram4                [       16.00 MB]
      /dev/ram5                [       16.00 MB]
      /dev/ram6                [       16.00 MB]
      /dev/ram7                [       16.00 MB]
      /dev/ram8                [       16.00 MB]
      /dev/ramArray                [       16.00 MB]
      /dev/ram10               [       16.00 MB]
      /dev/ram11               [       16.00 MB]
      /dev/ram12               [       16.00 MB]
      /dev/ram13               [       16.00 MB]
      /dev/ram14               [       16.00 MB]
      /dev/ram15               [       16.00 MB]
      /dev/sdb                 [      512.00 MB] LVM physical volume
      /dev/sdc                 [      512.00 MB] LVM physical volume
      5 disks
      16 partitions
      2 LVM physical volume whole disks
      1 LVM physical volume

    4、显示物理卷
    可以使用pvs,pvscan,pvdisplay来显示当前系统中的物理卷.
    #pvs
      PV         VG         Fmt  Attr PSize   PFree  
      /dev/sda2  VolGroup00 lvm2 a-     3.88G      0
      /dev/sdb   lvm_test   lvm2 a-   508.00M      0
      /dev/sdc              lvm2 --   512.00M 512.00M
    #pvscan
      PV /dev/sdb    VG lvm_test     lvm2 [508.00 MB / 0    free]
      PV /dev/sda2   VG VolGroup00   lvm2 [3.88 GB / 0    free]
      PV /dev/sdc                    lvm2 [512.00 MB]
      Total: 3 [4.87 GB] / in use: 2 [4.37 GB] / in no VG: 1 [512.00 MB]
    #pvdisplay
      --- Physical volume ---
      PV Name               /dev/sdb
      VG Name               lvm_test
      PV Size               512.00 MB / not usable 4.00 MB
      Allocatable           yes (but full)
      PE Size (KByte)       40Array6
      Total PE              127
      Free PE               0
      Allocated PE          127
      PV UUID               Pkp5Cq-SD1w-ANw2-cDDe-BGtw-nmFS-jTxXFD
       
      --- NEW Physical volume ---
      PV Name               /dev/sdc
      VG Name               
      PV Size               512.00 MB
      Allocatable           NO
      PE Size (KByte)       0
      Total PE              0
      Free PE               0
      Allocated PE          0
      PV UUID               BNCVEE-YWlK-0mrV-LOcf-0tCY-WWNw-DeySk0

    5、移除物理卷
    #pvremove /dev/sdc
    Labels on physical volume "/dev/sdc" successfully wiped

    6、 创建卷组
    创建卷组的命令为vgcreate,将使用pvcreate建立的物理卷创建为一个完整的卷组:
    # vgcreate lvm_test /dev/sdc1 /dev/sdb
    Volume group "lvm_test" successfully created
    vgcreate命令第一个参数是指定该卷组的逻辑名:lvm_test。后面参数是指定希望添加到该卷组的所有分区和磁盘。vgcreate在创建卷组 lvm_test 以外,还设置使用大小为4 MB的PE(默认为4MB),这表示卷组上创建的所有逻辑卷都以 4 MB 为增量单位来进行扩充或缩减。PE最小为1KB  ,并且必须总是1KB的 2^n 的倍数(使用-s指定,具体请参考man vgcreate)。

    7、 激活卷组
    卷组在创建时默认激活,也可以使用vgchange来激活卷组:
    # vgchange -a y lvm_test

    8、 添加新的物理卷到卷组中
    当系统安装了新的磁盘或新建分区并创建了新的物理卷,而要将其添加到已有卷组时,就需要使用vgextend命令:
    #fdisk -l /dev/sdc
    Disk /dev/sdc: 18.2 GB, 1820073Array840 bytes
    255 heads, 63 sectors/track, 2212 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    Device Boot      Start         End      Blocks   Id  System
    /dev/sdc1               1         200     1606468+  8e  Linux LVM
    /dev/sdc2             201         400     1606500   8e  Linux LVM
             
    #pvcreate /dev/sdc2
    Physical volume "/dev/sdc2" successfully created
            
    # vgextend lvm_test /dev/sdc2
    Volume group "lvm_test" successfully extended
    这里/dev/sdc2是新的物理卷。

    Array、显示卷组
    显示卷组可以使用vgs和vgdisplay.
    # vgs
      VG         #PV #LV #SN Attr   VSize   VFree
      VolGroup00   1   2   0 wz--n-   3.88G    0
      lvm_test     1   1   0 wz--n- 508.00M    0

    # vgdisplay
      --- Volume group ---
      VG Name               lvm_test
      System ID            
      Format                lvm2
      Metadata Areas        1
      Metadata Sequence No  10
      VG Access             read/write
      VG Status             resizable
      MAX LV                0
      Cur LV                1
      Open LV               1
      Max PV                0
      Cur PV                1
      Act PV                1
      VG Size               508.00 MB
      PE Size               4.00 MB
      Total PE              127
      Alloc PE / Size       127 / 508.00 MB
      Free  PE / Size       0 / 0   
      VG UUID               uJx24t-WWdY-vffu-Array7Of-mgFB-FEov-eRwzAf

    10、扫描磁盘生成缓存文件
    #vgscan
      Reading all physical volumes.  This may take a while...
      Found volume group "lvm_test" using metadata type lvm2
      Found volume group "VolGroup00" using metadata type lvm2
       
    11、 从卷组中删除一个物理卷
    要从一个卷组中删除一个物理卷,首先要确认要删除的物理卷没有被任何逻辑卷正在使用,就要使用pvdisplay命令察看一个该物理卷信息:
    #pvdisplay /dev/sdc2
    --- Physical volume ---
    PV Name               /dev/sdc2
    VG Name               lvm_test
    PV Size               1.53 GB / not usable 868.00 KB
    Allocatable           yes
    PE Size (KByte)       40Array6
    Total PE              3Array2
    Free PE               3Array2
    Allocated PE          0 (表示未被使用)
    PV UUID               jAiils-1vRz-TdArrayk-1AiD-kIJs-1Array1z-YMz0ArrayH
      
    如果某个物理卷正在被逻辑卷所使用,就需要将该物理卷的数据备份到其他地方,然后再删除。删除物理卷的命令为vgreduce:
    # vgreduce lvm_test /dev/sdc2
    Removed "/dev/sdc2" from volume group "lvm_test"

    12、 创建逻辑卷
    创建逻辑卷的命令为lvcreate:
    # lvcreate -L 1500 -n test lvm_test
    Logical volume "test" created
    该命令就在卷组lvm_test上创建名字为test,大小为1500M的逻辑卷,并且设备入口为/dev/lvm_test/test (lvm_test为卷组名,test为逻辑卷名)。如果希望创建一个使用全部卷组的逻辑卷,则需要首先察看该卷组的PE数,然后在创建逻辑卷时指定:
    # vgdisplay lvm_test| grep "Total PE"
    Total PE 4731
    # lvcreate -l 4731 lvm_test -n test
    Logical volume "test" created

    13、创建条块化的逻辑卷
    # lvcreate -L 500M -i2  -n test lvm_test
      Using default stripesize 64.00 KB
      Rounding size (125 extents) up to stripe boundary size (126 extents)
      Logical volume "test" created
    -i2  指此逻辑卷在两个物理卷中条块化存放数据,默认一块大小为64KB.

    14、创建镜像的逻辑卷。
    #lvcreate -L 52M  -m1  -n test lvm_test /dev/sdb1    /dev/sdc1       /dev/sdb2

      Logical volume "test" created
    -m1表示只生成一个单一镜像,镜像分别放在/dev/sdb1和/dev/sdc1上,镜像日志放在/dev/sdb2上.

    15、创建快照卷。
    #lvcreate --size 10 --snapshot --name snaptest /dev/lvm_test/test
    16、 创建文件系统
    如使用ext3文件系统:
    #mkfs.ext3 /dev/lvm_test/test
    mke2fs 1.35 (28-Feb-2004)
    max_blocks 42Array4Array672Array5, rsv_groups = 0, rsv_gdb = 1024
    Filesystem label=
    OS type: Linux
    Block size=40Array6 (log=2)
    Fragment size=40Array6 (log=2)
    2424832 inodes, 4844544 blocks
    242227 blocks (5.00%) reserved for the super user
    First data block=0
    Maximum filesystem blocks=8388608
    148 block groups
    32768 blocks per group, 32768 fragments per group
    16384 inodes per group
    Superblock backups stored on blocks:
    32768, Array8304, 163840, 22Array376, 2Array4Array12, 81Array200, 884736, 1605632, 2654208,

    40Array6000
    Writing inode tables: done                           
    inode.i_blocks = Array0120, i_size = 4243456
    Creating journal (81Array2 blocks): done
    Writing superblocks and filesystem accounting information: done
    This filesystem will be automatically checked every 25 mounts or
    180 days, whichever comes first.  Use tune2fs -c or -i to override.
    创建了文件系统以后,就可以加载并使用它:
    # mkdir /mnt/test
    # mount /dev/lvm_test/test /mnt/test
    如果希望系统启动时自动加载文件系统,则还需要在/etc/fstab中添加内容:
    /dev/lvm_test/test /mnt/test ext3 defaults 1 2

    17、 删除一个逻辑卷
    删除逻辑卷以前首先需要将其卸载,然后删除:
    # umount /dev/lvm_test/test
    # lvremove /dev/lvm_test/test
    Do you really want to remove active logical volume "test"? [y/n]: y
    Logical volume "test" successfully removed
     
    18、 扩展逻辑卷大小
    LVM提供了方便调整逻辑卷大小的能力,扩展逻辑卷大小的命令是lvextend:
    # lvextend -L12G /dev/lvm_test/test
    Extending logical volume test to 12.00 GB
    Logical volume test successfully resized
      上面的命令就实现将逻辑卷test的大小扩大为12G。
    # lvextend -L+1G /dev/lvm_test/test
    Extending logical volume test to 13.00 GB
    Logical volume test successfully resized
    上面的命令就实现将逻辑卷test的大小增加1G。
    增加了逻辑卷的容量以后,就需要修改文件系统大小以实现利用扩充的空间。
    对于希望调整被加载的文件系统大小,使用ext2online(ext2resize) 或 resize2fs.
    #df -h
    # ext2online /dev/lvm_test/test
    ext2online /dev/lvm_test/test
    ext2online v1.1.18 - 2001/03/18 for EXT2FS 0.5b

    #df -h
    Filesystem            容量  已用 可用 已用% 挂载点
    /dev/mapper/VolGroup00-LogVol01
             16G   11G  3.6G  76% /
    /dev/sda1             4Array4M   18M  451M   4% /boot
    none                      506M     0  506M   0% /dev/shm
    /dev/mapper/lvm_test-test
             13G   63M   13G   1% /mnt/test
      
    一般建议最好将文件系统卸载,调整大小,然后再加载:
    # umount /dev/lvm_test/test
    #resize2fs /dev/lvm_test/test
    # mount  /dev/lvm_test/test /mnt/test

    1Array、 减少逻辑卷大小
    使用lvreduce即可实现对逻辑卷的容量,同样需要首先将文件系统卸载:
    # umount /mnt/test
    #e2fsck -f /dev/lvm_test/test
    # resize2fs /dev/lvm_test/test  11G
    # lvreduce -L -1.ArrayArray2G /dev/lvm_test/test (少2个PE的大小)
    # resize2fs /dev/lvm_test/test  (通过此命令确认是否文件系统大小与收缩后的逻辑卷大小匹配)
    # mount /dev/lvm_test/test /mnt/test

    20、显示逻辑卷
    通过lvscan,lvs及lvdisplay可以察看当前系统中存在的逻辑卷。
    # lvdisplay
      --- Logical volume ---
      LV Name                /dev/VolGroup00/LogVol00
      VG Name                VolGroup00
      LV UUID                sPmLMD-6xq4-wStB-uSAP-jlQc-YKTm-3bt8Pc
      LV Write Access        read/write
      LV Status              available
      # open                 1
      LV Size                2.88 GB
      Current LE             Array2
      Segments               1
      Allocation             inherit
      Read ahead sectors     0
      Block device           253:0
      
    #lvscan
    lvscan
      ACTIVE            ’/dev/VolGroup00/LogVol00’ [2.88 GB] inherit
      ACTIVE            ’/dev/VolGroup00/LogVol01’ [1.00 GB] inherit

    #lvs -o +devices
      LV       VG         Attr   LSize Origin Snap%  Move Log Copy%  Devices      
      LogVol00 VolGroup00 -wi-ao 2.88G                               /dev/sda2(0)
      LogVol01 VolGroup00 -wi-ao 1.00G                               /dev/sda2(Array2)  

    21、使用过滤控制LVM的设备扫描
    通过编辑/etc/lvm/lvm.conf 中的filter段,来定义过滤那些设备要扫描。
    filter =[ "a|/dev/sd.*|", "a|/dev/hd.*|", "r|.*|" ]
    上面对scsi及ide设备扫描,对其它设备均不扫描。

    22、在线数据迁移
    通过pvmove可以将一个PV上的数据迁移到新的PV上,也可以将PV上的某个LV迁移到另一个PV上。
    #lvs -o +devices
      LV       VG         Attr   LSize  Origin Snap%  Move Log Copy%  Devices      
      LogVol00 VolGroup00 -wi-ao  2.88G                               /dev/sda2(0)
      LogVol01 VolGroup00 -wi-ao  1.00G                               /dev/sda2(Array2)
      test     lvm_test   -wi-ao 52.00M                               /dev/sdb1(0)

    #pvmove -n test /dev/sdb1 /dev/sdc1

    #lvs -o +devices
      LV       VG         Attr   LSize  Origin Snap%  Move Log Copy%  Devices      
      LogVol00 VolGroup00 -wi-ao  2.88G                               /dev/sda2(0)
      LogVol01 VolGroup00 -wi-ao  1.00G                               /dev/sda2(Array2)
      test     lvm_test   -wi-ao 52.00M                               /dev/sdc1(0)

    23、删除卷组
    按照顺序卸载文件系统,删除逻辑卷,然后删除卷组。
    #umount /mnt/test
    # lvremove /dev/lvm_test/test
    Do you really want to remove active logical volume "test"? [y/n]: y
      Logical volume "test" successfully removed
    #vgremove lvm_test
      Volume group "lvm_test" successfully removed
    24、故障排查
    通过在命令后加 -v,-vv,-vvv或-vvvv来获得更详细的命令输出。
    通过在lvs,vgs后加-P可以更好的查看失败设备.
    #vgs -a -o +devices -P
      Partial mode. Incomplete volume groups will be activated read-only.
      VG         #PV #LV #SN Attr   VSize    VFree   Devices               
      VolGroup00   1   2   0 wz--n-    3.88G      0  /dev/sda2(0)           
      VolGroup00   1   2   0 wz--n-    3.88G      0  /dev/sda2(Array2)         
      lvm_test     2   2   0 wz--n- 1016.00M 8Array6.00M pvmove0(0)            
      lvm_test     2   2   0 wz--n- 1016.00M 8Array6.00M /dev/sdb(0),/dev/sdc(0)
    #lvs -a -o +devices -P
      Partial mode. Incomplete volume groups will be activated read-only.
      Failure parsing mirror status fraction: 1 core
      Failure parsing mirror status fraction: 1 core
      LV        VG         Attr   LSize  Origin Snap%  Move     Log Copy%  Devices               

      LogVol00  VolGroup00 -wi-ao  2.88G                                   /dev/sda2(0)           
      LogVol01  VolGroup00 -wi-ao  1.00G                                   /dev/sda2(Array2)         

      [pvmove0] lvm_test   p-C-ao 60.00M               /dev/sdb            /dev/sdb(0),/dev/sdc(0)
      test      lvm_test   -wI-a- 60.00M                                   pvmove0(0)            

    五、 总结
    根据上面的讨论可以看到,LVM具有很好的可伸缩性,使用起来非常方便。可以方便地对卷组、逻辑卷的大小进行调整,更进一步调整文件系统的大小,还能方便的进行数据迁移,数据完整性保护。如果希望了解更多信息,请参考LVM-HOWTO。

LVM是Logical
Volume
Manager(逻辑卷管理器)的简写,它为主机提供了更高层次的磁盘存储管理能力。LVM可以帮助系统管理员为应用与用户方便地分配存储空间。在LVM管理下的逻辑卷可以按需改变大小或添加移除。另外,LVM可以为所管理的逻辑卷提供定制的命名标识。因此,使用LVM主要是方便了对存储系统的管理,增加了系统的扩展性。

目前LVM在Linux下有两个版本,分别是LVM
1和LVM
2,LVM2不仅仅是Linux逻辑卷管理在版本与功能上的升级,而且是架构在一个新的内核存储子系统(DM,device-mapper)之上的。这个存储子系统提供了一个轻量级的、可扩展的卷管理设施。除了在原有LVM卷管理功能的基础上,Linux的逻辑卷管理将会为用户提供更多的存储管理方案,如镜像、加密卷、多路径技术。所以在本节将以LVM

2为例来详细介绍LVM的创建与管理。
LVM相关概念和术语
LVM是建立在磁盘分区和文件系统之间的一个逻辑层,来为文件系统屏蔽下层磁盘分区布局,提供一个逻辑的盘卷,再在盘卷上来建立文件系统。LVM的结构如图1如示:

图1
LVM结构图
在上面的LVM结构图中,涉及到了很多LVM的相关术语,那么关于这些术语的详细说明如下:
物理卷(physical
volume,PV)
物理卷就是指硬盘分区,也可以是整个硬盘或已创建的软RAID
,是LVM的基本存储设备,与普通物理存储介质的区别是该设备包含有LVM相关的管理参数。
卷组(volume
group,VG)
卷组是由一个或多个物理卷所组成的存储池,在卷组上能创建一个或多个“LVM分区”(逻辑卷)。
逻辑卷(logical
volume,LV)
LVM的逻辑卷类似于非LVM系统中的硬盘分区,它建立在卷组之上,是一个标准的块设备,在逻辑卷之上可以建立文件系统。可以做这样一个设想来理解以上三者的关系:如果把PV比做地球的一个板块,VG则是一个地球,因为地球是由多个板块组成的,那么在地球上划分一个区域并标记为亚洲,则亚洲就相当于一个LV。

物理块(physical
extent,PE)
物理卷以大小相等的物理块为存储的基本单位,同时也是LVM寻址的最小单元。
逻辑块(logical
extent,LE)
逻辑卷以大小相等的逻辑块为存储的基本单位,在同一个卷组中,LE的大小和PE是相等的,并且一一对应。
卷组描述区域(Volume
Group Descriptor Area,VGDA)
和磁盘将包含分区信息的元数据保存在位于分区的起始位置的分区表中一样,逻辑卷以及卷组相关的元数据也是保存在位于物理卷的VGDA中。VGDA包括以下内容:
PV描述符、VG描述符、LV描述符、和一些PE描述符。系统启动LVM时激活VG,并将VGDA加载至内存,来识别LV的实际物理存储位置。当系统进行I/O操作时,就会根据VGDA建立的映射机制来访问实际的物理位置。

创建逻辑卷
创建逻辑卷通常包括如下步骤:
  • 创建分区
  • 创建物理卷
  • 创建卷组
  • 激活卷组
  • 创建逻辑卷
  • 创建文件系统

下面将通过一个具体的实例来详细介绍创建逻辑卷的整个过程。
【实例1】
利用/dev/sdb、/dev/sdc、/dev/sdd这三块磁盘创建一个卷组,再在卷组上创建两个逻辑卷,并指定将其中一个逻辑卷的映射模式为条带映射,实现的步骤如下:

1、创建物理卷
创建物理卷的命令是 “pvcreate”,该命令可以将需要添加到卷组的分区或磁盘创建为物理卷。操作如下:
                        #
                        pvcreate /dev/sdb /dev/sdc /dev/sdd
                          Physical
                        volume "/dev/sdb" successfully created
                          Physical
                        volume "/dev/sdc" successfully created
  Physical volume
                        "/dev/sdd" successfully created
2、创建卷组
创建卷组的命令为“vgcreate”,将使用“pvcreate”建立的物理卷创建为一个完整的卷组,如下:
                        #
                        vgcreate vgtest /dev/sdb /dev/sdc /dev/sdd
  Volume group
                        "vgtest" successfully created
其中vgcreate命令第一个参数是指定该卷组的名为“vgtest”,该名称可以根据需要随便定义,后面接添加到该卷组的物理卷。同时在使用vgcreate
在创建卷组时,还可以指定PE的大小,需要加上-s参数来实现,PE大小范围为8
KB 到 16GB,并且必须总是2的倍数。一个卷组里面最多允许65534个PE存在。默认设置的PE大小为4
MB,这表示卷组上创建的所有逻辑卷都以 4
MB 为增量单位来进行扩充或缩减,所以4
MB 的PE决定了单个逻辑卷最大容量为
256
GB,若要创建更大的逻辑卷则创建卷组时需要指定更大的PE。
3、创建逻辑卷
创建完卷组后,现在就可通过“lvcreate”命令来创建逻辑卷了,同时在创建逻辑卷的时候,还可以指定逻辑块与物理块映射的模式,逻辑卷的映射模式共有如下两种:

  • 线性模式――按照顺序把一定范围内的物理块与逻辑块映射,这也是默认的映射方式。例如,把逻辑卷中1-25的LE映射到PV1,把26-50的LE映射到PV2上。
  • 条带模式――将把逻辑块以条带的形式映射到不同的物理卷中,这种方式与前面讲到的RAID

            0有些类似,这种方式可以提高逻辑卷读写的性能。
  • 例如,
  • 将逻辑卷的LE 1映射为PV1的PE1,
  •                    LE 2映射为PV2的PE1,
  •                   LE  3映射为PV3的PE1。

那么创建逻辑卷的操作如下:
                        #
                        lvcreate -i 3 -I 4 -L 180M -n lvtest1 vgtest
  Logical volume
                        "lvtest1" created
上面的提示信息表明成功创建了一个名为“lvtest1”的逻辑卷,其命令中的几个参数的说明如下:

  • -i:采用条带模式的映射方式创建逻辑卷,该参数的值用于指定所创建的逻辑卷将映射在几个PV上。
  • -I:指定使用条带模式时所采用块的大小,单位为KB,其值必须是:2N(N≥2)。
  • -L:指定创建逻辑卷的大小,单位的可以用K、M、G、T表示KB、MB、GB及TB。
  • -n:用来指定所创建的逻辑卷名称,该名称可以根据需要随便定义。

在使用“-i”参数指定PV的个数时,一定要确认所指定的这些PV是没有完全被分配给任何逻辑卷的,否则将创建失败,其次若这些PV的大小不等,那么所创建的逻辑卷只能取最小值。

下面再使用剩余的空间来创建第二个逻辑卷,通过“vgdisplay”命令可查看当前卷组剩余的空间,如下:
                        #
                        vgdisplay
                          ---
                        Volume group ---
                          VG
                        Name               vgtest
                          System
                        ID            
                          Format
                                       lvm2
                          Metadata
                        Areas        3
                          Metadata
                        Sequence No  11
                          VG
                        Access             read/write
                          VG
                        Status             resizable
                          MAX
                        LV                0
                          Cur
                        LV                1
                          Open
                        LV               0
                          Max
                        PV                0
                          Cur
                        PV                3
                          Act
                        PV                3
                          VG
                        Size               300.00 MB
                          PE
                        Size               4.00 MB
                          Total
                        PE              75
                          Alloc
                        PE / Size       45 / 180.00 MB
                          Free
                         PE / Size       30 / 120.00 MB
  VG UUID            
                         1Nbgxo-U4Ux-Y5Hb-TDzT-d5Fp-Iov7-wKFHG5
从如上的信息可了解到“vgtest”卷组还剩余30个空闲的PE,那么将这些空闲的空间全部划分给另一个逻辑卷,操作如下:
                        #
                        lvcreate -l 30 -n lvtest2 vgtest
  Logical volume
                        "lvtest2" created
其中“-l”用于指定逻辑卷的LE数量,默认为4MB,所以此次创建的逻辑卷的大小是120M,该参数与“-L”效果一样。
4、创建文件系统
在逻辑卷上创建文件系统和在分区上创建文件系统方法是一样,例如,在逻辑卷上创建ext3格式的文件系统,命令如下:
                        #
                        mkfs.ext3 /dev/vgtest/lvtest1
# mkfs.ext3
                        /dev/vgtest/lvtest2
以上就是在Linux下创建逻辑卷的整个步骤。
LVM的维护
在LVM的日常维护工作中,通常会需要对逻辑卷扩容、添加新的物理卷等操作,下面将结合【实例1】中所创建的逻辑卷来介绍LVM常用的管理操作,如下:
1、激活卷组
卷组若不被激活,卷组和逻辑卷是不能被访问的,在LVM
2里创建的卷组默认是激活的,那么手动激活卷组的命令是:
                        #
                        vgchange -a y vgtest
  2 logical volume(s)
                        in volume group "vgtest" now active
其中“-a”用于设置指定的卷组是否可用,参数“y”表示激活卷组,若设置为“n”则表示暂停卷组使用。
2、为卷组增加新的物理卷
当卷组空间不足时,可以加入新的物理卷来扩大卷组容量,这时可用“vgextend”命令来实现,如下:
                        #
                        vgextend vgtest /dev/sde
  Volume
                        group "vgtest" successfully extended
其中“/dev/sde”是新增的物理卷,前提该设备已经使用“pvcreate”进行了初始化了。
3、从卷组中移除物理卷
要从一个卷组中移除一个物理卷,首先要确认要移除的物理卷没有被任何逻辑卷正在使用,通过“pvdisplay”命令可查看到该物理卷信息,如下:
                        #
                        pvdisplay /dev/sde
                          ---
                        Physical volume ---
                          PV
                        Name               /dev/sde
                          VG
                        Name               vgtest
                          PV
                        Size               100.00 MB / not usable 0   
                          Allocatable
                                  yes
                          PE
                        Size (KByte)       4096
                          Total
                        PE              25
                          Free
                        PE               25
                          Allocated
                        PE          0
  PV
                        UUID               ee2IFC-UHUq-Xg67-icwt-AhdJ-7kRz-JdDjiq

若其中的“Total
PE”与“ Free
PE”相等,表明该物理卷没有被使用,如果某个物理卷正在被逻辑卷所使用,就需要将该物理卷的数据转移到其它地方,然后再移除。移除物理卷的命令为“vgreduce”,如下:

                        #
                        vgreduce vgtest /dev/sde
  Removed
                        "/dev/sde" from volume group "vgtest"
4、在物理卷间转移数据
当发现逻辑卷下的某个磁盘有错误,或有其它需求要转移其中物理卷的数据时(如,更换大容量或更高速的物理设备),那么可通过“pvmove”来实现在物理卷之间转移数据,例如,将物理卷“/dev/sdd”上的数据转移到“/dev/sde”具体操作如下:

                        #
                        pvmove /dev/sdd /dev/sde
  /dev/sdd: Moved:
                        100.0%
其中/dev/sde的大小一定要大于或等于/dev/sdd,其次在使用“pvmove
”前需要用 “modprobe
dm-mirror”命令来加载dm-mirror模块,因为“pvmove”在转移数据时需要用到该模块,而默认系统是不加载该模块的。
5、扩展逻辑卷
在前面提到过,LVM提供了方便调整逻辑卷大小的功能,扩展逻辑卷大小的命令是“lvextent”,例如,将“lvtest2”的空间大小调整到160M,操作如下:
                        #
                        lvextend -L 160M /dev/vgtest/lvtest2
                          Extending
                        logical volume lvtest2 to 160.00 MB
  Logical volume
                        lvtest2 successfully resized
也可以在原来的基础增加相应的大小,如下:
                        #
                        lvextend -L +40M /dev/vgtest/lvtest2
                          Extending
                        logical volume lvtest2 to 160.00 MB
  Logical volume
                        lvtest2 successfully resized
逻辑卷扩展后并不会马上生效,需要使用“resize2fs”命令重新加载逻辑卷的大小,该命令只针对ext2/ext3的文件系统(若是reiserfs的文件系统,则使用“resize_reiserfs”命令),如果该逻辑卷正在使用中,就应该先将该逻辑卷卸载后再执行“resize2fs”命令,操作如下:

                        #
                        umount /dev/vgtest/lvtest2
                        #
                        resize2fs /dev/vgtest/lvtest2
                        resize2fs
                        1.35 (28-Feb-2004)
                        The
                        filesystem is already 163840 blocks long.  Nothing to do!

# mount
                        /dev/vgtest/lvtest2 /mnt/lvtest2/
以上这些操作可以通过“ext2online”命令直接来实现,这样就不用做卸载逻辑卷等操作了,如下:
                        #
                        ext2online /dev/vgtest/lvtest2
ext2online v1.1.18 -
                        2001/03/18 for EXT2FS 0.5b
6、删除逻辑卷
   删除逻辑卷前首先需要将其卸载,其命令是“lvremove”,如下:
                        #
                        lvremove /dev/vgtest/lvtest2
                        Do
                        you really want to remove active logical volume "lvtest2"?

                        [y/n]: y
  Logical volume
                        "lvtest2" successfully removed
   其中输入“y”确认确认删除该逻辑卷。
7、移除卷组
在移除卷组前首先要确认该卷组中已没有任何的逻辑卷了,或者可使用“vgchange”手工将卷组停止,移除卷组的具体操作如下:
                        #
                        vgremove vgtest
  Volume group
                        "vgtest" successfully removed
8、删除物理卷
在删除物理卷前,必须确认该物理卷已从卷组中移除了,删除物理卷的命令是“pvremove”,如下:
                        #
                        pvremove /dev/sde
  Labels on physical
                        volume "/dev/sde" successfully wiped
除此之外,LVM还可以提供snapshot(快照)等功能,其snapshot能够快速的备份当前逻辑卷中的数据,从而大大减轻备份数据的负担,只是目前来说技术并不是很成熟。

 

LVM (Logical Volume Manager)
支持后期的容量扩展 逻辑卷

boot要拿出来单独放 不能放到lvm raid上 可能支持raid1
Linux LVM (8e)
pv (physical volume)--> vg (volume group) --> lv (logical volume) -->格式化lv,挂载lv

将pv(物理卷)组合为vg(卷组) 卷组类似扩展分区的使用方法卷组之内需要重新划分新的分区(逻辑卷)
vg可以动态加入新的物理卷 可以让其中某个逻辑卷添加容量
卷和raid 都是靠MD内核驱动的 md接口使用需要路径重新映射

lvm管理器
创建卷 移除卷
pv 创建 #pvcreate #pvdisplay #remove #pvscan
vg    #vgcreate
lv    #lvcreate

尝试创建:
fdisk /dev/sda 指定类型 8e 不要格式化
#pvcreate
-f 强行创建
#pvcreate /dev/sda5
#pvcreate /dev/sda6

#vgdisplay 查看已有的vg设备
#vgcreate 卷组名 物理卷路径 卷组禁止重名
#vgcreate myvol /dev/sda{5,6}
                Format 版本号2

#lvcreate
指明在哪个卷组上创建lv 可以指定物理路径
-l logical extent number %{vg|pvs|free}
-L 512K/M/G/T
-n 逻辑卷名
#lvdisplay 查看其他逻辑卷 同卷组内的逻辑卷禁止重名
#lvcreate -l 512M -n lvtest myvol

使用:
#mkfs.ext3 /dev/myvol/lvtest

#df -lh 查看磁盘使用率
#mount /dev/
扩展:
#pvcreate /dev/sda11
#vgextend mypv /dev/sda11 加入新pv
#lvextend -L +512M /dev/mypv/mylv1 扩展lv1

#resize2fs -p /dev/mypv/mylv1 重读分区
缩减:
#umount
#fsck -f /dev/mypv/mylv1 硬盘检查 使文件连续
#resize2fs /dev/mypv/mylv1 512M 重读分区
#lvreduce -L 512M /dev/mypv/mylv1 缩减lv1
#mount 重新挂载
#df -lh

#lvcreate -i 做成条带
    -m mirrors 镜像卷 -m1 做一次镜像 -mn 做n次
    -r 只读卷
    -s 快照
#pvremove 移除物理卷
#pvmove 把数据从一个pv移动到另一个pv
#vgreduce 从卷组中移除物理卷   

snapshot 快照 保留了过去某一时刻的状态信息
7*24
冷备份:
如果备份需要1小时 则将存储设备或者数据库只读 离线 开始备份
将用户数据写入到redolog中 等备份完成之后再redo
dedo进行时不允许用户写入新的数据 所以此时的用户操作又要写入redolog
redolog至少用3块硬盘镜像3次以保证万无一失

解决这个问题 快照+redolog 然后对着快照进行备份
只能对lv做快照
照相时刻 里面没有任何数据 只是做了链接 链接到源数据上
对比特征码 如果之后哪个文件要改变 先把原时间点的文件先保存到快照空间 再允许文件改变 但要保证备份的时间内 数据变化量不超过快照大小 否则快照崩溃
用脚本实现 某分区(快照空间) 容量不足时 自动扩充
#lvcreate -L 10M -p r -s -n mylv1bak mypv /dev/mypv/mylv1 创建快照盘并做快照
-s 表示快照 -p permission r|rw   -n lv名字 可以省略mypv 因为快照盘和源数据盘在同一vg下
#dump -0u -f /root/mylv1bak100728.dump /dev/mypv/mylv1bak 对mylv1bak快照盘做dump0级备份
-0 0级别完全备份 u 更新配置文件 -f 指定输出文件
#lvremove /dev/mypv/mylv1bak 移除快照

#restore -rf /root/mylv1bak100728.dump 恢复

抱歉!评论已关闭.