Linux逻辑卷快照及ssm的使用
理论部分:
逻辑卷管理(LVM)提供了为任何逻辑卷作一个快照的功能,目的是在一致的状态下来得到一个分区的备份.因为在备份过程中,应用程序可能访问一个分区的文件或者数据库.一些文件可能在一个状态被备份,而后面的文件可能在一个更新后被备份,导致备份的不完整
从具体细节上说,快照是指向保存在存储设备中的数据的引用标记或指针
操作部分:
首先创建一个逻辑卷/dev/vg00/lv00,空间为504Mlvdisplay /dev/vg00/lv00--- Logical volume ---
LV Path /dev/vg00/lv00
LV Name lv00
VG Name vg00
LV UUID 1ZUmzM-krIb-ag0Y-58oQ-IEfp-CRu4-JrzlB1
LV Write Access read/write
LV Creation host, time CentOS-1, 2017-01-09 19:25:41 +0800
LV Status available
# open 1
LV Size 504.00 MiB
Current LE 126
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:2
为了体现实验效果,我们往这个逻辑卷复制一些数据到/data里面去cp /boot/* /data/
接下来我们开始为/dev/vg00/lv00做逻辑卷快照lvcreate --size 500M --snapshot --name lvsp00 /dev/vg00/lv00
Logical volume "lvsp00" created.
使用lvscan查看一下lvscan
ACTIVE '/dev/centos/swap' [8.00 GiB] inherit
ACTIVE '/dev/centos/root' [41.51 GiB] inherit
ACTIVE Original '/dev/vg00/lv00' [504.00 MiB] inherit
ACTIVE Snapshot '/dev/vg00/lvsp00' [500.00 MiB] inherit
现在可以看到/dev/vg00/lv00是原始逻辑卷,而最后的/dev/vg00/lvsp00是快照
执行lvdisplay或者lvs命令可以查看逻辑信息lvdisplay /dev/vg00/lvsp00
--- Logical volume ---
LV Path /dev/vg00/lvsp00
LV Name lvsp00
VG Name vg00
LV UUID pkwNXm-7z1A-lntk-QtMd-t3XZ-E5De-l33oPy
LV Write Access read/write
LV Creation host, time CentOS-1, 2017-01-09 19:34:38 +0800
LV snapshot status active destination for lv00
LV Status available
# open 0
LV Size 504.00 MiB
Current LE 126
COW-table size 500.00 MiB
COW-table LE 125
Allocated to snapshot 0.00%
Snapshot chunk size 4.00 KiB
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:5lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root centos -wi-ao---- 41.51g
swap centos -wi-ao---- 8.00g
lv00 vg00 owi-aos--- 504.00m
lvsp00 vg00 swi-a-s--- 500.00m lv00 0.00
这里可以看到逻辑快照已经创建成功了
现在我们来模拟将逻辑卷中的数据删除rm -rf /data/*
现在,逻辑卷/data目录下已经没有文件了,我们用两种方法来恢复删除的数据
方法一:
将原来的逻辑卷卸除挂载:umount /dev/vg00/lv00
然后在将逻辑卷快照挂载到/data目录就可以正常访问了mount /dev/vg00/lvsp00 /data/
方法二:
通过lvconvert把快照的内容重新写回原来的lvm
首先将逻辑卷卸除挂载umount /dev/vg00/lv00
然后执行lvconvert将快照的数据合并到原逻辑卷lvconvert --merge /dev/vg00/lvsp00
最后挂载原逻辑卷mount /dev/vg00/lv00 /data/
使用ssm(系统存储管理器)进行逻辑卷管理
安装ssm:
可以用rpm安装或者yumyum -y install system-storage-manager
安装完以后可以使用ssm list查看检查关于硬盘中的LVM卷信息ssm list
---------------------------------------------------------------
Device Free Used Total Pool Mount point
---------------------------------------------------------------
/dev/sda 50.00 GB PARTITIONED
/dev/sda1 500.00 MB /boot
/dev/sda2 0.00 KB 49.51 GB 49.51 GB centos
/dev/sdb 99.50 GB 504.00 MB 100.00 GB vg00
/dev/sdc 100.00 GB 0.00 KB 100.00 GB vg00
/dev/sdd 100.00 GB
/dev/sde 100.00 GB
--------省略部分内容--------
下面通过ssm创建一个LVM卷(/dev/mypool/lv01)
首先创建一个可供挂载的挂载点mount /test
然后执行下命令创建一个名为mypool的存储池,并创建存储池中名为lv01的500M大小的LVM卷,使用XFS文件系统格式化卷,并将它挂载到/mnt/test下ssm create -s 500M -n lv01 --fstype xfs -p mypool /dev/sdd /test
使用lvscan查看创建结果lvscan
ACTIVE '/dev/centos/swap' [8.00 GiB] inherit
ACTIVE '/dev/centos/root' [41.51 GiB] inherit
ACTIVE '/dev/vg00/lv00' [504.00 MiB] inherit
ACTIVE '/dev/mypool/lv01' [500.00 MiB] inheritdf -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/centos-root xfs 42G 3.5G 39G 9% /
devtmpfs devtmpfs 3.8G 0 3.8G 0% /dev
tmpfs tmpfs 3.9G 144K 3.9G 1% /dev/shm
tmpfs tmpfs 3.9G 9.0M 3.9G 1% /run
tmpfs tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
/dev/sda1 xfs 497M 159M 339M 32% /boot
tmpfs tmpfs 781M 20K 781M 1% /run/user/0
/dev/mapper/vg00-lv00 xfs 501M 150M 352M 30% /data
/dev/sr0 iso9660 4.1G 4.1G 0 100% /mnt
/dev/mapper/mypool-lv01 xfs 497M 26M 472M 6% /test
往LVM池里新添加一块新硬盘ssm add -p mypol /dev/sdd
扩展LVM卷,将/dev/mypool/lv01卷增加300Mssm resize -s +300M /dev/mypool/lv01
注意:这只是将LVM卷在原来的基础上增加了300M,但是文件系统大小(Fs size)还没有改变,仍然是原始大小,因此我们要使用以下命令来扩大现有的XFS文件系统xfs_growfs /dev/mypool/lv01
对LVM卷创建快照
为了体现实验效果,我们往/test里面复制一些文件cp -rf /boot/* /test/
然后我们用ssm来给/dev/mypool/lv01创建快照ssm snapshot /dev/mypool/lv01
查看一些创建好的快照ssm list snapshots
-----------------------------------------------------------------------------
Snapshot Origin Pool Volume size Size Type
-----------------------------------------------------------------------------
/dev/mypool/snap20170109T203221 lv01 mypool 160.00 MB 16.38 KB linear
-----------------------------------------------------------------------------
以后每次原LVM中的数据更改,都可以手动执行ssm snapshot生成快照
模拟LVM中的数据丢失,利用快照恢复文件rm -rf /test/*
方法一:
先将原逻辑卷卸载:umount /dev/mypool/lv01
然后挂载逻辑卷快照即可mount /dev/mypool/snap20170109T203221 /test/
方法二:
通过lvconvert把快照的内容重新写回原有的lvm
同上一样,首先卸载原逻辑卷umount /dev/mypool/lv01
然后执行以下命令将快照的数据合并到原逻辑卷lvconvert --merge/dev/mypool/snap20170109T203221
最后挂载原逻辑卷mount/dev/mypool/lv01 /test