磁盘管理之逻辑卷(转载)

浮沉一梦 浮沉一梦     2022-08-02     624

关键词:

写在前面:

        本文一共分个部分来讲解逻辑卷的一些操作及注意事项,其中第一部分介绍了什么是逻辑卷,逻辑卷的实现原理是什么,还有包括其中的一些名词解释;第二部分主 要是介绍怎么创建,删除,和增加物理卷(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,下面我们就这三个步骤通过实验的方式来具体了解一下

 

二、PV管理

 

磁盘分区

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): p
 
Disk /dev/sda: 107.4 GB, 107374182400 bytes
255 heads, 63 sectors/track, 13054 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk 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
#将其保存退出查看其状态是否被加载到内存
[[email protected] ~]# lsblk 
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0     11:0    1  3.7G  0 rom  /media/CentOS_6.8_Final
sda      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 后面可以跟上多个参数
[[email protected] ~]# 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
#列出已存在的物理卷
  [[email protected] ~]# 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存在的状态
[[email protected] ~]# 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
#删除物理卷
[[email protected] ~]# 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]
 
  [[email protected] ~]# pvremove /dev/sdb1
  Labels on physical volume "/dev/sdb1" successfully wiped
 
[[email protected] ~]# 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管理

 

我们先看看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中添加新的PV
 
vgmerge:用于合并巻组。待合并的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
[[email protected] ~]# vgcreate vg1 /dev/sda6 
  Volume group "vg1" successfully created
  PV         VG   Fmt  Attr PSize  PFree 
  /dev/sda6  vg1  lvm2 a--u 10.00g 10.00g
[[email protected] ~]# 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卷)
[[email protected] ~]# vgextend vg1 /dev/sdb1 /dev/sdc1
  Physical volume "/dev/sdb1" successfully created
  Volume group "vg1" successfully extended
  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
[[email protected] ~]# vgreduce vg1 /dev/sdc1
  Removed "/dev/sdc1" from volume group "vg1"
  VG   #PV #LV #SN Attr   VSize  VFree 
  vg1    2   0   0 wz--n- 29.99g 29.99g
[[email protected] ~]# 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
[[email protected] ~]# vgrename vg1 vg0
  Volume group "vg1" successfully renamed to "vg0"
  VG   #PV #LV #SN Attr   VSize  VFree 
  vg0    3   0   0 wz--n- 49.98g 49.98g

ps:可以创建多个逻辑卷组,在删除物理卷来调节逻辑卷的缩减的时候要注意最后一个物理卷是不能删除的。

 

四、LV管理

LV管理命令如下

1
2
3
4
5
6
7
8
lvdisplay:显示LV的属性 
lvscan:查找系统现有LV
lvcreate:创建LV
lvdata:显示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
  VG   #PV #LV #SN Attr   VSize  VFree 
  vg0    3   0   0 wz--n- 49.98g 49.98g
[[email protected] ~]# lvcreate -L 10G -n lv1 vg0
  Logical volume "lv1" created.
[[email protected] ~]# 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
#赋予文件系统
[[email protected] ~]# mkfs.ext4 /dev/vg0/lv1 
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
655360 inodes, 2621440 blocks
131072 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2684354560
80 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
    32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632
 
Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
 
This filesystem will be automatically checked every 23 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
#挂载,这里采用的是临时挂载,一旦系统重启将会失效,所以建议挂载将其写进挂载文件/etc/fstab
#写进挂载文件格式为:
#/dev/vg0/lv1        /mysqlcache                         ext4  defaults     0 0  
 
[[email protected] ~]# mkdir /mysqlcache
[[email protected] ~]# mount /dev/vg0/lv1 /mysqlcache/
[[email protected] ~]# mount |grep mysqlcache
/dev/mapper/vg0-lv1 on /mysqlcache type ext4 (rw)
/dev/mapper/vg0-lv1 on /mysqlcache type ext4 (rw)
[[email protected]tos6 ~]# df -hT
Filesystem          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
[[email protected] mysqlcache]# df -hT|grep mysqlcache
/dev/mapper/vg0-lv1 ext4     9.8G  7.9G  1.4G  86% /mysqlcache
 
[[email protected] mysqlcache]# ll -h
total 7.9G
-rw-r--r--.   1 root root 7.9G Jul 28 09:46 20160831.file
drwxr-xr-x. 123 root root  12K Jul 28 09:42 etc
drwx------.   2 root root  16K Jul 28 08:29 lost+found

