截图出自《鸟哥Linux私房菜——基础篇》
在初始状态时,快照区与原本的LV共享整个区域,当LV的数据发生变更时,旧数据会搬到快照区,然后更新LV的数据
继续上个笔记的配置
先来查看一下VG的剩余容量
[root@localhost ~]# vgdisplay
--- Volume group ---
VG Name
COOSHVG
……
Free PE / Size
0 / 0
可以看到没有可用PE了
先来扩展一下VG的容量
[root@localhost ~]#
pvscan
PV /dev/sda7
VG COOSHVG
lvm2 [1.45 GiB / 0
free]
PV /dev/sda8
VG COOSHVG
lvm2 [1.47 GiB / 0
free]
PV /dev/sda2
VG myserver
lvm2 [4.88 GiB / 0
free]
PV /dev/sda9
lvm2 [1.47 GiB]
PV /dev/sda10
lvm2 [1.47 GiB]
通过pvscan看出还有sda9和10未被使用,这里先用sda9加入
[root@localhost
~]# vgextend COOSHVG /dev/sda9
Volume group "COOSHVG" successfully
extended
[root@localhost ~]# vgdisplay COOSHVG
--- Volume group ---
VG Name
COOSHVG
……
Free PE / Size
94 / 1.47
GiB <
94个,体积为1.47G
创建快照区
先复制一些东西到lvm
[root@localhost ~]# mount /dev/COOSHVG/LV01
/lvm
[root@localhost ~]# cp -r /etc /boot
/lvm
[root@localhost ~]# ls /lvm
boot etc
lost+found
[root@localhost ~]# du -hs /lvm
42M /lvm
lvm现在的体积是42M
[root@localhost ~]# lvcreate -s -L 1G
-n COOSHSS
/dev/COOSHVG/LV01
Logical volume "COOSHSS"
created
[root@localhost ~]#
lvdisplay
--- Logical volume ---
LV Path
/dev/COOSHVG/LV01
LV Name
LV01
VG Name
COOSHVG
LV UUID
fBMPqn-Obml-S96N-ntxd-13Cq-x4xl-nJ1kiP
LV Write Access
read/write
LV Creation host, time
localhost.localdomain, 2015-09-15 15:21:47 +0800
LV snapshot status
source of
COOSHSS
[active]
<<
LV Status
available
# open
1
LV Size
2.92 GiB
Current LE
187
Segments
2
Allocation
inherit
Read ahead sectors
auto
- currently set to
256
Block device
253:1
--- Logical volume ---
LV Path
/dev/COOSHVG/COOSHSS
LV Name
COOSHSS
VG Name
COOSHVG
LV UUID
x1Qkux-v0My-V8aT-HWgJ-wd2K-9HWP-fNzQbd
LV Write Access
read/write
LV Creation host, time
localhost.localdomain, 2015-09-17 20:52:55 +0800
LV snapshot status
active destination for LV01
LV Status
available
# open
0
LV Size
2.92 GiB
<
Current LE
187
COW-table size
1.00 GiB
<
COW-table LE
64
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:0
把快照挂载
[root@localhost ~]# mount /dev/COOSHVG/COOSHSS
/snapshot/
[root@localhost ~]# df -h
Filesystem
Size Used Avail Use% Mounted
on
/dev/mapper/COOSHVG-LV012.9G
110M 2.7G 4%
/lvm
/dev/mapper/COOSHVG-COOSHSS2.9G 110M
2.7G 4% /snapshot
可以看到LVM与快照区看上去大小一样
[root@localhost ~]# rm -rf /lvm/etc
[root@localhost ~]# rm -rf /lvm/boot/
[root@localhost ~]# cp -r /var/spool/ /lvm
[root@localhost ~]# df -h /lvm
/snapshot/
Filesystem
Size Used Avail Use% Mounted
on
/dev/mapper/COOSHVG-LV012.9G
69M 2.7G 3%
/lvm
/dev/mapper/COOSHVG-COOSHSS2.9G
110M 2.7G 4%
/snapshot
[root@localhost ~]# ls /snapshot/
boot etc
lost+found
从lvm删除一些内容又新增一些内容后,看到lvm发生变化,快照区没变化
从快照区进行恢复
[root@localhost lvm]# cd /snapshot/
[root@localhost snapshot]# tar -jcf
/backups/COOSHSSBAK.tar.bz2 *
[root@localhost snapshot]# tar -jxf
/backups/COOSHSSBAK.tar.bz2 -C /lvm
[root@localhost snapshot]# ls /lvm
boot etc
lost+found
数据又回来了!
快照实际上也是有体积限制了,如此例子的体积为1G,那么如果改动的数据超过了快照体积会怎样呢?
实验:
先把快照移除
[root@localhost /]# lvremove
/dev/COOSHVG/COOSHSS
Do you really want to remove active logical volume
COOSHSS? [y/n]: y
Logical volume "COOSHSS" successfully
removed
先在LVM创建一个1.5G的文件
[root@localhost /]# dd if=/dev/zero
of=/lvm/1.5GZEROFILE bs=1M count=1500
1500+0 records in
1500+0 records out
1572864000 bytes (1.6 GB) copied, 2.68205 s, 586
MB/s
其次重新建一个LVM的快照
[root@localhost /]# lvcreate -s -n COOSHSS -L 1G
/dev/COOSHVG/LV01
Logical volume "COOSHSS"
created
此时lvm下有一个1.5G的文件,并把它删除
[root@localhost
/]# ls -lh /lvm/
total 1.5G
-rw-r--r-- 1 root root 1.5G Sep 17 21:28
1.5GZEROFILE
dr-xr-xr-x 5 root root 4.0K Sep 17 20:35
boot
drwxr-xr-x 60 root root 4.0K Sep 17 20:35 etc
drwx------ 2 root root
16K Sep 17 20:34 lost+found
[root@localhost /]#
rm -f /lvm/1.5GZEROFILE
删除lvm里的1.5G文件
[root@localhost /]# mount /dev/COOSHVG/COOSHSS
/snapshot/
[root@localhost /]# ll
/snapshot/
total 1536028
-rw-r--r-- 1 root root
1572864000 Sep 17 21:28 1.5GZEROFILE
<
dr-xr-xr-x 5 root root
4096 Sep
17 20:35 boot
drwxr-xr-x 60 root root
4096 Sep 17 20:35
etc
drwx------ 2 root root
16384 Sep
17 20:34 lost+found
[root@localhost /]# cp /snapshot/1.5GZEROFILE
/lvm
cp: reading `/snapshot/1.5GZEROFILE': Input/output
error
[root@localhost /]# umount
/snapshot/
umount: /snapshot/: not mounted
<
所以其实LVM快照功能也不是万能的。
结语:快照功能只提供一次性的备份,而且大小还是有限制。