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/