在线扩容一共两个步骤

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#  第一步是扩展物理边界 
[[email protected] 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.
 # 第二步是扩展逻辑边界
[[email protected] 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 required
old desc_blocks = 1, new_desc_blocks = 2
Performing an on-line resize of /dev/vg0/lv1 to 5242880 (4k) blocks.
The filesystem on /dev/vg0/lv1 is now 5242880 blocks long.
 
[[email protected] 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
#同样第一步还是扩展物理边界,只是在这里我直接指定将当前空间扩容至多大
[[email protected] 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.
#扩展逻辑边界
 [[email protected] 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 required
old desc_blocks = 2, new_desc_blocks = 2
Performing an on-line resize of /dev/vg0/lv1 to 5505024 (4k) blocks.
The filesystem on /dev/vg0/lv1 is now 5505024 blocks long.
 
[[email protected] mysqlcache]# df -hT
Filesystem          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
[[email protected] 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
[[email protected] mysqlcache]# vgs
  VG   #PV #LV #SN Attr   VSize  VFree 
  vg0    4   1   0 wz--n- 69.98g 19.99g
 
[[email protected] 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 required
old desc_blocks = 4, new_desc_blocks = 5
Performing 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.
 
[[email protected] mysqlcache]# df -hT
Filesystem          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
 
[[email protected] 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
[[email protected] /]# umount /mysqlcache/
#第一步将挂载点卸载
[[email protected] /]# e2fsck -f /dev/vg0/lv1 
e2fsck 1.41.12 (17-May-2010)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/vg0/lv1: 2530/4587520 files (0.1% non-contiguous), 2387412/18343936 blocks
#第二部强制检测此逻辑卷的文件系统
[[email protected] /]# resize2fs /dev/vg0/lv1 5G
resize2fs 1.41.12 (17-May-2010)
resize2fs: New size smaller than minimum (2178747)
#第三步缩减逻辑边界
[[email protected] /]# 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.
  #第四部缩减物理边界
  LV   VG   Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv1  vg0  -wi-a----- 5.00g
  #到这里貌似已近缩减成功那我们再将其挂起在到挂载点试试
  [[email protected] /]# 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
[[email protected] ~]# df -hT
Filesystem          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做快照
   
[[email protected] ~]# ll /mnt/lv1
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.txt
drwx------. 2 root root 16384 Jul 28 11:49 lost+found
#lv1逻辑卷挂载点下有三个文件
 
 
 
[[email protected] ~]# lvcreate -s -n lv1_snap -L 10G -p r /dev/vg0/lv1 
  Logical volume "lv1_snap" created.
#创建快照逻辑卷
   
  [[email protected] ~]# mount /dev/vg0/lv1_snap /mnt/lv1_snap/
mount: block device /dev/mapper/vg0-lv1_snap is write-protected, mounting read-only
#挂载快照逻辑卷
 
[[email protected] ~]# 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.txt
drwx------. 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
[[email protected] ~]# cd /mnt/lv1
[[email protected] lv1]# ls
1.txt  2.txt  3.txt  lost+found
[[email protected] lv1]# rm -fr 1.txt 
#删除一个文件测试
[[email protected] lv1]# ll
total 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.txt
drwx------. 2 root root 16384 Jul 28 11:49 lost+found
[[email protected] 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.txt
drwx------. 2 root root 16384 Jul 28 11:49 lost+found
 
#给2.txt内添加内容
[[email protected] lv1]# dd if=/dev/zero of=/mnt/lv1/2.txt bs=10M count=1
1+0 records in
1+0 records out
10485760 bytes (10 MB) copied, 0.0653043 s, 161 MB/s
[[email protected] 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.txt
drwx------. 2 root root 16K Jul 28 11:49 lost+found
#逻辑卷内文件2.txt向文件内添加了10M的内容,我们来看看快照是否更新
[[email protected] 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.txt
drwx------. 2 root root  16K Jul 28 11:49 lost+found

总结:快照功能能将在现在创建功能的时候的数据记录下来,在当数据发生改变的时候才会将这个数据最原始也就是在创建快照功能时候的数据状态保存到快照区域,所以快照其实占用空间不大,只有逻辑卷发生改变的时候才会将其数据保存到快照区。快照恢复可以采用打包方式打包恢复,具体操作在这里就不做介绍了。

磁盘管理之逻辑卷

写在前面:      本文一共分个部分来讲解逻辑卷的一些操作及注意事项,其中第一部分介绍了什么是逻辑卷,逻辑卷的实现原理是什么,还有包括其中的一些名词解释;第二部分主要是介绍怎么创建,删除... 查看详情

linux入门之磁盘管理lvm逻辑卷案例

Linux入门之磁盘管理(9)LVM逻辑卷案例案例介绍阶段(1):创建一个由两个物理卷组成的大小未20G的卷组myvg,要求其PE大小为16M;而在此卷组中创建一个大小未5G的逻辑卷lvtest,此逻辑卷要能在开机后自动挂载至/mnt/lvtest目录,且... 查看详情

linux入门之磁盘管理lvm逻辑卷的使用

Linux入门之磁盘管理(8)LVM逻辑卷的使用在Linux中虽然有raid来保证数据的稳定以及磁盘性能的提高,但是其扩展性并不是很好,在很多生产环境中,都是数据正在使用中,在这时如果中断一段时间就会有很大的损失,因此Linux提供... 查看详情

lvm逻辑卷管理

...中,我们可能遇到过很多存储的一系列问题,比如说你有磁盘做的是RAID5,并在线上跑着数据,时时刻刻都会存取数据,但是发现在使用2个月后磁盘剩余空间不足1 查看详情

lvm逻辑卷管理

...统像卷一样伸长或缩短之故。LVM做法,将几个物理分区或磁盘,通过软件组合成为一块看起来是独立的大磁盘(VG),然后将这块大磁盘再经过分成可使用分区(LV),最终就能够挂载使用!阶段一:PV,物理卷,在把磁盘转化为... 查看详情

磁盘管理之lvm

...个或多个硬盘的分区在逻辑上集合来呈现给上层应用,对磁盘实现动态管理的机制。相对于普通的磁盘分区有很大的灵活性,使用LVM在一定程度上就可以解决普通磁盘分区带来的问题。2、专业术语   ●物理卷(PhysicalVo... 查看详情

逻辑卷管理器(lvm)

...以整合多个物理分区在一起,让这些分区看起来就像一个磁盘一样,而且,还可以在将来其他的物理分区或将其从这个LVM管理的磁盘中删除。这样可以实现磁盘空间的动态管理,相对于普通的磁盘分区有很大的灵活性,同时LVM还... 查看详情

磁盘空间的扩展与减少------逻辑卷管理器lvm

...LVM是LogicalVolumeManager(逻辑卷管理)的简写,是Linux环境下对磁盘分区进行管理的一种机制。逻辑卷管理通过将底层物理硬盘抽象封装起来,以逻辑卷的形式表现给上层系统,逻辑卷的大小可以动态调整,而且不会丢失现有数据。新... 查看详情

linux磁盘管理:lvm逻辑卷

Linux磁盘管理:LVM逻辑卷LVM简介  LVM(LogicalVolumeManager逻辑卷管理),是Linux操作系统的逻辑卷管理器。  LVM将一个或多个硬盘的分区在逻辑上集合,相当于一个大硬盘来使用,当硬盘的空间不够使用的时候,可以继... 查看详情

磁盘管理及逻辑卷管理

磁盘分区......为什么分区?.............优化I/O性能?.............实现磁盘空间配额限制?.............提高修复速度?.............隔离系统和程序?.............安装多个OS?.............采用不同文件系统分区......两种分区方式:MBR,GPT?......MBR:MasterBo... 查看详情

linux中的高级存储管理之逻辑卷管理器lvm(代码片段)

...3.LVM的拉伸1.VG容量充足时2.当VG不足时4.LVM的缩减5.LVM的LV磁盘快照6.LVM的删除7.如何移除正在使用的PV3.LVM相关命令集合前言在linux提升五中,我们介绍了关于磁盘分区等的内容。但是在生产环境中往往会出现这样的情况,在... 查看详情

逻辑卷管理和磁盘配额

逻辑卷管理和磁盘配额实验下面为大家介绍逻辑卷的管理和磁盘配额实验的操作步骤,首先在虚拟机上创建两块磁盘,在linux桌面右下角光驱的位置右键点击设置,点击添加选择硬盘,点击下一步点击选择推荐的SCSI类型,点击下... 查看详情

逻辑卷创建与磁盘配额管理

逻辑卷创建与磁盘配额管理  环境要求:在虚拟机新建两块硬盘用来创建逻辑卷,并对其进行磁盘配额管理模拟。1.创建逻辑卷先在虚拟机设置中添加两块10G的新硬盘,并重启虚拟机使新添加的硬盘生效  输入fdisk... 查看详情

逻辑卷lvm管理

逻辑卷为了更加灵活的使用我们的磁盘存储空间传统磁盘空间分区大小固定且不能修改,一般企业中只有增大需求,一般没有缩小的需求。目的:使用逻辑卷可以将磁盘分区变大变小。tips:分区采用xfs文件系统,分区只能变大... 查看详情

逻辑卷管理和磁盘配额(代码片段)

逻辑卷管理和磁盘配额首先在虚拟机上添加两块硬盘,init6重启识别后,我们对它们进行分区,输出命令后会出现“Command(mforhelp)”,在里面进行分区设置然后继续对/dev/sdc进行分区,步骤一样,分区完成后fdisk–l查看下分区成功... 查看详情

lvm逻辑卷管理

它是Linux环境下对磁盘分区进行管理的一种机制解释:LVM是逻辑盘卷管理(LogicalVolumeManager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。通... 查看详情

使用逻辑卷管理灵活储存

...lvm定义Lvm是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。将磁盘分区处理成物理卷(pv),再将物理卷变成一个整块的卷组(voilmegroup,vg)形成一个储存池。然后就可以在卷组随意创建lvm(逻辑卷组),... 查看详情

lvm逻辑卷创建及扩展(代码片段)

...M逻辑卷管理:逻辑卷管理LVM是linxu系统中比较重要的一种磁盘管理机制,管理员利用LVM可以在磁盘不用重新分区的情况下动态调整文件系统的大小,并且利用LVM管理的文件系统可以跨越磁盘。当服务器添加了新的磁盘后,管理员... 查看详情