小智 7
请记住,您可以即时调整快照的大小,例如使用 lvextend。所以你可以给它们一个合理的初始大小,然后在它们变得太满时增加它们。
这甚至可以自动完成:使用 dmeventd 并在 lvm.conf 中进行设置:
# 'snapshot_autoextend_threshold' and 'snapshot_autoextend_percent' define
# how to handle automatic snapshot extension. The former defines when the
# snapshot should be extended: when its space usage exceeds this many
# percent. The latter defines how much extra space should be allocated for
# the snapshot, in percent of its current size.
#
# For example, if you set snapshot_autoextend_threshold to 70 and
# snapshot_autoextend_percent to 20, whenever a snapshot exceeds 70% usage,
# it will be extended by another 20%. For a 1G snapshot, using up 700M will
# trigger a resize to 1.2G. When the usage exceeds 840M, the snapshot will
# be extended to 1.44G, and so on.
#
# Setting snapshot_autoextend_threshold to 100 disables automatic
# extensions. The minimum value is 50 (A setting below 50 will be treated
# as 50).
snapshot_autoextend_threshold = 50
snapshot_autoextend_percent = 50
Run Code Online (Sandbox Code Playgroud)
自动扩展不会立即起作用,dmeventd 需要几秒钟的时间才能做出反应……并且 50% 的填充等级和 50% 的增长是非常苛刻的,但是对于使用非常小的快照进行测试(从而快速用数据填充快照),它们需要。
# lvcreate -n TEST_LV -L 1G /dev/base_vg
Logical volume "TEST_LV" created
# mke2fs -t ext4 /dev/base_vg/TEST_LV
mke2fs 1.42.5 (29-Jul-2012)
[...]
Writing superblocks and filesystem accounting information: done
# mount /dev/base_vg/TEST_LV /mnt
Run Code Online (Sandbox Code Playgroud)
无需以 root 身份写入文件
# cd /mnt
# chown USER .
#
$ for i in 1 2 3 4 5 6 7 8 9 10 11 12 ; do
dd if=/dev/urandom bs=1024k count=10 > /mnt/File$i
done
$
# lvcreate -n TEST_LV-SNAP -s /dev/base_vg/TEST_LV -L 25M
Rounding up size to full physical extent 28.00 MiB
Logical volume "TEST_LV-SNAP" created
# lvs /dev/base_vg/TEST_LV-SNAP; \
while true; do
lvs /dev/base_vg/TEST_LV-SNAP |
grep -v Origin
sleep 1
done | uniq
Run Code Online (Sandbox Code Playgroud)
在此运行时,启动
$ for i in 1 2 3 4 5 6 7 8 9 10 11 12 ; do
dd if=/dev/urandom bs=1024k count=10 > /mnt/File$i
sleep 10
done
Run Code Online (Sandbox Code Playgroud)
为了让 dmeventd 赶上 --- IIRC 它只每 10 秒检查一次,需要在写作中睡眠。
回到我们的输出:
LV VG Attr LSize Pool Origin Data% Move Log Copy% Convert
TEST_LV-SNAP base_vg swi-a-s- 28.00m TEST_LV 0.04
TEST_LV-SNAP base_vg swi-a-s- 28.00m TEST_LV 0.04
TEST_LV-SNAP base_vg swi-a-s- 28.00m TEST_LV 35.90
TEST_LV-SNAP base_vg swi-a-s- 28.00m TEST_LV 36.01
TEST_LV-SNAP base_vg swi-a-s- 28.00m TEST_LV 71.86
TEST_LV-SNAP base_vg swi-a-s- 44.00m TEST_LV 45.82
TEST_LV-SNAP base_vg swi-a-s- 44.00m TEST_LV 68.63
TEST_LV-SNAP base_vg swi-a-s- 68.00m TEST_LV 44.46
TEST_LV-SNAP base_vg swi-a-s- 68.00m TEST_LV 59.22
TEST_LV-SNAP base_vg swi-a-s- 104.00m TEST_LV 38.75
TEST_LV-SNAP base_vg swi-a-s- 104.00m TEST_LV 48.40
TEST_LV-SNAP base_vg swi-a-s- 104.00m TEST_LV 48.43
TEST_LV-SNAP base_vg swi-a-s- 156.00m TEST_LV 38.74
TEST_LV-SNAP base_vg swi-a-s- 156.00m TEST_LV 45.17
TEST_LV-SNAP base_vg swi-a-s- 156.00m TEST_LV 45.19
TEST_LV-SNAP base_vg swi-a-s- 156.00m TEST_LV 51.63
TEST_LV-SNAP base_vg swi-a-s- 156.00m TEST_LV 51.65
TEST_LV-SNAP base_vg swi-a-s- 236.00m TEST_LV 34.14
TEST_LV-SNAP base_vg swi-a-s- 236.00m TEST_LV 38.39
TEST_LV-SNAP base_vg swi-a-s- 236.00m TEST_LV 38.40
TEST_LV-SNAP base_vg swi-a-s- 236.00m TEST_LV 42.66
TEST_LV-SNAP base_vg swi-a-s- 236.00m TEST_LV 42.67
TEST_LV-SNAP base_vg swi-a-s- 236.00m TEST_LV 46.92
TEST_LV-SNAP base_vg swi-a-s- 236.00m TEST_LV 46.94
TEST_LV-SNAP base_vg swi-a-s- 236.00m TEST_LV 51.19
TEST_LV-SNAP base_vg swi-a-s- 236.00m TEST_LV 51.20
TEST_LV-SNAP base_vg swi-a-s- 356.00m TEST_LV 33.94
Run Code Online (Sandbox Code Playgroud)
看着它成长...