写在前面:
        本文一共分个部分来讲解逻辑卷的一些操作及注意事项,其中第一部分介绍了什么是逻辑卷,逻辑卷的实现原理是什么,还有包括其中的一些名词解释;第二部分主 要是介绍怎么创建,删除,和增加物理卷(PV);第三部分是介绍怎么创建,删除,扩展,缩减卷组;第四部分主要是介绍逻辑卷的一些操作,其中包括逻辑卷的 创建,删除,挂载,在线扩容,缩减。第五部分是介绍关于LVM的快照功能及实现。实验操作是在centos6.8操作系统上完成,如有补充,或建议请尽情 的揉虐我的留言区。
逻 辑卷是一种通过软件来组织一个或多个底层硬件为一个抽象的逻辑设备的一种逻辑方案。通过将一个或多个磁盘分区整合成一个整块的卷组,形成一个存储池子,通 过在卷组上创建逻辑卷组,并进一步在逻辑卷组上创建文件系统,可以方便的来调整存储卷组的大小,并且可以对磁盘存储按照组的方式进行命名,管理,分配!与 直接使用物理存储相比较,在管理上逻辑卷提供了更好的灵活性,不会受限于物理磁盘的大小。
拿
一个容易理解的例子来比较,就像你现在有两个橙子,有三个小朋友都想吃这个橙子,但是因为三个小朋友的年龄阶段都不一样,其中年龄最大的一个小朋友一次就
能吃差不多一个橙子的三分之二,其他两个小朋友年龄比较小,不能确定吃多少,这个时候你怎么将这两个橙子均匀的分配出去?
其实可以将这两个橙子切成多个块,让他们然后装在盘子里面然他们自己能吃多少就去拿。
而逻辑卷也正是这样一种类似的方法,将一些零碎的磁盘进行分区合并成一个或多个大的磁盘(卷组),然后根据需求将这个磁盘划分出去,最值得一提的是这些小分区(逻辑卷)是支持动态扩容和缩小的。
下面是我画的一个PV VG LV 之间的一个关系图
上面我们用一个小孩子吃橙子的例子,相信差不多读者对LVM能够有一个比较清晰理解,下面我们一起来了解一下要学习LVM就必须要知道的术语:
PV 类似于磁盘分区具有有同样功能的设备,是LVM基本的存储逻辑快,但是和基本的物理存储不同的是包含有自己与LVM相关的参数。
   物
理卷是LVM最底层的概念,是LVM逻辑存储块,物理卷与磁盘分区是一个逻辑对应关系,打个比方 
小孩子玩的圆形积木在没有附加工具是不能固定组合的,但是方形却有组合功能,我们可以假设普通分区就是一个圆形,而物理卷就是一个方形,LVM提供了命令
工具可以将分区装换为物理卷可以生成卷组。
VG 类似于非逻辑卷系统中的物理磁盘,由一个或多个物理卷(PV)组成,可以创建一个或多个卷组。
LV 相当于磁盘分区,逻辑卷建立在卷组之上,在逻辑卷之上可以建立文件系统。可在线扩展或缩小逻辑卷大小。
物理块 PE 在 基本数据存储最小的单位是block(块儿)不过在LVM中数据最小的存储单位是PE与block功能一样!(每一个物理卷PV被划分成PE基本单元,唯 一的编号的PE是可以被LVM选址的最小单元,PE大小是可以配置的默认是4M,物理卷的组成是由等同大小的PE组成。)
逻辑块 LE 逻辑卷也被划分为可寻址的基本单位,称为LE,在同一卷组中。LE的大小和PE是相同的,并且一对一。
逻辑卷创建一个三个步骤!初始化物理卷,创建VG组,创建LV,下面我们就这三个步骤通过实验的方式来具体了解一下
磁盘分区
| 
 1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
21 
22 
23 
24 
25 
26 
27 
28 
29 
30 
31 
32 
33 
34 
35 
36 
37 
 | 
