LVM

LVM简介
  LVM是将一个或多个硬盘的分区在逻辑上集合,相当于一个大硬盘来使用,当硬盘的空间不够使用的时候,可以继续将其它的硬盘的分区加入其中,这样可以实现磁盘空间的动态管理,相对于普通的磁盘分区有很大的灵活性。与传统的磁盘与分区相比,LVM为计算机提供了更高层次的磁盘存储。它使系统管理员可以更方便的为应用与用户分配存储空间。

扩展知识:
  传统磁盘管理问题:当分区大小不够用时无法扩展其大小,只能通过添加硬盘,创建新的分区来扩展空间,但是新添加进来的硬盘式作为独立文件系统存在的,原来的文件系统并未得到扩充,上层应用很多时候只能访问一个文件系统。只能让现有磁盘下线,换上新的磁盘之后,再将原始数据导入
  LVM(Logical volume Manager)逻辑卷管理通过将底层物理硬盘抽象封装起来,以逻辑卷的形式表现给上层系统,逻辑卷的大小可以动态调整,而且不会丢失现有数据,新加入的硬盘不会改变现有上层的逻辑卷;作为一种动态磁盘管理机制,逻辑卷技术大大提高了磁盘管理的灵活性

  LVM的一些概念
  PE(physical Extend)物理拓展
  PV(physical volume)物理卷
  VG(volume group)卷组
  LV(logical volume)逻辑卷

  1、物理硬盘或分区创建为物理卷(PV)
  2、不同的PV加入同一个VG(实际上将硬盘空间划为一个个的PE(PE默认是4MB大小)PE是逻辑卷空间管理的最基本的单位),不同PV的PE全部进入VG的PE池内(创建一个卷组可以理解创建空间池;就是将一个PV多个PV加入到VG当中;在创建好卷组后在/dev/目录下有一个和卷组同名的文件夹)
  3、LV基于PE创建,大小为PE的整数倍,组成LV的PE可能来自不同物理磁盘(当LV创建好后在/dev/vgname/下有个同名的逻辑卷文件)
  4、LV现在就直接可以格式化后挂载使用了
  5、LV的扩充缩减实际上及时增加或减少LV的PE的数量,其过程不丢失原始数据

LVM逻辑卷基础管理操作
  将物理磁盘设备初始化为物理卷
  pvcreate /dev/sdb /dev/sdc
  创建卷组,并将PV加入到卷组中
  vgcreate linuxcast /dev/sdb /dev/sdc
  基于卷组创建逻辑卷
  lvcreate -n mylv -L 2G linuxcast
  为创建好的逻辑卷创建文件系统
  mkfs.ext4 /dev/linuxcast/mylv
  将格式化好的逻辑卷挂载使用
  mount /dev/linuxcast/mylv /mnt

  可以通过一下命令查看LVM相关信息:
  查看物理卷信息:pvdisplay或pvs
  查看卷组信息:vgdisplay或vgs
  查看逻辑卷信息:lvdisplay或lvs

  删除LVM
  删除LV:lvremove /dev/linuxcast/mylv
  删除VG:vgremove linuxcast
  删除物理卷:pvremove /dev/sdb

LVM逻辑卷的拉伸与缩小
  拉伸一个逻辑卷,逻辑卷的拉伸可以在线执行,不需要卸载逻辑卷
  保证VG中有足够的空闲空间
  vgdiplay
  扩充逻辑卷
  lvextend –L +1G /dev/linuxcast/mylv
  查看扩充后LV大小
  lvdisplay
  更新文件系统
  resize2fs /dev/linuxcast/mylv
  查看更新后文件系统
  df -h

  拉伸一个卷组
  将要添加到VG的硬盘格式化为PV
  pvcreate /dev/sdd
  将新的PV添加到指定的卷组中
  vgextend linuxcast /dev/sdd
  查看扩充后的VG大小
  vgdisplay

  缩小一个逻辑卷(逻辑卷的缩小操作必须离线操作,要卸载逻辑卷)
  卸载已经挂载的逻辑卷
  umount /dev/linuxcast/mylv
  缩小文件系统(会提示需要运行fsck检查文件系统)
  resize2fs /dev/linuxcast/mylv 1G
  缩小LV
  lvreduce –L -1G /dev/linuxcast/mylv
  查看缩小后的LV
  lvdisplay
  挂载
  mount /dev/linuxcast/mylv /mut

  缩小卷组
 将一个PV从指定卷组中移除
  vgreduce linuxcast /dev/sdd
  查看缩小后的卷组大小
  vgdisplay
  删除pv
  pvremove /dev/sdd

