首先回顾一下http://mybsir.blog.51cto.com/4618614/1388505LVM硬盘管理(一)中的相关命令。

pvcreate               创建PV                #pvcreate   /dev/sdb1 

pvdisplay              显示PV信息         #pvdisplay  [/dev/sdb1]

vgcreate               创建VG                   #vgcreate Datalvm /dev/sdb1 /dev/sdc1 /dev/sdd1

vgdisplay              显示VG信息         #vgdisplay [Datalvm]

lvcreate                 创建LV                #lvcreate –L Size –n Mydata Datalvm

lvdisplay               显示LV信息          #lvdisplay [Datalvm]

vgextend               扩展VG空间大小  #vgextend Datalvm /dev/sdb2

lvextend                扩展LV分区大小   #lvextend –L [+]Size –n /dev/Datalvm/Mydata 

resize2fs                调整文件系统大小#resize2fs      /dev/Datalvm/Mydata

pvmove                 转移PV中的数据   #pvmove /dev/sdb1  [/dev/sdd1]

vgreduce               移除PV卷             #vgreduce Datalvm /dev/sdb1

lvremove               移除LV                 #lvremove  Mydata

vgremove             移除VG                 #vgremove /dev/Datalvm

回顾1:创建LVM的步骤,首先创建PV、然后创建VG、接着创建LV、最后创建文件系统、挂载文件系统。

回顾2:LV的扩容步骤:①LV所在VG有足够空间扩容,使用lvextend命令进行扩容,使用resize2fs命令调整分区大小;②LV所在VG没有足够空间扩容,首先添加一块硬盘,创建PV,将该PV加到VG中,然后再进行①中的步骤

接下来来说一下如何缩减VG、LV的大小、如何移除安全的移除硬盘和快照卷的使用

一般生产环境中,基本不会出现缩减VG或者LV的情况,因为这会对数据带来很大的安全隐患,但是如果你遇到需要缩减VG或者LV的情况,那么下边这些操作则是需要你来掌握的。

如下图所示:

一、当我们需要扩展LVM下的磁盘空间大小(即文件系统大小)时,首先需要确定VG中是否还有足够空间进行扩展,如果空间不足则需要先通过添加PV的方式扩展VG,然后通过lvextend扩展LV的大小,最后通过resize2fs扩展文件大小。

二、当我们需要缩减LVM下的磁盘空间大小(即文件系统大小)时,首先需要确定我们要缩减多大空间(但是至少能容纳原有所有文件),然后通过e2fsck卸载文件系统并强制检测,接着通过resize2fs缩减文件系统大小,最后通过lvrecude缩减LV的大小。

总结之:LVM硬盘管理(二)_第1张图片

详细步骤:

 

一、缩减VG

1、首先要确定要移除的哪个PV

2、将此PV上的数据转移到该VG上的其他PV上:pvmove 

3、从卷组中将此PV移除 vgreduce VG_NAME PV_NAME

4、移除成功

示例:我的sdd硬盘需要另作他用,需要将sdd硬盘从LVM系统中卸载。

1、将sdd1上的数据转移到sdb2上

pvmove /dev/sdd1 /dev/sdb2       如果不指定转移到特定的PV上,则pvmove /dev/sdd1,系统会自行决定转移数据到该VG下的其他PV上

总结之:LVM硬盘管理(二)_第2张图片

2、从VG中移除PV

vgreduce Datalvm /dev/sdd1  使用pvs可以查看PV的简单信息,可以看到sdd1已经从Datalvm卷组中移除。

总结之:LVM硬盘管理(二)_第3张图片

3、删除PV

pvremove /dev/sdd1  再次使用pvs查看PV,发现sdd1已经不再是PV,接着你就可以将sdd硬盘用作其他用途了。

总结之:LVM硬盘管理(二)_第4张图片

二、缩减LV

1、确定缩减为多大的空间?前提:至少能容纳原有的所有数据

2、卸载并强行检测文件系统:e2fsck –f VG_NAME

3、调整文件系统大小:resize2fs /path/to/device SIZE

4、缩减LV大小:lvreduce -L [-]SIZE /path/to/lv