#创建磁盘分区sda6,并更改其分区类型为8e(LVM逻辑卷分区类型ID)Command (m for help): pDisk /dev/sda: 107.4 GB, 107374182400 bytes255 heads, 63 sectors/track, 13054 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0x0005d6ee   Device Boot      Start         End      Blocks   Id  System/dev/sda1   *           1        5100    40960000   83  Linux/dev/sda2            5100        6375    10240000   83  Linux/dev/sda3            6375        7650    10240000   83  Linux/dev/sda4            7650       13055    43416576    5  Extended/dev/sda5            7650        7905     2048000   82  Linux swap / Solaris/dev/sda6            7905        9210    10488221+  8e  Linux LVM#将其保存退出查看其状态是否被加载到内存[root@centos6 ~]# lsblk NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTsr0     11:0    1  3.7G  0 rom  /media/CentOS_6.8_Finalsda      8:0    0  100G  0 disk ├─sda1   8:1    0 39.1G  0 part /boot├─sda2   8:2    0  9.8G  0 part /├─sda3   8:3    0  9.8G  0 part /testdir├─sda4   8:4    0    1K  0 part ├─sda5   8:5    0    2G  0 part [SWAP]└─sda6   8:6    0   10G  0 part sdb      8:16   0   20G  0 disk └─sdb1   8:17   0   20G  0 part sdc      8:32   0   20G  0 disk └─sdc1   8:33   0   20G  0 part sdd      8:48   0   20G  0 disk sde      8:64   0   20G  0 disk #在这里我在sda上分了一个sda6分区,分区大小为10G ;在sdb、sdc上分别创建了一个分区为sdb1,sdc1,分区大小各为20G,这里就不一一展示出来了。#有关磁盘创建的方法请参考博文:http://snowbamboo1.blog.51cto.com/9291858/1842290 | 
创建、删除、查看物理卷
| 
 1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
21 
22 
23 
24 
25 
26 
27 
28 
29 
30 
31 
32 
33 
34 
35 
36 
37 
38 
39 
40 
41 
42 
43 
44 
45 
46 
47 
48 
49 
50 
51 
52 
53 
54 
55 
56 
57 
58 
59 
60 
61 
62 
 | 
#创建PV,使用 pvcreate 后面可以跟上多个参数[root@centos6 ~]# pvcreate /dev/sda6 /dev/sdb1 /dev/sdc1   Physical volume "/dev/sda6" successfully created  Physical volume "/dev/sdb1" successfully created  Physical volume "/dev/sdc1" successfully created#列出已存在的物理卷  [root@centos6 ~]# pvscan   PV /dev/sda6                      lvm2 [10.00 GiB]  PV /dev/sdb1                      lvm2 [19.99 GiB]  PV /dev/sdc1                      lvm2 [19.99 GiB]  Total: 3 [49.99 GiB] / in use: 0 [0   ] / in no VG: 3 [49.9 GiB]#还可以使用pvdisplay查看每个pv存在的状态[root@centos6 ~]# pvdisplay   "/dev/sda6" is a new physical volume of "10.00 GiB"  --- NEW Physical volume ---  PV Name               /dev/sda6  VG Name                 PV Size               10.00 GiB  Allocatable           NO  PE Size               0     Total PE              0  Free PE               0  Allocated PE          0  PV UUID               NvX7sh-h1O9-twG9-HFsM-WfuJ-9iLa-lYWls0      "/dev/sdb1" is a new physical volume of "19.99 GiB"  --- NEW Physical volume ---  PV Name               /dev/sdb1  VG Name                 PV Size               19.99 GiB  Allocatable           NO  PE Size               0     Total PE              0  Free PE               0  Allocated PE          0  PV UUID               hkMNjQ-cZwO-HAW4-xCNx-V0eC-iPiU-NuCaDQ      "/dev/sdc1" is a new physical volume of "19.99 GiB"  --- NEW Physical volume ---  PV Name               /dev/sdc1  VG Name                 PV Size               19.99 GiB  Allocatable           NO  PE Size               0     Total PE              0  Free PE               0  Allocated PE          0  PV UUID               KbVLO6-oFl2-pqN6-5u7a-q0Yb-e9qI-Yx6drd#删除物理卷[root@centos6 ~]# pvscan   PV /dev/sda6                      lvm2 [10.00 GiB]  PV /dev/sdb1                      lvm2 [19.99 GiB]  PV /dev/sdc1                      lvm2 [19.99 GiB]  Total: 3 [49.99 GiB] / in use: 0 [0   ] / in no VG: 3 [49.99 GiB]  [root@centos6 ~]# pvremove /dev/sdb1  Labels on physical volume "/dev/sdb1" successfully wiped[root@centos6 ~]# pvscan   PV /dev/sda6                      lvm2 [10.00 GiB]  PV /dev/sdc1                      lvm2 [19.99 GiB]  Total: 2 [30.00 GiB] / in use: 0 [0   ] / in no VG: 2 [30.00 GiB] | 
物理卷相关管理命令如下
| 
 1 
