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. 
 Pool-snaps: 
 <pre><code class="text"> 
 for i in `seq 0 10`; do echo $i && rados -p pl mksnap snp$i && rados -p pl rmsnap snp$i; done 
 .. 
 osd_snap / purged_snap_2_0000000000000001 
 osd_snap / purged_snap_2_0000000000000003 
 osd_snap / purged_snap_2_0000000000000005 
 osd_snap / purged_snap_2_0000000000000007 
 osd_snap / purged_snap_2_0000000000000009 
 osd_snap / purged_snap_2_000000000000000b 
 osd_snap / purged_snap_2_000000000000000d 
 osd_snap / purged_snap_2_000000000000000f 
 osd_snap / purged_snap_2_0000000000000011 
 osd_snap / purged_snap_2_0000000000000013 
 osd_snap / purged_snap_2_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> 

 Self-managed: 
 <pre><code class="text"> 
 for i in `seq 0 10`; do echo $i && rbd snap create pl1/img@snp$i && sleep 1 && rbd snap rm pl1/img@snp$i && sleep 1; done 
 .. 
 osd_snap / purged_snap_2_0000000000000019 

 </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