Linux卷组详细介绍
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、Volume Group的高级管理:
1、Combining Volume Groups:
一块100G大小的磁盘sdb,分了俩个分区:sdb1和sdb2。
sdb1创建了vg01,sdb2创建了vg02.
合并前vg01的信息如下:
现在将vg01和vg02合并在一起,组成新的vg01.如上图所示,vg01的大小是50G,合并后的结果如下图所示:
vg01从50G扩大到100G了。
再次查看vg01的信息:
2、Splitting a Volume Group
3、Backing Up Volume Group Metadata:
当创建vg的时候,系统默认会自动备份Metadata。
/etc/lvm/backup下面存放的是metadata 的备份信息,而/etc/lvm/archive下面存放的是metadata的archive信息。
查看下vg02的metadata备份信息:
由以上信息可以看出,vg02是从vg01分离出来的。
vg02的metadata archive信息:
也可以手工备份vg的metadata,这里用的命令是vgcfgbackup,同样恢复命令是vgcfgrestore。
恢复metadata:
4、Moving a Volume Group to Another System:
这里就一台机器,演示下效果就OK.
二、LVM的高级管理:
1、创建线型逻辑卷:
上面创建u02时指定的大小是vg02大小的20%,而创建u01时将vg02的所有空余空间全部分配给了u01。
2、Creating Mirrored Volumes:
刚开始的时候,我为sdb分了三个分区:/dev/sdb1,/dev/sdb2,/dev/sdb3,然后分别创建了vg01,vg02以及vg03:
接着在创建mirrored volume时报如下错误:
在网上查了查,也没有给出明确的解决办法,查看了下官方文档,也没有明确的答案,最后就将vg02、vg03删除了,将/dev/sdb2、/dev/sdb3、/dev/sdb4加到vg01,再次创建mirrored volume,就不会再出现上述错误了。
注意查看u01的Attr前面多了一个m,这就说明u01是镜像卷。
Copy%代表正在同步数据。
同步完的结果如下图所示:
查看/dev/mapper下面:
这里的vg01-u01_mlog是专门存放mirror log的设备。
并且存放mirror log的设备不能与数据处于同一个PV里,否则会报错的。
使用lvdisplay可以看到u01的镜像卷设备个数是2个。
NOTICE:镜像卷不能被重新分配大小了。
系统对于镜像失败后的操作策略可以查看/etc/lvm/文件,主要是以下俩个参数:
对于log的失败策略,系统默认是allocate,而对于image的失败策略是remove.更详细的信息请参官方文档。
3、将一个逻辑卷转换为镜像卷:
新创建了一个u02逻辑卷:
使用lvconvert将其转换为mirror volume:
对于如何修复Mirrored Volume,等遇到具体的故障时在讨论。
4、Creating Snapshot Volumes:
对mirror volume创建快照是的新特性之一。
下面针对镜像卷 u01创建快照:
当前/dev/vg01/u01挂载于/u01目录下,总共有56个文件:
创建快照:
通过lvs查看:
通过lvdisplay查看快照信息:
接着挂载/dev/vg01/u01_snap访问它:
对snap可以进行完全访问。
5、Merging Snapshot Volumes:
这个错误是由于u01目前正在使用,所以卸载它之后,系统立即开始合并:
6、Changing the Parameters of a Logical Volume Group:
将/dev/vg01/u02更改为只读状态:
对于存在快照的卷不能更改其读写模式,否则会报错的,以下使我更改u01时报错:关于更多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 /中的文件
#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/" vgcfgrestore
vgcfgrestore -n 卷组名物理卷全路径名
vgcfgrestore命令用于从卷组备份文件中恢复指定物理卷的VGDA信息。
使用vgcfgrestore 命令后要执行vgmknodes命令,重新建立卷组和逻辑卷的设备文件。
#vgcfgrestore -n myVG /dev/hdb1
vgcfgrestore -- INFO: using backup file "/etc/lvmconf/"
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 说明
mke2fs 建立ext3文件系统
mkdosfs 建立vfat文件系统
mkreiserfs 建立reiser文件系统
建立jfs文件系统
mkswap 建立swap文件系统
在硬盘分区中建立文件系统时需要注意,分区类型与分区中建立文件系统的类型要一致,否则在挂载分区时会有问题。
把分区挂载到系统中
挂载点目录要求为空
使用 mount命令,如果需要系统每次启动时都自动挂载该文件系统则需要在文件
/etc/fstab中添加相应的设置行。
磁盘分区命令
fdisk 用法如前所示
parted
parted [硬盘设备文件全路径名]
parted命令用于对指定硬盘中的分区进行维护。
....
(parted) help ....
(parted) print ....
(parted) quit mount
mount命令不指定任何参数,使用时显示当前系统中已挂载的文件系统的信息。
#mount
样可以减少操作成本.
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/中有以下内容:
if [ -x /sbin/ ]; then
action $"Setting up Logical Volume Management:" /sbin/ vgchange -a y
--ignorelockingfailure
fi
vgchange -a y命令激活系统所有卷组。
四、创建和管理LVM
要创建一个LVM系统,一般需要经过以下步骤:
1、创建分区
使用分区工具(如:fdisk等)创建LVM分区,方法和创建其他一般分区的方式是
一样的,区别仅仅是LVM的分区类型为8e。
# fdisk -l /dev/sdb /dev/sdc
Disk /dev/sdb: 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: 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 [ MB]
/dev/sda [ GB]
/dev/root [ GB]
/dev/ram [ MB]
/dev/sda1 [ MB]
/dev/VolGroup00/LogVol01 [ GB]
/dev/ram2 [ MB]
/dev/sda2 [ GB] LVM physical volume
/dev/lvm_test/test [ MB]
/dev/ram3 [ MB]
/dev/ram4 [ MB]
/dev/ram5 [ MB]
/dev/ram6 [ MB]
/dev/ram7 [ MB]
/dev/ram8 [ MB]
/dev/ramArray [ MB]
/dev/ram10 [ MB]
/dev/ram11 [ MB]
/dev/ram12 [ MB]
/dev/ram13 [ MB]
/dev/ram14 [ MB]
/dev/ram15 [ MB]
/dev/sdb [ MB] LVM physical volume
/dev/sdc [ 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- 0
/dev/sdb lvm_test lvm2 a- 0
/dev/sdc lvm2 --
#pvscan
PV /dev/sdb VG lvm_test lvm2 [ MB / 0 free]
PV /dev/sda2 VG VolGroup00 lvm2 [ GB / 0 free]
PV /dev/sdc lvm2 [ MB]
Total: 3 [ GB] / in use: 2 [ GB] / in no VG: 1 [ MB]
#pvdisplay
--- Physical volume ---
PV Name /dev/sdb
VG Name lvm_test
PV Size MB / not usable 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 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: 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- 0
lvm_test 1 1 0 wz--n- 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 MB
PE Size MB
Total PE 127
Alloc PE / Size 127 / 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 GB / not usable 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 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文件系统:
# /dev/lvm_test/test
mke2fs (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 %) 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
= 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 GB
Logical volume test successfully resized
上面的命令就实现将逻辑卷test的大小扩大为12G。
# lvextend -L+1G /dev/lvm_test/test
Extending logical volume test to GB
Logical volume test successfully resized
上面的命令就实现将逻辑卷test的大小增加1G。
增加了逻辑卷的容量以后,就需要修改文件系统大小以实现利用扩充的空间。
对于希望调整被加载的文件系统大小,使用ext2online(ext2resize) 或 resize2fs. #df -h
# ext2online /dev/lvm_test/test
ext2online /dev/lvm_test/test
ext2online - 2001/03/18 for EXT2FS
#df -h
Filesystem 容量已用可用已用% 挂载点
/dev/mapper/VolGroup00-LogVol01
16G 11G 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 /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 GB
Current LE Array2
Segments 1
Allocation inherit
Read ahead sectors 0
Block device 253:0
#lvscan
lvscan
ACTIVE ’/dev/VolGroup00/LogVol00’ [ GB] inherit
ACTIVE ’/dev/VolGroup00/LogVol01’ [ GB] inherit
#lvs -o +devices
LV VG Attr LSize Origin Snap% Move Log Copy% Devices
LogVol00 VolGroup00 -wi-ao /dev/sda2(0)
LogVol01 VolGroup00 -wi-ao /dev/sda2(Array2)
21、使用过滤控制LVM的设备扫描
通过编辑/etc/lvm/ 中的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 /dev/sda2(0)
LogVol01 VolGroup00 -wi-ao /dev/sda2(Array2)
test lvm_test -wi-ao /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 /dev/sda2(0)
LogVol01 VolGroup00 -wi-ao /dev/sda2(Array2)
test lvm_test -wi-ao /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- 0 /dev/sda2(0)
VolGroup00 1 2 0 wz--n- 0 /dev/sda2(Array2)
lvm_test 2 2 0 wz--n- pvmove0(0)
lvm_test 2 2 0 wz--n- /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 /dev/sda2(0)
LogVol01 VolGroup00 -wi-ao /dev/sda2(Array2)
[pvmove0] lvm_test p-C-ao /dev/sdb /dev/sdb(0),/dev/sdc(0)
test lvm_test -wI-a- 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如示:
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。