2 
3 
4 
 | 
pvcreate:将物理硬盘分区初始化为物理卷pvdisplay:显示目前系统上存在的PV状态pvremove:删除指定的一个存在的物理卷pvscan:扫描系统中所有硬盘,列出已存在的物理卷列表 | 
我们先看看VG有哪些管理命令
| 
 1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
21 
22 
23 
24 
 | 
vgdisplay:显示VG巻组属性  vgscan:查找系统现有VG巻组 vgcreate:创建VG巻组(在VG上初始化VGDA)   -l:卷组上允许创建的最大逻辑卷数;    -p:卷组中允许添加的最大物理卷数;    -s:卷组上的物理卷的PE大小    vgchange:改变VG巻组属性   -a:,--available{y|n}:在操作VG时,控制一个VG的可使用性,换句话说控制一个VG能否被系统内核识  别。   -x,--allocation{y|n}:控制一个VG能否被扩充或者缩减(控制一个VG内的PV能否被分配)。 vgextend:用于向VG中添加新的PVvgmerge:用于合并巻组。待合并的VG必须处于非活动状态。  vgsplit:用于拆分已经存在的VG,VG必须处于活动状态。vgremove:用于删除VG,要求待删除的VG必须处于非激活状态。vgrename:用于重命名VG,不要求VG处于非激活状态。vgreduce: 命令用于通过删除LVM卷组中的物理卷来减少卷组容量,但是不能删除LVM卷组中剩余的最后一个物理卷 | 
创建VG
| 
 1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
 | 
[root@centos6 ~]# vgcreate vg1 /dev/sda6   Volume group "vg1" successfully created[root@centos6 ~]# pvs  PV         VG   Fmt  Attr PSize  PFree   /dev/sda6  vg1  lvm2 a--u 10.00g 10.00g[root@centos6 ~]# pvdisplay   --- Physical volume ---  PV Name               /dev/sda6  VG Name               vg1  PV Size               10.00 GiB / not usable 2.40 MiB  Allocatable           yes   PE Size               4.00 MiB  Total PE              2560  Free PE               2560  Allocated PE          0  PV UUID               9qkx4V-kfIT-eJ1x-2WMZ-qNzf-2KL7-FTyaWk | 
VG添加PV
| 
 1 
2 
3 
4 
5 
6 
7 
 | 
#将分区sdb1、sdc1加入卷组vg1,后面可以跟上多个参数(pv卷)[root@centos6 ~]# vgextend vg1 /dev/sdb1 /dev/sdc1  Physical volume "/dev/sdb1" successfully created  Volume group "vg1" successfully extended[root@centos6 ~]# vgs  VG   #PV #LV #SN Attr   VSize  VFree   vg1    3   0   0 wz--n- 49.98g 49.98g | 
VC删除PV
| 
 1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
 | 
[root@centos6 ~]# vgreduce vg1 /dev/sdc1  Removed "/dev/sdc1" from volume group "vg1"[root@centos6 ~]# vgs  VG   #PV #LV #SN Attr   VSize  VFree   vg1    2   0   0 wz--n- 29.99g 29.99g[root@centos6 ~]# pvscan  PV /dev/sda6   VG vg1             lvm2 [10.00 GiB / 10.00 GiB free]  PV /dev/sdb1   VG vg1             lvm2 [19.99 GiB / 19.99 GiB free]  PV /dev/sdc1                      lvm2 [19.99 GiB]  Total: 3 [49.99 GiB] / in use: 2 [29.99 GiB] / in no VG: 1 [19.99 GiB] | 
重命名VG名
| 
 1 
2 
3 
4 
5 
 | 
[root@centos6 ~]# vgrename vg1 vg0  Volume group "vg1" successfully renamed to "vg0"[root@centos6 ~]# vgs  VG   #PV #LV #SN Attr   VSize  VFree   vg0    3   0   0 wz--n- 49.98g 49.98g | 
ps:可以创建多个逻辑卷组,在删除物理卷来调节逻辑卷的缩减的时候要注意最后一个物理卷是不能删除的。
LV管理命令如下
| 
 1 
2 
3 
4 
5 
6 
7 
8 
 | 
