一、proxmox单盘初始安装状态后

lvm的整体架构:

首先将 disk 或者 分区 通过pvcreate创建为pv(physical volume);然后通过vg相关指令(包括但不限于vgcreate vgextend等)来创建新的vg或拓展现有的vg;最后就是lv阶段,通过lvcreate等指令在vg的基础上创建lv。ok,lv创建完成后,那么就可以对lv进行格式化,挂载,使用。

 

pv组成vg,在vg下进行lv创建,也就是说lv大小受限与vg:

①、vg如果自己还有空余空间,那么lv调大易于反掌,vg如果没有空余空间lv要调大,需要vg进行扩展pv

②、lv如果需要调小,根据lv格式化分区类型,xfs不能缩小,ext4可以缩小

lv的调大和调小,在vg大框架下进行伸缩。这里需要注意的是lv的调大可不仅仅是lv层面大小的调大,还需要lv对应的档案系统的调大,档案系统的调大需要调整 block group,这部分我另写文章专门说明。

 

lv创建完成后,那么就需要格式化,lv名的组成/dev/vg名/lv名。

lv的写模式,有2种:linear线性模式以及triped交错模式(是不是想到raid了?),想象以下,单vg含有2个pv,被lv全部使用,那么在linear模式下,第一个pv被使用后才会使用第2个pv;但在triped模式下,2个pv都会写,当然性能就比linear模式好当相应的数据会存在风险。默认lvm采用的是linear模式。

 

那么,我们来具体看下pv,vg,lv各个阶段所涉及到的相关指令。

pv:pv的名称就是实际的disk或分区的名称

pvcreate:创建

pvremove:删除

pvscan:扫描

pvdisplay:显示

 

vg:vg名称需要自定义

vgcreate:创建

vgcreate [-s N[mgt]] VG名 PV名
选项与参数:
-s :后面接 PE 的大小 (size) ,单位可以是 m, g, t (大小写均可)

 

vgremove:删除  vgremove ywh 表示直接删除vg ywh

vgextend:增加   vgextend ywh /dev/sda8    从vg ywh中增加/dev/sda8

vgreduce:减少  vgreduce ywh /dev/sda8  从vg ywh中把/dev/sda8移除

vgchange:是否设定vg 为active   vgchange -a n vbirdvg 设定为非active

vgdispaly:显示

vgscan:扫描

 

lv:lv名也需要自定义

lvcreate:创建 

lvcreate [-L N[mgt]] [-n LV名] VG名   -L选项表示指定大小

lvcreate [-l N] [-n LV名] VG名            -l 选项指定多少个pe,pe的大小在vg创建时会通过-s参数指定

lvcreate -L 10G -n lvtest vgtest

 

lvremove:删除

lvextend:增加  

lvreduce:减少

lvresize:增加或减少  lvresize -L +100M /dev/vgtest/lvtest

lvscan:扫描

lvdisplay:显示

这里重点是lvextend、lvreduce、lvresize的使用方法以及与lvcreate命令的使用对比

 

lv(包括 thin pool或非thin pool)快照功能

快照的原理:

lvm会预留一部分pe给快照区来使用,正常情况下lv被快照后,快照区由原本的lv pe和lvm预留给快照区的pe 共同组成,但lv 中的某些pe被改动后(比如pe内容由A改为B),那么A将会被挪至lvm预留给快照的pe区内,也就是说快照的内容在被快照的那一刻就会保持不变(你可以理解为read only)。另外快照和lv因为很多pe共用,所以快照和lv需要保持在同一个vg中。快照可以允许存储的空间也是有限的,如何查看proxmox的快照可用空间???

 

快照的恢复:

这里参考鸟哥大作,非常清楚

 

 实际操作:

首先看pve这个vg中是否还有空间,如下:

gns3镜像文件 vxlan linux vg镜像_gns3镜像文件 vxlan

 

 还有24.75G的空余空间,说明可以创建使用快照

接着lvcreate -L 2G -n rootsnap -s /dev/pve/root 如下:

gns3镜像文件 vxlan linux vg镜像_gns3镜像文件 vxlan_02

 查看快照:

gns3镜像文件 vxlan linux vg镜像_鸟哥_03

手动增加快照空间

gns3镜像文件 vxlan linux vg镜像_gns3镜像文件 vxlan_04

  

gns3镜像文件 vxlan linux vg镜像_鸟哥_05

  lvextend -L +2G /dev/pve/rootsnapt 如下

gns3镜像文件 vxlan linux vg镜像_gns3镜像文件 vxlan_06

  

gns3镜像文件 vxlan linux vg镜像_自定义_07

 自动增加快照空间 /etc/lvm/lvm.conf

gns3镜像文件 vxlan linux vg镜像_自定义_08

  

还原快照以及系统备份:

还原快照很简单,就是让快照分区的内容和当前的被备份的分区内容合并即可,合并是需要卸载分区的
命令如下:
lvconvert --merge
由于我们快照的是root分区,是无法卸载的,因此系统会提示你在下一次重启后会自动执行合并。执行重启,重启完后,系统回复到创建快照的那一瞬间的状态。

系统备份也很简单,快照分区其实也就是一个分区,将其挂载到某个空目录即可读取,再使用tar打包或者rsync远程传输到其他备份的地方即可。

另外就是删除快照,有时候觉得快照已经没用了,例如更新系统后用了一段时间发现没问题,此时可以删除快照,方法也非常简单:
lvremove /dev/pve/rootsnapt

二、

lv还存在thin pool模式,pool可以理解池子,在池子的基础再新建lv

lvcreate -L 10G -T vgtest/lvthinpool 再vgtest(vg)上建 lvthinpool(lv thin pool池)

lvcreate -V 30G  -n lvtest -T vgtest/lvthinpool  (-V看man说明指virtual size,这里-V就不能使用-L或者-l来代替指明容量了)

lv thin pool池子的模式在proxmox上使用,使用上存在风险,如果pool中的数据爆满会炸池,需要格外注意

 

三、proxmox在初始安装状态下,如何删除data thin pool

gns3镜像文件 vxlan linux vg镜像_自定义_09

 

gns3镜像文件 vxlan linux vg镜像_鸟哥_10

 删除data  thin pool (该thin pool上没有任何的数据,可以放心删除)lvremove 

gns3镜像文件 vxlan linux vg镜像_鸟哥_11

 

gns3镜像文件 vxlan linux vg镜像_gns3镜像文件 vxlan_12

lvextend -l 18111 /dev/pve/root

gns3镜像文件 vxlan linux vg镜像_鸟哥_13

 

gns3镜像文件 vxlan linux vg镜像_鸟哥_14

 

gns3镜像文件 vxlan linux vg镜像_gns3镜像文件 vxlan_15

gns3镜像文件 vxlan linux vg镜像_gns3镜像文件 vxlan_16

 收尾:在/etc/pve/storage.cfg中删除率lvmthin

gns3镜像文件 vxlan linux vg镜像_gns3镜像文件 vxlan_17

 

 四、有多余空间,比如分区或者磁盘,如何给现有的lvm扩容

1、首先通过gdisk来给disk硬盘或者分区打上partition code为8e00,这一步非必须

2、后续步骤略

 

五、参考

鸟哥的大作,http://linux.vbird.org/linux_basic/0420quota.php#lvm_thin

 疑问:

在thin pool中缩小空间出现:thin pool volumes cannot be reduce in size yet  ??