一、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/lvm.conf文件,主要是以下俩个参数:
对于log的失败策略,系统默认是allocate,而对于image的失败策略是remove.更详细的信息请参官方文档。
3、将一个逻辑卷转换为镜像卷:
新创建了一个u02逻辑卷:
使用lvconvert将其转换为mirror volume:
对于如何修复Mirrored Volume,等遇到具体的故障时在讨论。
4、Creating Snapshot Volumes:
对mirror volume创建快照是rhel6.1的新特性之一。下面针对镜像卷 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 /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)子菜单,选中以选项:
下面将通过一个具体的实例来详细介绍创建逻辑卷的整个过程。
【实例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”命令来创建逻辑卷了,同时在创建逻辑卷的时候,还可以指定逻辑块与物理块映射的模式,逻辑卷的映射模式共有如下两种:
那么创建逻辑卷的操作如下:
#
lvcreate -i 3 -I 4 -L 180M -n lvtest1 vgtest
Logical volume
"lvtest1" created
上面的提示信息表明成功创建了一个名为“lvtest1”的逻辑卷,其命令中的几个参数的说明如下:
在使用“-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 恢复