lvdisplay:显示LV的属性 lvscan:查找系统现有LVlvcreate:创建LVlvdata:显示LV上的LVDA信息 lvchange:改变LV属性lvextend:添加容量lvreduce:减少容量lvresize:容量大小调整 | 
创建LV-选项
| 
 1 
2 
3 
4 
5 
 | 
lvcreate(选项) 卷组名|路径 逻辑卷路径#选项:-L 直接指定逻辑卷容量大小 单位可以是“kKmMgGtT”字节 +-l  指定多少个卷组中的PE创建逻辑卷。(PE容量在创建卷组的时候就已经指定)-n 指定逻辑卷 新建逻辑卷时需要使用-n选项 | 
创建LV-实例
| 
 1 
2 
3 
4 
5 
6 
7 
8 
 | 
[root@centos6 ~]# vgs  VG   #PV #LV #SN Attr   VSize  VFree   vg0    3   0   0 wz--n- 49.98g 49.98g[root@centos6 ~]# lvs[root@centos6 ~]# lvcreate -L 10G -n lv1 vg0  Logical volume "lv1" created.[root@centos6 ~]# lvscan   ACTIVE            ‘/dev/vg0/lv1‘ [10.00 GiB] inherit | 
到目前为止逻辑卷创建的基本步骤就已经完成了,接下来我们给这个逻辑卷一个文件系统并挂载到目录
| 
 1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
21 
22 
23 
24 
25 
26 
27 
28 
29 
30 
31 
32 
33 
34 
35 
36 
37 
38 
39 
40 
41 
42 
 | 
#赋予文件系统[root@centos6 ~]# mkfs.ext4 /dev/vg0/lv1 mke2fs 1.41.12 (17-May-2010)Filesystem label=OS type: LinuxBlock size=4096 (log=2)Fragment size=4096 (log=2)Stride=0 blocks, Stripe width=0 blocks655360 inodes, 2621440 blocks131072 blocks (5.00%) reserved for the super userFirst data block=0Maximum filesystem blocks=268435456080 block groups32768 blocks per group, 32768 fragments per group8192 inodes per groupSuperblock backups stored on blocks:     32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632Writing inode tables: done                            Creating journal (32768 blocks): doneWriting superblocks and filesystem accounting information: doneThis filesystem will be automatically checked every 23 mounts or180 days, whichever comes first.  Use tune2fs -c or -i to override.#挂载,这里采用的是临时挂载,一旦系统重启将会失效,所以建议挂载将其写进挂载文件/etc/fstab#写进挂载文件格式为:#/dev/vg0/lv1        /mysqlcache                         ext4  defaults     0 0  [root@centos6 ~]# mkdir /mysqlcache[root@centos6 ~]# mount /dev/vg0/lv1 /mysqlcache/[root@centos6 ~]# mount |grep mysqlcache/dev/mapper/vg0-lv1 on /mysqlcache type ext4 (rw)/dev/mapper/vg0-lv1 on /mysqlcache type ext4 (rw)[root@centos6 ~]# [root@centos6 ~]# df -hTFilesystem          Type     Size  Used Avail Use% Mounted on/dev/sda2           ext4     9.5G  4.2G  4.9G  46% /tmpfs               tmpfs    491M   76K  491M   1% /dev/shm/dev/sda1           ext4      39G   80M   37G   1% /boot/dev/sda3           ext4     9.5G   22M  9.0G   1% /testdir/dev/sr0            iso9660  3.7G  3.7G     0 100% /media/CentOS_6.8_Final/dev/mapper/vg0-lv1 ext4     9.8G   23M  9.2G   1% /mysqlcache | 
我们在生产环境中可能会碰到某个目录专门来存放一些实时性的数据,而且数据又不能删除,当数据到达一定的量,存储空间不够时,这个时候怎么办?那么逻辑卷的优点就凸显出来了,逻辑卷支持在线扩容,不影响数据的完整性。
下面来看看逻辑卷的最值得一提的功能在线扩容和缩减(注意缩减必须要umount,所以不属于在线缩减)
在线扩容
在这里写了一个较大的文件来模拟这个挂载点的存储空间快要用尽,需要进行扩容,我们先扩容10个G,扩容的时候要注意,卷组一
定要还有空间,如果没有先扩容卷组
| 
 1 
2 
3 
4 
5 
6 
7 
8 
 | 
