lvm快照方式进行备份

1.创建快照:

lvcreate --size 100M --snapshot --name mdb-snap01 /dev/vg0/mongodb
因为是增量快照,100M是diff的大小.
 
  
2.mount快照卷后,就开始拷贝了.采用写时定向(COW)
我猜测: 快照生成后,原始卷对应块的修改,应该是生成新的block,而旧的block因为有快照引用不会被删除.
 
  
3.快照存档
存档时umount,然后dd,gzip:
 
  
umount /dev/vg0/mdb-snap01
dd if=/dev/vg0/mdb-snap01 | gzip > mdb-snap01.gz
 
  
在mongo或mysql使用过程中,只要一个读锁,然后flush相应改动,创建实时快照,释放读锁,很短的时间就完成备份,对线上服务影响比较小.
不过我在微博上也看到一个关于性能的:
特里王某同事说他尽量避免使用 LVM 因为他做过一些测试得出的结论是相对于块设备上的同种文件系统 LVM2 有近40%的额外性能开销。这与我所知相差甚远:性能损失相对于其灵活性可以忽略。研究后发现真有此事,有无快照对逻辑卷 I/O 性能影响巨大(和 Copy on Write 有关),非得用快照的话 chunksize 越大越好
所以为了避免造成性能下降,快照卷要即时存档释放.
 
  
vmware,kvm里的快照镜像用的就是类似技术.
 
  
有时间应该动手做一次,要搞清楚何时停止快照.是在lvcreate还是umount的时候呢?
 
  
 
  
 
  
参考:
http://docs.mongodb.org/manual/tutorial/backup-with-filesystem-snapshots/
http://asram.blog.51cto.com/1442164/313073

你可能感兴趣的:(运维,Linux)