LVM
LVM(Logical Volume Management,逻辑捲轴管理)是一种可以更弹性管理磁碟的方法。
藉由将实体储存装置的分割区整合提供一个更大的储存空间,让管理员依照需求去分配资源。
并且若日后需要增加或缩减档案系统空间,都可以在不重新格式化整个档案系统的情况下完成。
LVM主要分成四个项目,而这四个项目也代表着建制LVM的阶段作业。
PV(Physical Volume,实体捲轴):
LVM中最底层的空间,为实体切割区调整系统识别码后格式化的区域。
因为PV无法跨实体磁碟,所以最大空间即为实体磁碟空间。
PE(Physical Extend,实体延伸区块):
PE是LVM中最小的储存单位,类似实体磁碟的block,建立VG时可以决定PE的大小,预设是4MB。
PE可以决定VG的大小,在LVM1中,PE的个数限制在65534个,每个PE的大小为8k-512MB。
而在LVM2中,PE移除了个数的限制,大小则是延伸到16GB,使得管理员可以建立更大的VG。
VG(Volume Group,捲轴群组):
VG为PV所集合而成的空间,可跨越实体磁碟。
VG的大小主要因PE而决定,在LVM1中,VG最大的限制到2TB。
在LVM2中,VG在32bits的系统中可到达16TB,在64bits的系统更可到达8EB的空间。
LV(Logical Volume,逻辑捲轴):
VG最终会切割出各个LV,在格式化LV之后就可成为类似分割区的空间储存资料。
LV的大小也是以PE为单位。
整个LVM的建立流程就是,一个实体的磁碟经由建立PV,再由建立VG决定PE大小而堆叠组合出VG。
VG在经过管理者分配切割为LV,格式化LV之后便成为可用的档案系统,如下图所示:
LVM CREATE
首先先来介绍LVM建立的方法。
1.使用 #fdisk 建立一个系统识别码为8e的分割区( #fdisk 切割出分割区后按t可变更识别码)
2. #pvcreate /dev/[分割区代号] 建立PV。
3.使用 #vgcreate -s [PE大小] [VG名称] [PV名称] 建立VG,-s为设定PE大小,预设为4MB。
如有多个PV,例如vda5、vda6、vda7,则输入 #vgcreate -s [VG名称] /dev/vda{5,6,7}。
4.使用 #lvcreate -n [LV名称] -L 2G [VG名称] 建立LV,-n为设定LV名称,-L为设定LV大小。
或者可使用-l,为以PE作为单位切割,-L并非切割刚好的空间,而是切割出最接近的PE数量。
5. #mkfs -t ext4 /dev/[VG名称]/[LV名称],建立档案系统。
6. #mkdir /[挂载点],建立挂载点。
7. #mount /dev/[VG名称]/[LV名称] /[挂载点] 挂载,或编辑/etc/fstab自动挂载。
当各步骤输入指令完毕之后,可以查询各阶段设定是否正确。
#pvdisplay /dev/[PV分割区代号],查询PV资讯。
#vgdisplay [VG名称],查询VG资讯。
#lvdisplay /dev/[VG名称]/[LV名称],查询LV资讯。
LVM EXTEND & REDUCE
LVM的优点就在于它弹性的空间配置,可以随时增加或缩减空间的大小而不影响档案系统。
例如当管理员购置的新硬碟,可以增加到VG或LV里面,而不用格式化整个系统。
或者当管理员发现哪边有闲置的空间,可以先删除然后增加到其他档案系统中。
LVM在进行空间缩减的时候,会先以空白的空间进行搬移,尽量避免动到有资料的空间。
但在进行空间大小变更前,最好还是先确认过目前空间的状况后,才开始进行缩减的动作。
不然剩余的空间不足以应付增加或缩减时,资料就有可能受损了。
所以建议使用指令 #df -h /[挂载点],或者 #vgdispaly [VG名称] 来确认目前空间大小。
LV Extend & Reduce
当进行LV增加或缩减时,避免出错最好都先将空间卸载。
增加LV大小时,必须要先确定VG有足够的延伸空间。
先输入 #lvextend -L [空间大小] /dev/[VG名称]/[LV名称],-L可改为-l以PE数量为单位。
如果空间大小前面使用「+」表示增加多少空间大小,若不使用表示指定为多少空间大小。
然后 #resize2fs -p /dev/[VG名称]/[LV名称] 变更档案系统大小,再重新挂载档案系统。
要缩小LV大小时,系统会提示要先做 #e2fsck -f [VG名称]/[LV名称] 这个动作。
跟延伸不同的是要先做 #resize2fs -p /dev/[VG名称]/[LV名称] [空间大小]。
要注意这边是缩减档案系统为指定大小,而不是缩减多少大小。
然后 #lvreduce -L [空间大小] /dev/[VG名称]/[LV名称],-L可改为-l,以PE数量为单位。
跟延伸相同,若空间大小前加上「-」表示减少多少空间大小,不使用表示指定空间大小。
完成之后再将档案系统重新挂载即可。
VG Extend & Reduce
要进行VG的空间增加时,我们要先建立新的PV。
再使用 #vgextend [VG名称] /dev/[PV分割区代号],就可以把新的PV加进VG了。
而要缩减VG大小时,先以 #pvmove /dev/[PV分割区代号] 移除PV。
再使用 #vgreduce [VG名称] /dev/[PV分割区代号] 将VG中的PV移除。