LVM 逻辑卷管理

LVM 逻辑卷管理

想象一个场景,某天你管理的服务器硬盘空间不足了,该怎么处理。当然是加硬盘,但若系统不允许关机,服务不能停,如何添加硬盘。此时我们可以在早期规划的时候就创建逻辑卷。逻辑卷可以在不影响系统运行的情况下弹性的扩展、压缩硬盘空间。

逻辑卷组成

如下图所示,逻辑卷的逻辑结构图,PV(physical volume)组成卷组VG(volume group),在卷组上可以创建逻辑卷LV(logical volume)。

Alt text

PV (Physical Volume)
PV 物理卷,就是硬盘或分区,和物理的硬盘有同样的功能,和普通硬盘的区别在于,它被标识为物理卷,有物理卷的管理参数,将来用它创建卷组用。

VG (Volume Group)
VG 卷组,将多个物理卷集合为一个大的逻辑硬盘,类似于没有LVM功能的硬盘,为创建逻辑卷提供硬盘空间,普通硬盘上面分配空间是通过block块进行分配,而卷组中是通过PE进行分配,PE是逻辑卷中空间分配的最小单位,默认值为4M。

LV (Logical Volume)
LV 逻辑卷,逻辑卷是在卷组的基础上将卷组分成不同大小的隔离空间,类似于非LVM中分区的概念。

逻辑卷的用途在于弹性的扩展,压缩磁盘空间。其并不具有容错能力和提高I/O性能的功能。

实验

一、 逻辑卷的创建

逻辑卷的创建步骤如下

  • 创建物理卷
  • 创建卷组
  • 创建逻辑卷
  • 创建文件系统
  • 挂载文件系统

a. 准备实验环境
本实验中使用分区来创建物理卷,实际生产环境中一般使用整块硬盘来创建物理卷,我们创建4个分区/dev/sdb1, /dev/sdb2, /dev/sdb3, /dev/sdb4, 先使用3g分区创建逻辑卷,留一个分区到后面做扩展逻辑卷使用。

创建分区, 并将分区类型调整为8e(Linux LVM)

# 使用fdisk分区
[root@zhubiaook ~]# fdisk /dev/sdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0xb0beda60.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

WARNING: DOS-compatible mode is deprecated. It'
s strongly recommended to
switch off the mode (command 'c') and change display units to
sectors (command 'u').

Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-2610, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-2610, default 2610): +2G

Command (m for help): t
Selected partition 1
Hex code (type L to list codes): 8e
Changed system type of partition 1 to 8e (Linux LVM)

。。。

Command (m for help): p

Device Boot Start End Blocks Id System
/dev/sdb1 1 262 2104483+ 8e Linux LVM
/dev/sdb2 263 524 2104515 8e Linux LVM
/dev/sdb3 525 917 3156772+ 8e Linux LVM
/dev/sdb4 918 1049 1060290 8e Linux LVM

各分区大小如下所示

[root@zhubiaook ~]# lsblk /dev/sdb
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdb 8:16 0 20G 0 disk
├─sdb1 8:17 0 2G 0 part
├─sdb2 8:18 0 2G 0 part
├─sdb3 8:19 0 3G 0 part
└─sdb4 8:20 0 1G 0 part

b. 创建物理卷
前面已提到创建物理卷的目的在于标识物理硬盘为物理卷,能用物理卷的工具进行管理,为创建卷组做准备,物理卷的管理工具有:

  • pvcreate DEVICE 创建物理卷
  • pvdispaly DEVICE 显示物理卷详细信息
  • pvs 显示物理卷汇总信息
  • pvmove DEVICE 将物理卷的数据移到其他物理卷
  • pvremove DEVICE 移除物理卷

创建物理卷

[root@zhubiaook ~]# pvcreate /dev/sdb{1,2,3}
Physical volume "/dev/sdb1" successfully created
Physical volume "/dev/sdb2" successfully created
Physical volume "/dev/sdb3" successfully created

查看物理卷的信息

