[linux-lvm] The feasibility of implementing an alternative snapshot approach
yezhiyong at bytedance.com
Wed Jan 4 08:00:18 UTC 2023
The current standard lv implementation of snapshots is COW
(Copy-on-write), which creates snapshots very quickly. However, the
first write performance of the original lv will be poor after creating a
snapshot because of COW. Moreover, the more snapshots there are, the
worse the performance of the original lv will be.
I tested the random read/write performance when the original lv was
created with different number of snapshots. The data is shown below:
Number of snapshots Randread(iops) Randwrite(iops)
0 21989 22034
1 10048 10041
2 6770 6773
3 5375 5378
There are scenarios where the performance of the original lv is more
demanding, and the speed of snapshot creation is not as strong a
requirement. Because it is the original lv that will actually be used,
and the snapshot is only a secondary function. Therefore snapshots using
the COW approach will not meet the needs of this scenario.
Therefore, is it feasible to implement another way of taking snapshots?
Let's say the first snapshot is created as a full snapshot, and all
subsequent snapshots are based on incremental data from the previous
More information about the linux-lvm