LVM系统快照为何能直接在快照上写数据而不会对原系统产生影响?

鸟哥书中有张图介绍了LVM的原理(原本的LV为vbirdlv,快照LV为vbirdss):
snapshot.gif

对于此图我的理解是:
快照区=vbirdss+vbirdlv中未变动的PE
所以我认为实际上LVM系统快照还是要依赖真实的系统文件的

但鸟哥又说可以直接在vbirdss上胡作非为,到时候把快照vbirdss删掉就行了:

我们将原本的 vbirdlv 当作备份数据,然后将 vbirdss
当作实际在运作中的数据,任何测试的动作都在vbirdss这个快照区当中测试,那么当测试完毕要将测试的数据删除时,只要将快照区删除即可,然后复制一个vbirdlv的系统,再做另一个快照区即可。

我猜:
由于在快照上的操作不能影响到真实系统,所以对快照区的更改只能限于图中左边的vbirdss中,也就是说,如果vbirdss容量为100MB,那么更改的数据量就不能超过这个100MB,对吗?

阅读 4.8k
2 个回答

打个比方啊,不一定准确,有点像PhotoShop里面图层的概念,真实系统文件就像是最底层图层,快照就相当于上面的图层,在上面图层上修过,不影响下面图层的内容。即,如果上层图层(快照)有修改,那么以此为准,如果没有修过,,就以最底层图层(真实系统文件)为准了。

....刚看到这个(隔离23天,找到答案没有?)
我想如果我今天的提问
我们在快照分区(快照)中修改一个已存在的文件时,系统是不是先把这个文件拷贝到快照区,然后进行修改(快照区中的文件)
成立的话,应该可以解答你的问题。
大兄弟,找到答案了
under LVM2, once the file in the snapshot has been modified, an entry to that effect is made in the exception table, and when the (modified, in-snapshot) file is accessed, the blocks read are the modified snapshot blocks, not those from the original volume
LVM-HOWTO

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进