示例:将Mydata逻辑卷缩减到8G

1、为了演示缩减LV是否会对文件产生损坏效果,我们先复制一个文件到我们的LV中。

mount /dev/Datalvm/Mydata /data   #如果没有挂载就挂载到/data目录下

cp /etc/fstab /data

2、卸载LV并检测文件系统

总结之:LVM硬盘管理(二)_第5张图片

3、调整文件系统大小到8G

resize2fs /dev/Datalvm/Mydata 8G

p_w_picpath

4、(可省略)挂载文件系统,并查看大小,确认是否调整成功,然后卸载文件系统

mount /dev/Datalvm/Mydata /data

df –h

总结之:LVM硬盘管理(二)_第6张图片

umount /data  #卸载文件系统

5、缩减LV大小(有风险

总结之:LVM硬盘管理(二)_第7张图片

6、挂载文件系统,并查看大小,查看文件是否损坏

mount /dev/Datalvm/Mydata /data

df –h

cat /data/fstab

总结之:LVM硬盘管理(二)_第8张图片

文件未被损坏,缩减成功

三、快照卷

我们都知道Vmware有一个非常好用的功能,那就是快照。在我们需要进行一些危险的操作时,先给我们的虚拟机创建一个快照,然后你就可以随意在虚拟机中进行操作了。一旦操作过程中出现了问题怎么办,恢复快照卷就OK了,虚拟机就会恢复到我们创建快照卷时的那个状态。

在LVM中也有一个快照功能,那就是快照卷。 快照卷是一个特殊的逻辑卷,它必须与我们需要创建快照卷的逻辑卷在同一个卷组中。创建快照时,它会对逻辑卷进行准确的拷贝,保证源卷与创造快照卷时的数据完全一致。快照只有在与源卷中的数据不同时,才会消耗空间,所以一般快照卷都会很小。如果我们在创建了快照卷之后修改源卷中的数据,快照卷会将旧的数据复制到快照中。如果我们需要对源卷中的数据进行备份、临时复制或者其他的一些操作,快照就是一个非常好的选择。

创建快照卷需要注意的问题:

1、由于数据缓存的存在,在创建快照时,需要先将缓存刷新到源卷中。

2、快照卷的生命周期为整个数据操作时长,在这段时长内,源卷中的数据增长量不能超过快照卷的大小。

3、快照卷根据你的需求决定是否是只读的

4、快照卷与源卷在同一个卷组中

创建快照卷

lvcreate –L Size  -s  -p 权限(r  只读) –n  快照卷名称 源卷

lvcreate –L 500M –s –p r –n Mydata_snap /dev/Datalvm/Mydata

p_w_picpath

这样快照卷就创建好了。

我们把快照卷挂载上看下快照卷中的文件

mkdir /snap

mount /dev/Datalvm/Mydata_snap /snap

ls /snap

总结之:LVM硬盘管理(二)_第9张图片

我们看一下快照卷中的fstab文件,与源卷中的文件一模一样

总结之:LVM硬盘管理(二)_第10张图片

接着我们修改一下源卷Mydata中的fstab文件,在文件最后添加一行”This is a test line.”

echo “This is a test line.”>>/data/fstab

tail –5 /data/fstab

总结之:LVM硬盘管理(二)_第11张图片

然后再看一下快照卷Mydata_snap中的fstab文件

tail –5 /snap/fstab

总结之:LVM硬盘管理(二)_第12张图片

快照卷中的文件并没有被修改。

由此,我们可以使用快照卷进行一下一些操作:

1、备份源卷中的文件

创建完快照卷之后,备份快照卷中的文件即可

2、进行软件测试

假如我们的源卷中安装了软件,软件需要升级,那么我们先创建一个快照卷,将升级软件安装到快照卷中,并在快照卷中测试和验证软件。如果发现测试问题,只需要删除快照卷即可;如果测试没有问题,那么可以直接将快照卷中的数据恢复到源卷中。

总结:LVM是linux中非常重要的磁盘管理工具,快照卷的存在也会使我们的工作有更多的操作性。最后,谢谢大家的围观,如果文中有什么错误,希望大家指出。祝大家有个愉快的假期~~