# 查看系统上所有物理卷
[root@zhubiaook ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb1 lvm2 ---- 2.1g 2.1g
/dev/sdb2 lvm2 ---- 2.1g 2.1g
/dev/sdb3 lvm2 ---- 3.1g 3.1g

# 查看具体物理卷的详细信息
[root@zhubiaook ~]# pvdisplay /dev/sdb1
"/dev/sdb1" is a new physical volume of "2.01 GiB"
--- NEW Physical volume ---
PV Name /dev/sdb1
VG Name <=还不属于任何卷组
PV Size 2.01 GiB
Allocatable NO
PE Size 0 <=还未创建卷组,无PE大小
Total PE 0
Free PE 0
Allocated PE 0
PV UUID TKMuv-u9uh-caXi-e277-ABNA-fmwl-WCiLFc

c. 创建卷组
创建卷组的目的在于将逻辑卷组合成一个大的逻辑硬盘,为后面创建逻辑卷提供空间,提供空间的最小单位是PE,默认PE的大小为4M,可以自行指定其大小

管理卷组的常用工具

  • vgcreate 创建卷组
  • vgs 查看卷组汇总信息
  • vgdisplay 查看卷组详细信息
  • vgextend 扩展卷组
  • vgreduce 缩进卷组
  • vgremove 从卷组中移除物理卷

创建卷组

[root@zhubiaook ~]# vgcreate vg0 -s 8M /dev/sdb{1,2,3}
Volume group "vg0" successfully created

查看卷组信息

#查看系统上所有卷组信息
[root@zhubiaook ~]# vgs
VG #PV #LV #SN Attr VSize VFree
vg0 3 0 0 wz--n- 7.01g 7.01g

# 查看某卷组详细信息
[root@zhubiaook ~]# vgdisplay vg0
--- Volume group ---
VG Name vg0
System ID
Format lvm2
Metadata Areas 3
Metadata Sequence No 1
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 3
Act PV 3
VG Size 7.01 GiB
PE Size 8.00 MiB <=PE大小,由-s选项指定
Total PE 897 <=PE总数
Alloc PE / Size 0 / 0
Free PE / Size 897 / 7.01 GiB <=还未使用的PE数量
VG UUID 3fgkZ7-exHA-xkYq-ZeW5-r59K-3qhu-jfHaYk

此时我们再次查看物理卷的信息,将会有卷组及PE的信息生成。

[root@zhubiaook ~]# pvdisplay /dev/sdb1
--- Physical volume ---
PV Name /dev/sdb1
VG Name vg0 <=所属的卷组
PV Size 2.01 GiB / not usable 7.16 MiB
Allocatable yes
PE Size 8.00 MiB <=PE大小由卷组决定
Total PE 256 <=该物理卷提供的PE的数量
Free PE 256
Allocated PE 0
PV UUID TKMuv-u9uh-caXi-e277-ABNA-fmwl-WCiLFc

d. 创建逻辑卷
创建逻辑卷的过程类似于无LVM创建分区的过程,就是将卷组划分成不同大小的空间。
逻辑卷管理常用管理工具

  • lvcreate 创建逻辑卷或快照
  • lvs 查看逻辑卷汇总信息
  • lvdisplay 查看逻辑卷详细信息
  • lvextend 扩展逻辑卷
  • lvreduce 压缩逻辑卷

创建逻辑卷

[root@zhubiaook ~]# lvcreate -n lv0 -L 2G vg0
Logical volume "lv0" created.
[root@zhubiaook ~]# lvcreate -n lv1 -l 50%vg vg0
Logical volume "lv1" created.

查看逻辑卷信息

#查看系统中所有逻辑卷汇总信息
[root@zhubiaook ~]# vgs
VG #PV #LV #SN Attr VSize VFree
vg0 3 2 0 wz--n- 7.01g 1.51g

#查看逻辑卷详细信息
[root@zhubiaook ~]# lvdisplay
--- Logical volume ---
LV Path /dev/vg0/lv0
LV Name lv0
VG Name vg0
LV UUID 9dBKzn-FnfG-nKt9-Jp6N-eire-fMf5-1gGniO
LV Write Access read/write
LV Creation host, time zhubiaook.github.io, 2017-08-10 22:45:46 +0800
LV Status available
# open 0
LV Size 2.00 GiB
Current LE 256
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:0

--- Logical volume ---
LV Path /dev/vg0/lv1
LV Name lv1
VG Name vg0
LV UUID T54Mwi-vEYi-lQKm-jr6n-pv0v-0kk0-VoF4em
LV Write Access read/write
LV Creation host, time zhubiaook.github.io, 2017-08-10 22:46:21 +0800
LV Status available
# open 0
LV Size 3.50 GiB
Current LE 448
Segments 2
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:1

查看逻辑卷的设备文件
逻辑卷创建好后会在系统上生成相应的设备文件,和两个符号链接文件指向该设备文件

  • /dev/dm-#
  • /dev/VG_NAME/LV_NAME
  • /dev/mapper/VG_NAME-LV_NAME
[root@zhubiaook ~]# ll /dev/vg0/
total 0
lrwxrwxrwx. 1 root root 7 Aug 10 22:45 lv0 -> ../dm-0
lrwxrwxrwx. 1 root root 7 Aug 10 22:46 lv1 -> ../dm-1
[root@zhubiaook ~]# ll /dev/mapper/
total 0
crw-rw----. 1 root root 10, 58 Aug 10 20:54 control
lrwxrwxrwx. 1 root root 7 Aug 10 22:45 vg0-lv0 -> ../dm-0
lrwxrwxrwx. 1 root root 7 Aug 10 22:46 vg0-lv1 -> ../dm-1

e. 创建文件系统
逻辑卷创建好以后也需要创建文件系统后,才能挂载使用,我们下面演示将vg0-lv1创建为ext4文件系统,vg1-lv2创建xfs文件系统

#创建ext4文件系统
[root@zhubiaook ~]# mkfs.ext4 /dev/vg0/lv0

#创建xfs文件系统
[root@zhubiaook ~]# mkfs.xfs /dev/vg0/lv1

#查看创建好的文件系统
[root@zhubiaook ~]# blkid | grep vg0
/dev/mapper/vg0-lv0: UUID="bb4fbc4e-8074-430c-9fc3-bc15488304e5" TYPE="ext4"
/dev/mapper/vg0-lv1: UUID="629f5f4d-7a36-46d0-a14e-7d7c0d37e8a4" TYPE="xfs"

f. 挂载逻辑卷文件系统

# 创建挂载点
[root@zhubiaook ~]# mkdir /mnt/lv0
[root@zhubiaook ~]# mkdir /mnt/lv1

# 挂载文件系统
[root@zhubiaook ~]# mount /dev/vg0/lv0 /mnt/lv0
[root@zhubiaook ~]# mount /dev/vg0/lv1 /mnt/lv1
[root@zhubiaook ~]# df -Th | grep vg0
/dev/mapper/vg0-lv0 ext4 2.0G 3.0M 1.9G 1% /mnt/lv0
/dev/mapper/vg0-lv1 xfs 3.5G 33M 3.5G 1% /mnt/lv1

二、 扩展逻辑卷
逻辑卷的扩展步骤如下

  • 创建物理卷
  • 扩展卷组
  • 扩展逻辑卷
  • 扩展文件系统

当磁盘空间不足,此时就是LVM文件系统大展身手的时候,硬盘的扩展对于LVM是非常容易的,下面我们演示将一个新的分区加入加入逻辑卷

本实验在上一个实验的基础上进行

a. 创建物理卷 /dev/sdb4

#创建
[root@zhubiaook ~]# pvcreate /dev/sdb4

Physical volume "/dev/sdb4" successfully created

#创建后
[root@zhubiaook ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb1
vg0 lvm2 a--u 2.00g 0
/dev/sdb2 vg0 lvm2 a--u 2.00g 1.51g
/dev/sdb3 vg0 lvm2 a--u 3.01g 0
/dev/sdb4 lvm2 ---- 1.01g 1.01g

b. 将物理卷sdb4加入卷组vg0

[root@zhubiaook ~]# vgextend vg0 /dev/sdb4 
Volume group "vg0" successfully extended

c. 扩展逻辑卷
将lv0从2G扩展到3G,lv1从3.5G扩展到4G

# 扩展 lv0                                               
[root@zhubiaook ~]# lvextend -L +1G /dev/vg0/lv0
Size of logical volume vg0/lv0 changed from 2.00 GiB (256 extents) to 3.00 GiB (384 extents).
Logical volume lv0 successfully resized.

# 扩展 lv1
[root@zhubiaook ~]# lvextend -L +500M /dev/vg0/lv1
Rounding size to boundary between physical extents: 504.00 MiB.
Size of logical volume vg0/lv1 changed from 3.50 GiB (448 extents) to 3.99 GiB (511 extents).
Logical volume lv1 successfully resized.

d. 扩展文件系统
我们已将物理卷扩展到3G,但此时查看文件系统的大小仍然是2G,这是因为扩展了的空间仍然没有文件系统,我们需要在这些区域上创建文件系统。

lv0 (ext4)文件系统扩展

# 仍然只有2G的空间
[root@zhubiaook ~]# df -Th /dev/vg0/lv0
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/vg0-lv0 ext4 2.0G 3.0M 1.9G 1% /mnt/lv0

# 将文件系统扩展到3G
[root@zhubiaook ~]# resize2fs /dev/vg0/lv0 3G
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/vg0/lv0 is mounted on /mnt/lv0; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 1
Performing an on-line resize of /dev/vg0/lv0 to 786432 (4k) blocks.
The filesystem on /dev/vg0/lv0 is now 786432 blocks long.

#查看空间已经扩展到3G
[root@zhubiaook ~]# df -Th /dev/vg0/lv0
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/vg0-lv0 ext4 2.9G 3.0M 2.8G 1% /mnt/lv0

lv1(xfs) 文件系统扩展

[root@zhubiaook ~]# xfs_growfs /mnt/lv1/

[root@zhubiaook ~]# df -Th /dev/vg0/lv1
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/vg0-lv1 xfs 4.0G 33M 4.0G 1% /mnt/lv1

e. 控制逻辑卷和文件系统可以一步就完成

# -r 选项自动完成逻辑卷和文件系统的扩展
[root@zhubiaook ~]# lvextend -L +500M -r /dev/vg0/lv0

[root@zhubiaook ~]# df -Th /dev/vg0/lv0
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/vg0-lv0 ext4 3.4G 4.0M 3.2G 1% /mnt/lv0

三、 压缩逻辑卷
逻辑卷的压缩步骤如下

  • 卸载文件系统
  • 压缩文件系统
  • 压缩逻辑卷
  • 将要移走的物理卷中的数据移到其他物理卷中
  • 从卷组中将物理卷移走
  • 删除物理卷

压缩逻辑卷是一种比较危险的操作,有可能会导致数据的丢失,所以非必须,尽量不要压缩逻辑卷,在压缩逻辑卷前,我们必须进行文件系统的检测,压缩后的空间必须能存储现有数据,对于。

a. 卸载文件系统

[root@zhubiaook ~]# umount /mnt/lv{0,1}

强制检测文件系统

[root@zhubiaook ~]# fsck -f /dev/vg0/lv0
fsck from util-linux-ng 2.17.2
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/mapper/vg0-lv0: 11/229376 files (0.0% non-contiguous), 31814/915456 blocks

c. 缩减文件系统的大小
我们将文件系统lv0的大小缩减到1G,因为只有ext4的文件系统能够缩减,xfs的只能扩展,不能缩减。

[root@zhubiaook ~]# resize2fs /dev/vg0/lv0 1G
resize2fs 1.41.12 (17-May-2010)
Resizing the filesystem on /dev/vg0/lv0 to 262144 (4k) blocks.
The filesystem on /dev/vg0/lv0 is now 262144 blocks long.

d. 缩减逻辑卷的大小

[root@zhubiaook ~]# lvreduce -L 1G /dev/vg0/lv0 
WARNING: Reducing active logical volume to 1.00 GiB.
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce vg0/lv0? [y/n]: y
Size of logical volume vg0/lv0 changed from 3.49 GiB (447 extents) to 1.00 GiB (128 extents).
Logical volume lv0 successfully resized.

e. 将要移走的物理卷中的数据移动到其它物理卷
在移走之前,我们首先要查看卷组中的Free PE数量是否大于所要移走物理卷的Total PE,因为移走物理卷的过程就是将物理卷中的PE移到其它物理卷。

#查看空间是否足够
[root@zhubiaook ~]# vgdisplay vg0 | grep Free
Free PE / Size 387 / 3.02 GiB <=有387个空闲的PE
[root@zhubiaook ~]# pvdisplay /dev/sdb4 | grep Total
Total PE 129 <=要移走129个PE,空间足够

#将PE移走
[root@zhubiaook ~]# pvmove /dev/sdb4
/dev/sdb4: Moved: 1.6%
/dev/sdb4: Moved: 100.0%

f. 从卷组vg0中将物理卷sdb4移除

#确认sdb4的PE是否未被使用
[root@zhubiaook ~]# pvdisplay /dev/sdb4
--- Physical volume ---
PV Name /dev/sdb4
VG Name vg0
PV Size 1.01 GiB / not usable 3.44 MiB
Allocatable yes
PE Size 8.00 MiB
Total PE 129
Free PE 129
Allocated PE 0
PV UUID mkAvSe-Xnkn-c2k0-VOcN-rHUN-kM9-MdPsJX

#移除sdb4从卷组vg0中
[root@zhubiaook ~]# vgreduce vg0 /dev/sdb4
Removed "/dev/sdb4" from volume group "vg0"

g. 将/dev/sdb4从物理卷中移除

[root@zhubiaook ~]# pvremove /dev/sdb4
Labels on physical volume "/dev/sdb4" successfully wiped

四、 迁移逻辑卷
迁移卷组的步骤

  • 卸载旧系统中的逻辑卷文件系统
  • 将卷组设置为非活动状态
  • 将卷组导出
  • 将旧系统的硬盘移到新系统中
  • 新系统中导入卷组
  • 新系统中激活卷组
  • 新系统中挂载逻辑卷文件系统

有时因业务需要,需将逻辑卷从旧系统中移到新系统

a. 将所有逻辑卷从卷组中卸载

b. 重命名卷组
为了避免旧系统中的卷组与旧系统中的卷组重名,我们可以将卷组重命名,当然逻辑卷也可以重命名

[root@zhubiaook ~]# vgrename vg0 newvg
Volume group "vg0" successfully renamed to "newvg"

c. 将卷组设为非活动状态

[root@zhubiaook ~]# vgchange -a n newvg
0 logical volume(s) in volume group "newvg" now active

#确认是否非活动
[root@zhubiaook ~]# lvdisplay | grep "LV Status"
LV Status NOT available
LV Status NOT available

d. 将卷组导出

[root@zhubiaook ~]# vgexport newvg
Volume group "newvg" successfully exported

f. 硬盘移到新文件系统中
此时就可以将硬盘拆下来移到新系统中,现在我将硬盘从新添加到另外一个系统中,继续实验

g. 将卷组导入新系统
开机检查硬盘在新系统中是否被识别,然后再导入卷组

# 硬盘已被新系统识别
[root@z10 ~]# lsblk /dev/sdb
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdb 8:16 0 20G 0 disk
©À©¤sdb1 8:17 0 2G 0 part
©À©¤sdb2 8:18 0 2G 0 part
©À©¤sdb3 8:19 0 3G 0 part
©¸©¤sdb4 8:20 0 1G 0 part

#将卷组导入
[root@z10 ~]# vgimport newvg
Volume group "newvg" successfully imported

h. 新系统中激活卷组

# 激活卷组
[root@z10 ~]# vgchange -a y newvg
2 logical volume(s) in volume group "newvg" now active

#却认是否被激活
[root@z10 ~]# lvdisplay | grep "LV Status"
LV Status available
LV Status available

i. 挂载文件系统

# 确认设备文件存在
[root@z10 ~]# ll /dev/newvg/
total 0
lrwxrwxrwx. 1 root root 7 Aug 12 20:09 lv0 -> ../dm-0
lrwxrwxrwx. 1 root root 7 Aug 12 20:09 lv1 -> ../dm-1

# 创建挂载点
[root@z10 ~]# mkdir /mnt/{lv0,lv1}

# 挂载文件系统
[root@z10 ~]# mount /dev/newvg/lv0 /mnt/lv0/
[root@z10 ~]# mount /dev/newvg/lv1 /mnt/lv1/

# 查看文件系统
[root@z10 ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda2 ext4 48G 12G 34G 27% /
tmpfs tmpfs 491M 76K 491M 1% /dev/shm
/dev/sda3 ext4 39G 74M 37G 1% /app
/dev/sda1 ext4 976M 35M 891M 4% /boot
/dev/sr0 iso9660 7.8G 7.8G 0 100% /media/CentOS 7 x86_64
/dev/mapper/newvg-lv0
ext4 944M 2.6M 891M 1% /mnt/lv0
/dev/mapper/newvg-lv1
xfs 4.0G 33M 4.0G 1% /mnt/lv1

五、逻辑卷快照
逻辑卷演示步骤

  • 创建快照
  • 挂载快照
  • 恢复快照
  • 删除快照

逻辑卷快照是一种快速备份数据的方式,按照以前的认知,数据量大的时候,备份数据是相对缓慢的。而逻辑卷却能在瞬间完成,这是为什么呢。其实当我们创建快照的时候,并为真正的将数据备份到快照中,而是快照和原逻辑卷做了一个关联。记录下做快照的那一时刻,只有当逻辑卷中的数据发生变化的时候,快照卷会将变化前的数据备份到自己的空间中。从而实现保存做快照卷那一时刻的数据。

a. 创建快照卷
创建快照前,先在原卷中准一些数据做测试。我们为lv0创建快照卷,现在其分区中创建几个文件。

创建两个文件passwd和hell0.txt
[root@z10 lv0]# pwd
/mnt/lv0
[root@z10 lv0]# cp /etc/passwd ./

[root@z10 lv0]# echo -e "Hello everyone\nI'm zhubiao" > hello.txt
[root@z10 lv0]# ls
hello.txt passwd
-L 快照卷大小
-n 快照卷名字
-s 创建快照卷
-p 权限
[root@z10 ~]# lvcreate -L 1G -n snap_lv0 -s -p r /dev/newvg/lv0
Logical volume "snap_lv0" created.

# 查看快照卷和原逻辑卷直接的关联
[root@z10 ~]# lvdisplay /dev/newvg/{lv0,snap_lv0}
--- Logical volume ---
LV Path /dev/newvg/lv0
LV Name lv0
VG Name newvg
LV UUID 9dBKzn-FnfG-nKt9-Jp6N-eire-fMf5-1gGniO
LV Write Access read/write
LV Creation host, time zhubiaook.github.io, 2017-08-10 22:45:46 +0800
LV snapshot status source of
snap_lv0 [active] <=已有快照卷
LV Status available
# open 1
LV Size 1.00 GiB
Current LE 128
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:0

--- Logical volume ---
LV Path /dev/newvg/snap_lv0
LV Name snap_lv0
VG Name newvg
LV UUID ao844K-hJHK-W0yH-mRho-rGe1-3EjR-AFcC4V
LV Write Access read only
LV Creation host, time z10.zhubiao.science, 2017-08-12 20:26:28 +0800
LV snapshot status active destination for lv0 <=为谁创建了快照卷
LV Status available
# open 0
LV Size 1.00 GiB
Current LE 128
COW-table size 1.00 GiB
COW-table LE 128
Allocated to snapshot 0.00%
Snapshot chunk size 4.00 KiB
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:4

b. 挂载快照卷
挂载扩展卷然后查看快照卷与原卷的数据关联关系

#原逻辑卷中与块照卷好像都有相同的数据,其实这只是一种关联关系而已
[root@z10 lv0]# ls /mnt/lv0/
hello.txt passwd

[root@z10 lv0]# mount -o ro /dev/newvg/snap_lv0 /mnt/snap_lv0/
[root@z10 lv0]# ls /mnt/snap_lv0/
hello.txt passwd

恢复快照卷
我们将原卷中的数据删除,然后通过快照卷将其恢复

删除原逻辑卷中的数据

[root@z10 lv0]# rm ./* -rf
[root@z10 lv0]# ls
[root@z10 lv0]#

快照卷中此时已将数据备份到自己空间下

[root@z10 lv0]# ls /mnt/snap_lv0/
hello.txt passwd

恢复逻辑卷中的数据, 恢复之前必须把原卷和快照卷卸载,方可操作

# 卸载快照卷和原逻辑卷
[root@z10 mnt]# umount /mnt/{snap_lv0,lv0}

# 恢复原卷中的数据
[root@z10 mnt]# lvconvert --merge /dev/newvg/snap_lv0
Merging of volume snap_lv0 started.
lv0: Merged: 100.0%
Merge of snapshot into logical volume lv0 has finished.
Logical volume "snap_lv0" successfully removed

# 重新挂载,观察数据是否恢复
[root@z10 mnt]# mount /dev/newvg/lv0 /mnt/lv0/
[root@z10 mnt]# ls /mnt/lv0/
hello.txt passwd <=成功恢复

此时快照卷在恢复的时候已被删除,若未删除可以通过以下命令将其删除
lvremove /dev/vg_name/snap_name