LVM管理
  LVM: Logical Volume Manager, Version: 2
  dm: device mapper,将一个或多个底层块设备组织成一个逻辑设备的模块
  设备文件:/dev/dm-#
  链接文件:链接到上面的设备文件
    /dev/mapper/VG_Name-LV_Name /dev/mapper/myvg-mylv
    /dev/VG_Name/LV_Name    /dev/myvg/mylv

  pv管理工具:
  pvs 简要pv信息显示
  pvdisplay 显示pv的详细信息
  pvcreate /dev/sda 创建pv
  pvremove /dev/sda 删除pv
演示:
与PV相关的一些命令有:
[root@CentOS6 ~]# pv
pvchange pvck pvcreate pvdisplay pvmove pvremove pvresize pvs pvscan pv.sh

# 显示其详细信息
[root@CentOS6 ~]# pvdisplay
--- Physical volume ---
PV Name /dev/sda2  #PV名
VG Name vg0      #所属卷组
PV Size 60.00 GiB / not usable 8.00 MiB  #PV 大小
Allocatable yes    #是否可分配
PE Size 8.00 MiB   #PE 大小
Total PE 7679     #一共有多少个PE
Free PE 1023     #空闲多少个PE
Allocated PE 6656   #已分配多少个PE
PV UUID gLbegn-wGEF-FIda-e5Ig-3HJ0-4vUg-v41pSd  #PV 自己的UUID

