分页: 1 / 1

【已解决】lvm 快照的疑问?lvm的快照不是只处理元数据吗?

发表于 : 2013-02-04 2:56
ruandao
我对一个空的lv(假设名lv1)做了一个快照,然后拷贝一些数据进lv1
接着我lvdisplay下,发现lv1的快照的信息发生了变化 Allocated to snapshot 79.71%
问题是,我原先lv1里面没有内容,然后做快照的时候(快照是拷贝文件的指针对吧?),应该也是空的,然后当我在lv1上新建些数据的时候,原先的文件内容(不存在的)没有改变,那么应该不需要拷贝数据到快照空间吧 为什么会受到影响??

lv1 状况:
lvstatus.png
我把lv1 挂载在go目录里
go目录是空的
然后我用watch -n 0.5 "lvdisplay |grep snap" 来监视snap卷的变化情况
lvsnap-watch.png
snap2.png
接着我开始往go目录拷贝数据
go-data.png
然后snap卷的状况一直在变化,但是我并没有修改lv1里面原有的文件啊~~
snap3.png
当我拷贝到go目录的数据超过分配给snap的大小时,snap 好像崩溃了。。。
snap-over.png
原先对快照的想法是,如果有文件会被改变,那么先拷贝那个文件,然后再改变他 (这样子的话,只有留足整个区域的文件的总大小的空间作为快照空间即可)
但是按上面看的话,变成,如果有磁盘内容会被改变,那么拷贝那个磁盘内容,然后改变 (这样子的话,要有一样大的磁盘空间,才可以)

Re: lvm 快照的疑问?lvm的快照不是只处理元数据吗?

发表于 : 2013-02-04 18:00
lanjian9151
因为snap是跟踪块的改变,所以即便你之前的LV是空的,但你新建文件以后这一部分的块发生了变化,所以为了保持一致性他会把这些块改变之前的状态复制到snap里。

Re: lvm 快照的疑问?lvm的快照不是只处理元数据吗?

发表于 : 2013-02-06 2:47
ruandao
lanjian9151 写了:因为snap是跟踪块的改变,所以即便你之前的LV是空的,但你新建文件以后这一部分的块发生了变化,所以为了保持一致性他会把这些块改变之前的状态复制到snap里。
o