返回博客

支持自动定期快照的存储管理

支持自动定期快照的存储管理

不久前,我们推出了获取快照的功能。这是一个非常方便的功能,即使在运行中的系统上,您也可以快速高效地保存磁盘状态。

得益于 ZFS,自动快照将仅消耗当前状态与创建快照时状态之间的增量。这意味着,如果您的原始磁盘为 15GB,而快照与当前状态之间只有 1MB 的数据发生了变化,那么快照的大小将为 1MB。如果您向磁盘再写入 1MB,快照将再增加 1MB。

该系统的另一个妙处在于,任何快照都可以晋升(克隆)为完整的磁盘驱动器。这意味着您可以创建一个独立的副本,该副本可以挂载到服务器上,甚至可以完全挂载到不同的存储系统上。因此,这构成了存储管理策略的基础(取决于您的工作负载)。

警告

虽然使用定期快照可以作为备份策略的一部分,但将快照作为唯一策略是不明智的。

在许多情况下,使用这些快照也无法正常工作,例如对正在运行的数据库服务器进行快照。快照功能在已停止的数据库服务器上可能仍然有用(用于创建特定时间点的恢复),但同样,它不应该成为您唯一的备份策略。

创建自动快照

使用我们的 Python 库,自动化快照非常简单。然而,鉴于我们需要在触发快照的系统上存储 CloudSigma 凭据,我们’强烈建议您不要以不安全的方式暴露生产服务凭据。如果您想在云服务器上运行此程序,请确保它与其余基础设施隔离(例如使用我们的网络策略功能)并且已完全锁定。

安装 Python 库之后,您可以按照以下步骤下载并运行该脚本:

[bash light=”true”] $ wget https://raw.githubusercontent.com/cloudsigma/pycloudsigma/master/samples/snapshot.py
$ python snapshot.py drive-uuid my-snapshot
[/bash]

snapshot.py 需要两个参数:

  • 您要进行快照的磁盘的 UUID
  • 快照的友好名称

在您’手动创建快照并验证其正常工作后(您可以在磁盘的 ‘snapshot’ 部分看到此内容),我们现在可以将其自动化。

运行此类任务最合适且最标准化的方式是使用 crontab(假设您使用的是 Linux 或 Mac OS X)。

使用与您在上面创建快照时相同的用户运行:
[bash light=”true”] $ crontab -e
[/bash]

如果您想在每天凌晨 1 点获取快照,请添加以下行:

您’还会注意到,该脚本将记录到运行该脚本的用户的主目录中名为 snapshot.log 的文件中。

自动清除快照

由于快照会随着时间的推移而增长,您可能希望在一段时间后删除这些快照。为了解决这个问题,我们’创建了另一个可以为您执行此操作的脚本。该脚本名为 snapshot_purge.py 并且需要两个参数:

  • 磁盘的 UUID
  • 您想要保留的快照天数

例如,如果您想保留 30 天的快照,只需运行:
[bash light=”true”] $ wget https://raw.githubusercontent.com/cloudsigma/pycloudsigma/master/samples/snapshot_purge.py
$ python snapshot_purge.py drive-uuid 30
[/bash]

您当然也可以将其自动化。例如,如果我们想清除超过 30 天的快照,我们可以将以下内容添加到我们的 crontab 中(将在凌晨 1:30 运行):

总结

以上就是全部内容了,朋友们。使用这两个脚本,您将能够自动执行磁盘快照。如果您需要对多个磁盘创建快照,只需在 crontab 中添加更多带有不同 UUID 的 snapshot.py 行即可。

当然,我们还只是触及了快照功能的皮毛,但我希望这能作为在日常存储管理中使用快照的快速入门教程。

如果您有更复杂的保留数据需求,希望您可以复用上述脚本中的部分代码。

author

Viktor Petersson

作者 · CloudSigma

Preslav Dobrev 是 CloudSigma 的创意设计师,专注于通过传统和创新营销渠道打造一致的企业形象。他擅长将艺术愿景与战略营销相融合,创造具有影响力的品牌叙事。

评论

暂无评论。发表第一条评论吧。