[root@centos6 mysqlcache]# df -hT|grep mysqlcache/dev/mapper/vg0-lv1 ext4     9.8G  7.9G  1.4G  86% /mysqlcache[root@centos6 mysqlcache]# ll -htotal 7.9G-rw-r--r--.   1 root root 7.9G Jul 28 09:46 20160831.filedrwxr-xr-x. 123 root root  12K Jul 28 09:42 etcdrwx------.   2 root root  16K Jul 28 08:29 lost+found | 
在线扩容一共两个步骤
| 
 1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
 | 
#  第一步是扩展物理边界 [root@centos6 mysqlcache]# lvextend -L  +10G /dev/vg0/lv1   Size of logical volume vg0/lv1 changed from 10.00 GiB (2560 extents) to 20.00 GiB (5120 extents).  Logical volume lv1 successfully resized. # 第二步是扩展逻辑边界[root@centos6 mysqlcache]# resize2fs -p /dev/vg0/lv1 resize2fs 1.41.12 (17-May-2010)Filesystem at /dev/vg0/lv1 is mounted on /mysqlcache; on-line resizing requiredold desc_blocks = 1, new_desc_blocks = 2Performing an on-line resize of /dev/vg0/lv1 to 5242880 (4k) blocks.The filesystem on /dev/vg0/lv1 is now 5242880 blocks long.[root@centos6 mysqlcache]# df -hT |grep mysqlcache/dev/mapper/vg0-lv1 ext4      20G  7.9G   11G  43% /mysqlcache | 
ps:在上面我们看到扩容的时候是在当前基础上再扩容扩大多少空间,使用的是 “+多大的空间”,
我们还可以直接指定空间直接扩容到多大,下面我们看看是怎么做的吧
| 
 1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
21 
 | 
#同样第一步还是扩展物理边界,只是在这里我直接指定将当前空间扩容至多大[root@centos6 mysqlcache]# lvextend -L 21G /dev/vg0/lv1   Size of logical volume vg0/lv1 changed from 20.00 GiB (5120 extents) to 21.00 GiB (5376 extents).  Logical volume lv1 successfully resized.#扩展逻辑边界 [root@centos6 mysqlcache]# resize2fs -p /dev/vg0/lv1 resize2fs 1.41.12 (17-May-2010)Filesystem at /dev/vg0/lv1 is mounted on /mysqlcache; on-line resizing requiredold desc_blocks = 2, new_desc_blocks = 2Performing an on-line resize of /dev/vg0/lv1 to 5505024 (4k) blocks.The filesystem on /dev/vg0/lv1 is now 5505024 blocks long.[root@centos6 mysqlcache]# df -hTFilesystem          Type     Size  Used Avail Use% Mounted on/dev/sda2           ext4     9.5G  4.2G  4.9G  46% /tmpfs               tmpfs    491M   76K  491M   1% /dev/shm/dev/sda1           ext4      39G   80M   37G   1% /boot/dev/sda3           ext4     9.5G   22M  9.0G   1% /testdir/dev/sr0            iso9660  3.7G  3.7G     0 100% /media/CentOS_6.8_Final/dev/mapper/vg0-lv1 ext4      21G  7.9G   12G  41% /mysqlcache[root@centos6 mysqlcache]# | 
当我们目前想要将所有vg空间都扩容至逻辑卷,可以使用百分比扩展至空间的大小,使用扩容的命令加上 -r -l 选项,具体语法如下
| 
 1 
 | 
lvextend -r -l +100%FREE 逻辑卷路径 | 
我又添加了一分区到卷组中,大小为20G 到目前为止卷组大概差不多70G
| 
 1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
21 
22 
23 
24 
25 
26 
 | 