[root@CentOS6 ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 vg0 lvm2 a--u 59.99g 7.99g

创建PV具体步骤如下:
#先准备块设备,调整其id为8e;
[root@CentOS6 ~]# fdisk -l /dev/sdb

Disk /dev/sdb: 85.9 GB, 85899345920 bytes
255 heads, 63 sectors/track, 10443 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: 0x77136fd1

Device Boot Start End Blocks Id System
/dev/sdb1 1 1306 10490413+ 8e Linux LVM
/dev/sdb2 1307 2351 8393962+ 8e Linux LVM
/dev/sdb3 2352 3005 5253255 8e Linux LVM
/dev/sdb4 3006 10443 59745735 5 Extended
/dev/sdb5 3006 3789 6297448+ 8e Linux LVM
#然后创建pv:pvcreate [-f] /dev/sdb{1,2,3,5}
[root@CentOS6 ~]# pvcreate /dev/sdb{1,2,3,5}
Physical volume "/dev/sdb1" successfully created
Physical volume "/dev/sdb2" successfully created
Physical volume "/dev/sdb3" successfully created
Physical volume "/dev/sdb5" successfully created

查看PV信息:pvdisplay [/dev/sdb{1,2,3,5}]
# 因为是刚刚创建的,所以还不属于任何卷组,所以没有信息状态
[root@CentOS6 ~]# pvdisplay /dev/sdb1
"/dev/sdb1" is a new physical volume of "10.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sdb1
VG Name
PV Size 10.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID ZNXE1y-rOAW-ket1-Wlzl-Tckl-NqD7-v4lUYb

vg管理工具:
  vgs 简要vg信息显示
  vgdisplay 显示vg的详细信息
  创建vg
  vgcreate -s # VG_Name /dev/sda
    -s  指定PE的大小,不指定默认PE大小为4M
  扩充vg
  vgextend VG_Name /dev/sda
 缩小vg
  先将要移除的物理卷上的所有PE移动至其它PV(将/dev/sda上的数据移动到其它PE)
  pvmove /dev/sda
  在卷组中将LV移除
  vgreduce VG_Name /dev/sda
  删除vg
  vgremove VG_Name
    -f 强制删除
演示:
新增一个vg,并指明其包含哪个或哪些pv实现;
[root@CentOS6 ~]# vgcreate myvg /dev/sdb1
Volume group "myvg" successfully created
查看vg信息及包含的pv信息
[root@CentOS6 ~]# vgdisplay myvg
--- Volume group ---
VG Name myvg
System ID
Format lvm2
Metadata Areas 1
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 1
Act PV 1
VG Size 10.00 GiB
PE Size 4.00 MiB
Total PE 2560
Alloc PE / Size 0 / 0
Free PE / Size 2560 / 10.00 GiB
VG UUID DhKq9c-esRV-0uKq-AQlV-mrWx-A6de-41frUH
# 查看PV 的信息,可以看到之前创建PV 有信息了
[root@CentOS6 ~]# pvdisplay /dev/sdb1
--- Physical volume ---
PV Name /dev/sdb1
VG Name myvg
PV Size 10.00 GiB / not usable 4.54 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 2560
Free PE 2560
Allocated PE 0
PV UUID ZNXE1y-rOAW-ket1-Wlzl-Tckl-NqD7-v4lUYb

如果想增加VG的容量,进行如下操作: vgextend [卷组名] [pv名]
[root@CentOS6 ~]# vgextend myvg /dev/sdb2
Volume group "myvg" successfully extended
[root@CentOS6 ~]# vgdisplay myvg
--- Volume group ---
VG Name myvg
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 2
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 2
Act PV 2
VG Size 18.00 GiB
PE Size 4.00 MiB
Total PE 4609
Alloc PE / Size 0 / 0
Free PE / Size 4609 / 18.00 GiB # 由原来的10G变为18G,为/dev/sdb1与/dev/sdb2之和
VG UUID DhKq9c-esRV-0uKq-AQlV-mrWx-A6de-41frUH

[root@CentOS6 ~]# pvdisplay /dev/sdb2
--- Physical volume ---
PV Name /dev/sdb2
VG Name myvg
PV Size 8.01 GiB / not usable 1.23 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 2049
Free PE 2049
Allocated PE 0
PV UUID QqoawY-wc0c-hv7E-gyuJ-KVXw-d5yu-7tfw5e

如果要想把指定pv从卷组中移除,进行如下操作:
  首先,用pvmove命令把要移除pv中的数据转移到其他pv中
  然后,执行 vgreduce 命令,移除指定pv
# 注意:要从VG中移除pv之前,一定要把该PV中的数据移除到其他PV中,并确保其他PV中能够容纳
# 这些数据。因为这里是刚刚创建的所以显示没有数据,可直接从VG中移除
[root@CentOS6 ~]# pvmove /dev/sdb2
No data to move for myvg

[root@CentOS6 ~]# vgreduce myvg /dev/sdb2
Removed "/dev/sdb2" from volume group "myvg"

[root@CentOS6 ~]# vgdisplay myvg
--- Volume group ---
VG Name myvg
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 3
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 1
Act PV 1
VG Size 10.00 GiB # 移除成功,发现VG 变小了
PE Size 4.00 MiB
Total PE 2560
Alloc PE / Size 0 / 0
Free PE / Size 2560 / 10.00 GiB
VG UUID DhKq9c-esRV-0uKq-AQlV-mrWx-A6de-41frUH

lv管理工具:
  lvs 简要lv信息显示
  lvdisplay 显示lv的详细信息
  创建lv
  lvcreate -L # -n LV_Name VG_Name
    -L  指定创建lv的大小(单位M、G、T)
    -n  指定lv的名字
  删除lv
  lvremove /dev/VG_Name/LV_Name

  注意:在扩展和缩减LV中的-L选项的参数如果没有指定加号或减号就是将大小调整到指定大小,如果有指定加号或减号是在当前大小上增加或较少指定大小
演示:
在mvvg卷组中,创建一个新的逻辑卷LV,名称为mylv,并指明大小为2G;
# 创建逻辑卷,-L 指明大小,-n 指明逻辑卷名字,最后指明卷组
[root@CentOS6 ~]# lvcreate -L 2G -n mylv myvg
Logical volume "mylv" created.
[root@CentOS6 ~]# ll /dev/mapper/
total 0
crw-rw---- 1 root root 10, 58 Feb 22 17:05 control
lrwxrwxrwx 1 root root 7 Feb 22 18:18 myvg-mylv -> ../dm-4 # 创建的逻辑卷
lrwxrwxrwx 1 root root 7 Feb 22 17:05 vg0-root -> ../dm-0
lrwxrwxrwx 1 root root 7 Feb 22 17:05 vg0-swap -> ../dm-1
lrwxrwxrwx 1 root root 7 Feb 22 17:05 vg0-usr -> ../dm-2
lrwxrwxrwx 1 root root 7 Feb 22 17:05 vg0-var -> ../dm-3
对新创建的逻辑卷,创建文件系统(注意逻辑卷路径,两个都可以)
[root@CentOS6 ~]# mkfs.ext4 -L MYLV -b 1024 /dev/mapper/myvg-mylv
mke2fs 1.41.12 (17-May-2010)
Filesystem label=MYLV
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
131072 inodes, 2097152 blocks
104857 blocks (5.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=69206016
256 block groups
8192 blocks per group, 8192 fragments per group
512 inodes per group
Superblock backups stored on blocks:
8193, 24577, 40961, 57345, 73729, 204801, 221185, 401409, 663553,
1024001, 1990657

Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 38 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
挂载
# 查看设备属性信息
[root@CentOS6 ~]# blkid /dev/mapper/myvg-mylv
/dev/mapper/myvg-mylv: LABEL="MYLV" UUID="7be26849-b0e5-43f5-87ab-ae46511c306c" TYPE="ext4"

# 创建挂载点
[root@CentOS6 ~]# mkdir /testdir

# 挂载,这里注意文件路径,两者都可以
[root@CentOS6 ~]# mount /dev/myvg/mylv /testdir

[root@CentOS6 ~]# mount
/dev/mapper/vg0-root on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw)
/dev/sda1 on /boot type ext4 (rw)
/dev/mapper/vg0-usr on /usr type ext4 (rw)
/dev/mapper/vg0-var on /var type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
/dev/mapper/myvg-mylv on /testdir type ext4 (rw) # 挂载成功

[root@CentOS6 testdir]# df -lh
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg0-root 20G 1.9G 17G 11% /
tmpfs 491M 0 491M 0% /dev/shm
/dev/sda1 190M 34M 147M 19% /boot
/dev/mapper/vg0-usr 9.8G 2.1G 7.2G 23% /usr
/dev/mapper/vg0-var 20G 471M 19G 3% /var
/dev/mapper/myvg-mylv 2.0G 3.1M 1.9G 1% /testdir # 挂载成功,大小为2G

# 可以正常使用
[root@CentOS6 ~]# cd /testdir/
[root@CentOS6 testdir]# ls
lost+found
[root@CentOS6 testdir]# cp /etc/fstab ./
[root@CentOS6 testdir]# ls
fstab lost+found

扩展LV逻辑卷:需先扩展LV在扩展文件系统
  扩展LV: lvextend -L +# /dev/VG_Name/LV_Name
  扩展文件系统:resize2fs /dev/VG_Name/LV_Name
演示:
# 直接扩展逻辑卷到5G,也可以使用 +3G
[root@CentOS6 testdir]# lvextend -L 5G /dev/myvg/mylv
Size of logical volume myvg/mylv changed from 2.00 GiB (512 extents) to 5.00 GiB (1280 extents).
Logical volume mylv successfully resized.

[root@CentOS6 testdir]# df -lh
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg0-root 20G 1.9G 17G 11% /
tmpfs 491M 0 491M 0% /dev/shm
/dev/sda1 190M 34M 147M 19% /boot
/dev/mapper/vg0-usr 9.8G 2.1G 7.2G 23% /usr
/dev/mapper/vg0-var 20G 471M 19G 3% /var
/dev/mapper/myvg-mylv
2.0G 3.1M 1.9G 1% /testdir
# 发现还是之前的2G,这时因为扩展的只是物理可用空间,但物理可用空间上文件系统的可用空间
# 并没有随之扩展,还是创建文件系统时的大小,要想让文件系统也随之扩展到5G,就要使用resize2fs命令
[root@CentOS6 testdir]# resize2fs /dev/myvg/mylv # resize2fs后没有跟大小,就意味着扩展到可用的最大物理空间
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/myvg/mylv is mounted on /testdir; on-line resizing required
old desc_blocks = 8, new_desc_blocks = 20
Performing an on-line resize of /dev/myvg/mylv to 5242880 (1k) blocks.
The filesystem on /dev/myvg/mylv is now 5242880 blocks long.

[root@CentOS6 testdir]# df -lh
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg0-root 20G 1.9G 17G 11% /
tmpfs 491M 0 491M 0% /dev/shm
/dev/sda1 190M 34M 147M 19% /boot
/dev/mapper/vg0-usr 9.8G 2.1G 7.2G 23% /usr
/dev/mapper/vg0-var 20G 471M 19G 3% /var
/dev/mapper/myvg-mylv
4.9G 3.4M 4.7G 1% /testdir # 变为5G

缩减LV逻辑卷:需先缩减文件系统在缩减LV
  卸载逻辑卷:umount /dev/VG_Name/LV_Name
  强制文件系统检查:e2fsck -f /dev/VG_Name/LV_Name
  缩减文件系统:resize2fs /dev/VG_Name/LV_Name #[mMgGtT]
  缩减LV:lvreduce -L -# /dev/VG_NAME/LV_NAME
演示:
首先卸载文件系统,并强制做文件系统检测和修复(必须检测,不能省略)
[root@CentOS6 ~]# umount /dev/myvg/mylv
[root@CentOS6 ~]# e2fsck -f /dev/myvg/mylv
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
MYLV: 12/327680 files (0.0% non-contiguous), 119694/5242880 blocks
缩减逻辑边界(文件系统)到指定大小
[root@CentOS6 ~]# resize2fs /dev/myvg/mylv 3G
resize2fs 1.41.12 (17-May-2010)
Resizing the filesystem on /dev/myvg/mylv to 3145728 (1k) blocks.
The filesystem on /dev/myvg/mylv is now 3145728 blocks long.
缩减物理边界到指定大小
[root@CentOS6 ~]# lvreduce -L 3G /dev/myvg/mylv
WARNING: Reducing active logical volume to 3.00 GiB.
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce myvg/mylv? [y/n]: y
Size of logical volume myvg/mylv changed from 5.00 GiB (1280 extents) to 3.00 GiB (768 extents).
Logical volume mylv successfully resized.
重新挂载使用
[root@CentOS6 ~]# mount /dev/myvg/mylv /testdir/

[root@CentOS6 ~]# df -lh
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg0-root 20G 1.9G 17G 11% /
tmpfs 491M 0 491M 0% /dev/shm
/dev/sda1 190M 34M 147M 19% /boot
/dev/mapper/vg0-usr 9.8G 2.1G 7.2G 23% /usr
/dev/mapper/vg0-var 20G 471M 19G 3% /var
/dev/mapper/myvg-mylv
3.0G 3.3M 2.8G 1% /testdir

[root@CentOS6 ~]# cd /testdir/
[root@CentOS6 testdir]# ls
fstab lost+found

LVM快照(snapshot)
  工作原理
  快照是特殊的逻辑卷,它是在生成快照时存在的逻辑卷的准确拷贝
  对于需要备份或者复制的现有数据集临时拷贝以及其它操作来说,快照是最合适的选择
  快照只有在它们和原来的逻辑卷不同时才会消耗空间
   在生成快照时会分配给它一定的空间,但只有在原来的逻辑卷或者快照有所改变才会使用这些空间
   当原来的逻辑卷中有所改变时,会将旧的数据复制到快照中
   快照中只含有原来的逻辑中更改的数据或者自生成快照后的快照中更改的数据
    建立快照的卷大小只需要原始逻辑卷的15%~20%就够了。也可以使用lvextend放大快照
  快照就是将当时的系统信息记录下来,就好像照相一般,若将来有任何数据改动了,则原始数据会被移动到快照区,没有改动的区域则由快照区和文件系统共享
  由于快照区与原本的LV共用很多PE的区块,因此快照区与被快照的LV必须要要在同一个VG上,系统恢复的时候的文件数量不能高于快照区的实际容量

  LVM快照有多种实现方法,其中一种是COW(Copy-On-Write),不用停止服务或将逻辑卷设为只读就可以进行备份,当一个 snapshot创建的时候只是拷贝原始卷里的元数据,而不是数据区的实际数据,所以snapshot的创建特别快。如果在创建快照的时间点,由于原始卷没有设置为只读,有写入数据(数据有变化),快照(snapshot)就会记录哪些数据发生变化,并备份旧数据,当恢复的时候就可以把旧数据恢复到对应位置。
  注意:
  1、快照卷和原卷要在一个卷组中,因为快照卷备份无变化数据的元数据类似于硬链接,所以不能跨卷组
  2、创建快照卷后,如果原卷中创建新的文件,是不会被快照卷记录的,因为新创建的文件的元数据是新创建的在快照中没有记录

  创建LV快照:
  lvcreate -L # -p r -s -n Snapshot_LV_Name Original_LV_Name
    -L  指定快照文件大小
    -p r 指定快照为只读
    -s  创建快照
   -n  指定快照的名字
   Original_LV_Name 需要创建快照LV的设备文件名字

示例:
  创建快照卷
  lvcreate -L 3G -p r -s -n testlv-snapshot /dev/testvg/testlv
  将创建的快照卷备份为文件(备份后快照卷就可以删除了)
  dd if=/dev/testvg/testlv-snapshot /tmp/testlv-backup.img
  lvremove /dev/testvg/testlv-snapshot
  挂载lv
  mount /dev/testvg/testlv /users
  删除lv中的某个文件
  rm -rf /users/FileName
  卸载lv
  umoun /dev/testvg/testlv
  备份恢复(恢复前卸载lv后,恢复后在挂载)
  dd if=/tmp/testlv-backup.img of=/dev/testvg/testlv
  重新挂载lv,查看删除的文件是否恢复
  mount /dev/testvg/testlv /users
  ls -al /users/FileName

演示:
为现有逻辑卷创建快照,并查看其信息
[root@CentOS6 ~]# lvcreate -s -L 512M -n mylv_snap -p r /dev/myvg/mylv
Logical volume "mylv_snap" created.

[root@CentOS6 ~]# lvdisplay /dev/myvg/mylv_snap
--- Logical volume ---
LV Path /dev/myvg/mylv_snap
LV Name mylv_snap
VG Name myvg
LV UUID FCpSAD-ur03-K3mf-W2UO-qyxD-8bBd-MhX7sQ
LV Write Access read only
LV Creation host, time CentOS6.localdomain, 2017-02-22 19:45:54 +0800
LV snapshot status active destination for mylv
LV Status available
# open 0
LV Size 3.00 GiB # 原卷大小
Current LE 768
COW-table size 512.00 MiB # 快照卷大小
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:7

挂载快照
[root@CentOS6 ~]# mkdir /testsnap
[root@CentOS6 ~]# mount /dev/myvg/mylv_snap /testsnap
mount: block device /dev/mapper/myvg-mylv_snap is write-protected, mounting read-only
[root@CentOS6 ~]# df -lh
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg0-root 20G 1.9G 17G 11% /
tmpfs 491M 0 491M 0% /dev/shm
/dev/sda1 190M 34M 147M 19% /boot
/dev/mapper/vg0-usr 9.8G 2.1G 7.2G 23% /usr
/dev/mapper/vg0-var 20G 471M 19G 3% /var
/dev/mapper/myvg-mylv
3.0G 3.3M 2.8G 1% /testdir
/dev/mapper/myvg-mylv_snap
3.0G 3.3M 2.8G 1% /testsnap

测试
# cd 到快照卷中,可以看到原卷中的数据
[root@CentOS6 ~]# cd /testsnap/
[root@CentOS6 testsnap]# cat /etc/issue
[root@CentOS6 testsnap]# ls
fstab lost+found
[root@CentOS6 testsnap]# cat fstab

#
# /etc/fstab
# Created by anaconda on Sun Nov 6 11:54:11 2016
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/vg0-root / ext4 defaults 1 1
UUID=493db72e-4b0d-4e2a-82fa-5e002f0bd667 /boot ext4 defaults 1 2
/dev/mapper/vg0-usr /usr ext4 defaults 1 2
/dev/mapper/vg0-var /var ext4 defaults 1 2
/dev/mapper/vg0-swap swap swap defaults 0 0
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0

# 现在改变原卷中的文件 /testdir/fstab 中的数据,如下:
[root@CentOS6 ~]# cd /testdir/
[root@CentOS6 testdir]# ls
fstab lost+found
[root@CentOS6 testdir]# vim fstab

#
# /etc/fstab
# Created by anaconda on Sun Nov 6 11:54:11 2016
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/vg0-root / ext4 defaults 1 1
UUID=493db72e-4b0d-4e2a-82fa-5e002f0bd667 /boot ext4 defaults 1 2
/dev/mapper/vg0-usr /usr ext4 defaults 1 2
/dev/mapper/vg0-var /var ext4 defaults 1 2
/dev/mapper/vg0-swap swap swap defaults 0 0
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0

NEW LINES IS TEXT # 新添加一行

# 原卷中的数据已经发生改变,现在再看快照卷中的数据,发现还是原来的数据,并没有发生改变
[root@CentOS6 testdir]# cd /testsnap/
[root@CentOS6 testsnap]# pwd
/testsnap
[root@CentOS6 testsnap]# cat fstab

#
# /etc/fstab
# Created by anaconda on Sun Nov 6 11:54:11 2016
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/vg0-root / ext4 defaults 1 1
UUID=493db72e-4b0d-4e2a-82fa-5e002f0bd667 /boot ext4 defaults 1 2
/dev/mapper/vg0-usr /usr ext4 defaults 1 2
/dev/mapper/vg0-var /var ext4 defaults 1 2
/dev/mapper/vg0-swap swap swap defaults 0 0
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0

把数据从快照卷中备份后,就可以删除快照了
# 首先取消快照卷的挂载
[root@CentOS6 ~]# umount /dev/myvg/mylv_snap

# 然后删除快照卷
[root@CentOS6 ~]# lvremove /dev/myvg/mylv_snap
Do you really want to remove active logical volume mylv_snap? [y/n]: y
Logical volume "mylv_snap" successfully removed

如果所有的数据均已备份,不需要了,全部卸载
# 取消逻辑卷的挂载,并删除
[root@CentOS6 ~]# umount /dev/myvg/mylv
[root@CentOS6 ~]# lvremove /dev/myvg/mylv
Do you really want to remove active logical volume mylv? [y/n]: y
Logical volume "mylv" successfully removed

# 删除卷组(VG),在删除前确保数据已经备份,或者不需要了
[root@CentOS6 ~]# vgremove /dev/myvg
Volume group "myvg" successfully removed

[root@CentOS6 ~]# vgs
VG #PV #LV #SN Attr VSize VFree
vg0 1 4 0 wz--n- 59.99g 7.99g

# 最后删除 物理卷 PV
[root@CentOS6 ~]# pvremove /dev/sdb{1,2,3,5}
Labels on physical volume "/dev/sdb1" successfully wiped
Labels on physical volume "/dev/sdb2" successfully wiped
Labels on physical volume "/dev/sdb3" successfully wiped
Labels on physical volume "/dev/sdb5" successfully wiped

posted @ 2018-10-26 15:43  luck-luck  阅读(652)  评论(0编辑  收藏  举报