继前面的示例之后,我们现在想要使用“ops”卷组中的额外空间,以便每天晚上进行数据库备份。为了确保写入磁带的数据是一致的,我们使用 LVM 快照逻辑卷。
快照卷是一种特殊类型的卷,它呈现快照创建时卷中的所有数据。有关更详细的描述,请参阅第 3.8 节,快照。这意味着我们可以备份该卷,而无需担心备份进行时数据被更改,并且我们不必在备份进行时使数据库卷脱机。
![]() | 在 LVM1 中,这种类型的卷是只读的,但 LVM2 默认创建读/写快照。 |
“ops”卷组中有 500 多兆字节的可用空间,因此我们将使用所有这些空间来为快照逻辑卷分配空间。快照卷可以根据需要设置大小,但它必须足够大,以容纳快照生命周期内原始卷可能发生的所有更改。因此,这里允许数据库卷发生 500 兆字节的更改应该足够了。
# lvcreate -L592M -s -n dbbackup /dev/ops/databases lvcreate -- WARNING: the snapshot must be disabled if it gets full lvcreate -- INFO: using default snapshot chunk size of 64 KB for "/dev/ops/dbbackup" lvcreate -- doing automatic backup of "ops" lvcreate -- logical volume "/dev/ops/dbbackup" successfully created |
![]() | 完整快照已自动禁用 |
---|---|
如果快照逻辑卷已满,它将被删除(变得不可用),因此分配足够的空间至关重要。所需的空间量取决于快照的使用情况,因此没有固定的方案可循。如果快照大小等于原始大小,则永远不会溢出。 |
我们现在可以创建一个挂载点并挂载该卷
# mkdir /mnt/ops/dbbackup # mount /dev/ops/dbbackup /mnt/ops/dbbackup mount: block device /dev/ops/dbbackup is write-protected, mounting read-only |
如果您使用 XFS 作为文件系统,则需要添加nouuid选项到 mount 命令
# mount /dev/ops/dbbackup /mnt/ops/dbbackup -onouuid,ro |
我假设您将拥有比这更复杂的备份策略!
# tar -cf /dev/rmt0 /mnt/ops/dbbackup tar: Removing leading `/' from member names |
备份完成后,您现在可以卸载该卷并将其从系统中删除。您应该在使用完快照卷后将其删除,因为它们会复制写入原始卷的所有数据,这可能会损害性能。
# umount /mnt/ops/dbbackup # lvremove /dev/ops/dbbackup lvremove -- do you really want to remove "/dev/ops/dbbackup"? [y/n]: y lvremove -- doing automatic backup of volume group "ops" lvremove -- logical volume "/dev/ops/dbbackup" successfully removed |