[root@centos6 mysqlcache]# vgs  VG   #PV #LV #SN Attr   VSize  VFree   vg0    4   1   0 wz--n- 69.98g 19.99g[root@centos6 mysqlcache]# lvextend -r -l +100%FREE /dev/vg0/lv1   Size of logical volume vg0/lv1 changed from 49.98 GiB (12796 extents) to 69.98 GiB (17914 extents).  Logical volume lv1 successfully resized.resize2fs 1.41.12 (17-May-2010)Filesystem at /dev/mapper/vg0-lv1 is mounted on /mysqlcache; on-line resizing requiredold desc_blocks = 4, new_desc_blocks = 5Performing an on-line resize of /dev/mapper/vg0-lv1 to 18343936 (4k) blocks.The filesystem on /dev/mapper/vg0-lv1 is now 18343936 blocks long.[root@centos6 mysqlcache]# df -hTFilesystem          Type     Size  Used Avail Use% Mounted on/dev/sda2           ext4     9.5G  4.2G  4.9G  46% /tmpfs               tmpfs    491M   76K  491M   1% /dev/shm/dev/sda1           ext4      39G   80M   37G   1% /boot/dev/sda3           ext4     9.5G   22M  9.0G   1% /testdir/dev/sr0            iso9660  3.7G  3.7G     0 100% /media/CentOS_6.8_Final/dev/mapper/vg0-lv1 ext4      69G  7.9G   58G  13% /mysqlcache[root@centos6 mysqlcache]# vgs  VG   #PV #LV #SN Attr   VSize  VFree  vg0    4   1   0 wz--n- 69.98g    0   #我们这里看到vg空间已近全划分出去 | 
在线缩减
当 我们这个目录不在需要这么大的空间的时候,就需要将空间释放一些出来到卷组,供其他有需要的使用,下面来缩减一下空间,这里需要注意的是逻辑卷是不能支持 在线缩减的,所以在使用缩减的时候一定确认清楚缩小的空间是否大于现在已近占用的空间,而且缩减的步骤一定要按照顺序进行缩减,错了一个步骤都会失败。
| 
 1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
21 
22 
23 
24 
25 
26 
27 
28 
29 
30 
31 
32 
 | 
[root@centos6 /]# umount /mysqlcache/#第一步将挂载点卸载[root@centos6 /]# e2fsck -f /dev/vg0/lv1 e2fsck 1.41.12 (17-May-2010)Pass 1: Checking inodes, blocks, and sizesPass 2: Checking directory structurePass 3: Checking directory connectivityPass 4: Checking reference countsPass 5: Checking group summary information/dev/vg0/lv1: 2530/4587520 files (0.1% non-contiguous), 2387412/18343936 blocks#第二部强制检测此逻辑卷的文件系统[root@centos6 /]# resize2fs /dev/vg0/lv1 5Gresize2fs 1.41.12 (17-May-2010)resize2fs: New size smaller than minimum (2178747)#第三步缩减逻辑边界[root@centos6 /]# lvreduce -L 5G /dev/vg0/lv1   WARNING: Reducing active logical volume to 5.00 GiB.  THIS MAY DESTROY YOUR DATA (filesystem etc.)Do you really want to reduce vg0/lv1? [y/n]: y  Size of logical volume vg0/lv1 changed from 69.98 GiB (17914 extents) to 5.00 GiB (1280 extents).  Logical volume lv1 successfully resized.  #第四部缩减物理边界[root@centos6 /]# lvs  LV   VG   Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert  lv1  vg0  -wi-a----- 5.00g  #到这里貌似已近缩减成功那我们再将其挂起在到挂载点试试  [root@centos6 /]# mount /dev/vg0/lv1 /mysqlcache/mount: wrong fs type, bad option, bad superblock on /dev/mapper/vg0-lv1,       missing codepage or helper program, or other error       In some cases useful info is found in syslog - try       dmesg | tail  or so     #挂载失败 | 
ps:为 什么会挂载失败,它提示超级块被损坏,什么原因,我们在缩减之前要注意哪些的事项,我们缩减步骤没有错,错在缩减之前没有查看挂载点的目录在缩减之前已近 占用了7.9G的空间,就是说,我们这里面有7.9G的文件还存在,而我们缩减的大小至5G,明显会损害文件,导致文件系统错误。解决办法就只能重新删除 逻辑卷后再创建挂载了,文件肯定找不回来了。
快照功能是将当前系统数据记录下来,在未来有所变动,便将会将变更之前的数据存放在快照区域进行保存,快照区有两部分组成,变更之前的数据和变更之后的数据。因为快照区与原本的LV共享很多PE,因此快照区与被快照区的LV必须在同一个VG上。
        下面我们通过实例来演示快照的创建及其其他一些特点。
| 
 1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
21 
22 
23 
24 
25 
26 
27 
28 
29 
30 
31 
32 
33 
34 
35 
36 
 | 
