可以灵活改变分区大小。这里的分区叫做lv,lv创建在 vg中,vg由pv组成。pv可以由磁盘创建也可以由物理分区创建。灵活改变分区大小,就是调整lv的大小。lv可以调整的范围受到vg大小的限制,而 vg的大小可以通过改变pv来灵活变化。于是lv的大小理论上完全可控,即使生产需求不断变化,只需要增加pv即可满足需求的变化。

  pv操作,创建(pvcreate)、删除(pvremove)、扫描(pvscan)、查看(pvs、pvdisplay)、转移(pvmove)。

  vg操作,vgcreate、vgremove、vgextend、vgreduce、vgs、vgdisplay、vgscan、vgrename……

  lv操作,lvcreate、lvremove、lvextend(扩展)、lvreduce、lvresize(缩减)、lvs、lvdisplay……



创建lv


===========

创建 pv

pvcreate /dev/sdb /dev/sdc

  pvcreate <磁盘> <磁盘> <......>

pvs
pvdisplay

  只看某一个pv

pvs /dev/sdb
pvdisplay /dev/sdb



创建 vg

vgcreate 10vps /dev/sdb /dev/sdc

                vgcreate <卷组名> <......>

vgs
vgdisplay


  创建vg时,可以使用选项“-s”,修改PE(逻辑卷的物理存储块)大小(没有指定该选项时,使用默认大小值)。

vgcreate -s 128M 10vps /dev/sdb /dev/sdc
display 10vps



创建 lv

lvcreate -n lv_one -L 200G 10vps
lvcreate -n lv_two -L 500G 10vps

  lvcreate -n <卷名> -L <卷大小值> <卷组名>


  选项说明:

  选项“L”卷大小可以使用大小单位:M、G、T、S、……

  单位“S”使用的是PE的数量。在pv创建时使用PE数量,与PE的大小(vg创建时确定)确定lv的大小。

  选项“p”,用来指定分区权限:r|rw。



挂载 lvs 分区

mkfs.ext4 /dev/10vps/lv_one
mount  -t ext4 /dev/10vps/lv_one /opt/mysql_data
mkfs.ext4 /dev/10vps/lv_two
mount -t ext4 /dev/10vps/lv_two /opt/oracle_data
mount /dev/mapper/10vps-lv_three /opt/db_apps

  mount <挂载点>

  mount /dev/mapper/<卷组名-卷名> <挂载点>

  * 要是需要以 UUID 来自动挂载,在刚创建完成时,没有 UUID 。

   需要格式化以后才会有 UUID 。



 删除lvs


  增加的时候不用卸载分区;删除的时候需要卸载

umount /opt/db_apps
lvremove /dev/10vps/lv_three




删除pv


===========

删除 lv

lvremove /dev/10vps/lv_one

lvremove /dev/10vps/lv_two


删除 vg

vgremove /dev/10vps


删除 pv

pvremove /dev/sdb /dev/sdc




增加 vg


===========


pvcreate /dev/sdd
vgextend 10vps /dev/sdd




缩减vg


===========

  使用pvmove命令把数据移走,然后删除pv。缩减后的vg,把其中的pv移除,这时pv就不属于任何vg,可以删除pv或者重新分配。

pvs
pvmove /dev/sdb
vgreduce 10vps /dev/sdc




扩展lv

  增加的时候不用卸载分区;减少、删除的时候需要卸载。

  首先增加lv的大小,而后接着修改文件系统大小。

===========


lvextend -L 500G /dev/10vps/lv_one

   大小增加“到”500G;“-L +500G”增加500G空间大小。


查看大小,对比结果……

lvs
df -hP


resize2fs -p /dev/10vps/lv_one

  修改过文件系统大小,这次再查看。选项“-p”表示扩展到最大可使用的大小。


eg:增加根分区

把剩余空间全加到根分区的卷

# lvextend /dev/mapper/vg_hhh-lv_root /dev/sda3
# lvs

逻辑卷(lv)管理(LVM)_第1张图片

# df -h

逻辑卷(lv)管理(LVM)_第2张图片

  还需要修改文件系统大小才能真正完成扩展。




缩减lv

  缩减时,先缩减文件系统大小,而后修改lv大小。缩减的时候,需要卸载分区、确保分区文件系统数据一致性完整。

===========


缩减到100G

lvs
umount /dev/10vps/lv_one
e2fsck -f /dev/10vps/lv_one
resize2fs /dev/10vps/lv_one 100G
lvreduce -L -200G /dev/10vps/lv_one
lvs
mount ……
df -h
vgs
pvmove /dev/sdd
vgreduce 10vps /dev/sdd
pvremove /dev/sdd




创建快照

  快照针对已有lv创建,大小自行斟酌。

语法

lvcreate  [-l|--extents  LogicalExtentsNumber[%{VG|FREE|ORIGIN}]  |  -L|--size   LogicalVolumeSize[bBsSkKmMgGtTpPeE]]   [-c|--chunksize   Chunk-
       Size[bBsSkK]]   [--noudevsync]   [--ignoremonitoring]   [--monitor  {y|n}]  [-n|--name  SnapshotLogicalVolume{Name|Path}]  -s|--snapshot  {[Vol-
       umeGroup{Name|Path}/]OriginalLogicalVolumeName -V|--virtualsize VirtualSize[bBsSkKmMgGtTpPeE]}


  快照是为了备份而生,创建完快照,可以直接挂载,挂载后存在被快照lv的数据。从而可以从快照完成备份操作。这个备份是个完全备份,并不能保证被备份lv数据变化后的结果能及时回复。

===========


lvcreate -s -L 200G -p r -n snapshotLV /dev/vg_name/OriginalLV

  快照lv需要跟被快照lv处于同一个vg。

  快照的时间点处于命令执行的时刻。


lvremove /dev/vg_name/snapshotLV

  快照完成备份后,可以卸载后删除。


逻辑卷(lv)管理(LVM)_第3张图片