Project

General

Profile

Bug #62983

Updated by Matan Breizman 7 months ago

purged_snap_ keys stored in the monitor for each snapshots removed. 
 The keys are merged on contiguous snap id intervals. See OSDMonitor::insert_purged_snap_update(). 

 //WIP: 
 The issue is that unlike pool snapshots, self-managed snapshots allocates snap id when requesting new snapid from the monitor. This snapid is not tracked by RBD and won't be marked as purged. Those untracked ids will leave holes and won't allow adjacent purged ids to merge. 

 //WIP2: 
 snap_seq increments on snap removal and leaves gaps. 
 <pre><code class="text"> 
 for i in `seq 0 10`; do echo $i && rados -p pl mksnap snp$i snp0 && rados -p pl rmsnap snp$i; snp0; done 
 .. 
 osd_snap / purged_snap_2_0000000000000001 purged_snap_3_0000000000000001 
 osd_snap / purged_snap_2_0000000000000003 purged_snap_3_0000000000000003 
 osd_snap / purged_snap_2_0000000000000005 purged_snap_3_0000000000000005 
 osd_snap / purged_snap_2_0000000000000007 purged_snap_3_0000000000000007 
 osd_snap / purged_snap_2_0000000000000009 purged_snap_3_0000000000000009 
 osd_snap / purged_snap_2_000000000000000b purged_snap_3_000000000000000b 
 osd_snap / purged_snap_2_000000000000000d purged_snap_3_000000000000000d 
 osd_snap / purged_snap_2_000000000000000f purged_snap_3_000000000000000f 
 osd_snap / purged_snap_2_0000000000000011 purged_snap_3_0000000000000011 
 osd_snap / purged_snap_2_0000000000000013 purged_snap_3_0000000000000013 
 osd_snap / purged_snap_2_0000000000000015 purged_snap_3_0000000000000015 
 </code></pre> 

 <pre><code class="text"> 
 for i in `seq 0 10`; do echo $i && rados -p pl2 mksnap snp$i; done 
 for i in `seq 0 10`; do echo $i && rados -p pl2 rmsnap snp$i; done 
 .. 
 osd_snap / purged_snap_3_000000000000000b 
 </code></pre> 


 This can cause the monitor db to grow large and affect the monitor's startup times. 

 Reported: https://lists.ceph.io/hyperkitty/list/dev@ceph.io/message/UOJG46YXTIPOXJUSELIN42ATAD5FPMDY/

Back