#实验场景:系统centos6.8[root@centos6 ~]# df -hTFilesystem          Type     Size  Used Avail Use% Mounted on/dev/sda2           ext4     9.5G  4.2G  4.9G  46% /tmpfs               tmpfs    491M   76K  491M   1% /dev/shm/dev/sda1           ext4      39G   80M   37G   1% /boot/dev/sda3           ext4     9.5G   22M  9.0G   1% /testdir/dev/sr0            iso9660  3.7G  3.7G     0 100% /media/CentOS_6.8_Final/dev/mapper/vg0-lv1 ext4     9.8G   23M  9.2G   1% /mnt/lv1#我现在需要将逻辑卷lv1做快照   [root@centos6 ~]# ll /mnt/lv1total 28-rw-r--r--. 1 root root   982 Jul 28 11:50 1.txt-rw-r--r--. 1 root root  1669 Jul 28 11:50 2.txt-rw-r--r--. 1 root root    47 Jul 28 11:51 3.txtdrwx------. 2 root root 16384 Jul 28 11:49 lost+found#lv1逻辑卷挂载点下有三个文件[root@centos6 ~]# lvcreate -s -n lv1_snap -L 10G -p r /dev/vg0/lv1   Logical volume "lv1_snap" created.#创建快照逻辑卷     [root@centos6 ~]# mount /dev/vg0/lv1_snap /mnt/lv1_snap/mount: block device /dev/mapper/vg0-lv1_snap is write-protected, mounting read-only#挂载快照逻辑卷[root@centos6 ~]# ll /mnt/lv1_snap/total 28-rw-r--r--. 1 root root   982 Jul 28 11:50 1.txt-rw-r--r--. 1 root root  1669 Jul 28 11:50 2.txt-rw-r--r--. 1 root root    47 Jul 28 11:51 3.txtdrwx------. 2 root root 16384 Jul 28 11:49 lost+found  #挂载后可以看到lv1下的几个文件被同步过来 | 
现在我来测试一下快照是否能够将我修改的原逻辑卷的文件保存下来
| 
 1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
21 
22 
23 
24 
25 
26 
27 
28 
29 
30 
31 
32 
33 
34 
 | 
[root@centos6 ~]# cd /mnt/lv1[root@centos6 lv1]# ls1.txt  2.txt  3.txt  lost+found[root@centos6 lv1]# rm -fr 1.txt #删除一个文件测试[root@centos6 lv1]# lltotal 24-rw-r--r--. 1 root root  1669 Jul 28 11:50 2.txt-rw-r--r--. 1 root root    47 Jul 28 11:51 3.txtdrwx------. 2 root root 16384 Jul 28 11:49 lost+found[root@centos6 lv1]# ll /mnt/lv1_snap/total 28-rw-r--r--. 1 root root   982 Jul 28 11:50 1.txt-rw-r--r--. 1 root root  1669 Jul 28 11:50 2.txt-rw-r--r--. 1 root root    47 Jul 28 11:51 3.txtdrwx------. 2 root root 16384 Jul 28 11:49 lost+found#给2.txt内添加内容[root@centos6 lv1]# dd if=/dev/zero of=/mnt/lv1/2.txt bs=10M count=11+0 records in1+0 records out10485760 bytes (10 MB) copied, 0.0653043 s, 161 MB/s[root@centos6 lv1]# ll -h total 11M-rw-r--r--. 1 root root 10M Jul 28 12:04 2.txt-rw-r--r--. 1 root root  47 Jul 28 11:51 3.txtdrwx------. 2 root root 16K Jul 28 11:49 lost+found#逻辑卷内文件2.txt向文件内添加了10M的内容,我们来看看快照是否更新[root@centos6 lv1]# ll -h /mnt/lv1_snap/total 28K-rw-r--r--. 1 root root  982 Jul 28 11:50 1.txt-rw-r--r--. 1 root root 1.7K Jul 28 11:50 2.txt-rw-r--r--. 1 root root   47 Jul 28 11:51 3.txtdrwx------. 2 root root  16K Jul 28 11:49 lost+found | 
总结:快照功能能将在现在创建功能的时候的数据记录下来,在当数据发生改变的时候才会将这个数据最原始也就是在创建快照功能时候的数据状态保存到快照区域,所以快照其实占用空间不大,只有逻辑卷发生改变的时候才会将其数据保存到快照区。快照恢复可以采用打包方式打包恢复,具体操作在这里就不做介绍了。
原文:http://www.cnblogs.com/jjzd/p/5831511.html