如何使用Doctl操作DigitalOcean块存储

介绍

区块存储允许您以类似于使用硬盘的方式管理您的DigitalOceanDropplets的额外存储空间. 将区块存储空间添加到我们的Dropplets可以从DigitalOcean的简化GUI或图形用户界面进行几次点击。 然而,这不是在更大和更复杂的环境中运作的实际方式,所以DigitalOcean提供了一个API来规模工作。 我们可以通过DigitalOcean的官方命令行工具doctl直接与API进行交互。

在本教程中,我们将学习如何使用doctl来创建,列出,附加,分离和删除从我们的Dropplets中的区块存储量。

前提条件

在开始本教程之前,您应该熟悉doctl和DigitalOcean的区块存储。

您应该确保在继续之前安装并验证了最新版本的「doctl」(本文写作时是1.7.1)。通过运行「doctl」版本来检查您的「doctl」版本。

最后但不是最重要的是,要遵循本教程,您需要在允许使用区块存储的区域中创建一个Droplet(在此写作时,以下区域提供区块存储: BLR1, FRA1, LON1, NYC1, NYC3, SFO2, SGP1TOR1)。

<$>[注] **注:**虽然上面提到的区域支持区块存储,但此功能目前不适用于列出的区域中的所有Dropplets。

创建量

要创建一个doctl的卷,您需要为命令提供以下参数:

  • 体积名称:在我们的示例中,它将是 第一个体积
  • 区域:对于我们的教程,我们将创建体积在 NYC3
  • 大小(默认为4TB):在这个示例中,我们将它设置为 100 GiB

您也可以用 **desc ** 旗帜提供描述,但这完全是可选的。

1doctl compute volume create firstvolume --region nyc3 --size 100GiB

你应该看到一个类似于此的输出:

1[secondary_label Output]
2ID Name Size Region Droplet IDs
3______your_volume_ID1_______    	      firstvolume 100 GiB nyc3

在这一点上,你知道doctl命令以及创建新卷所需的信息,接下来,你将学习如何打印现有卷的完整列表。

列表量

「doctl」為我們提供了在格式化列表中顯示現有卷的能力. 有幾個理由你想列出你的卷. 最常見的兩個是顯示在後續命令中使用的每個卷的ID,並顯示哪個Dropplets有分配給他們的卷。

要列出所有当前区块存储量,您可以运行以下命令。

1doctl compute volume list

以下是我们示例中运行列表命令的输出:

1[secondary_label Output]
2ID Name Size Region Droplet IDs
3______your_volume_ID1______ firstvolume 100 GiB nyc3      
4______your_volume_ID1______ secondvolume 4096 GiB nyc3      
5______your_volume_ID1_______ thirdvolume 100 GiB nyc3      [ID]

在本节中,您已经学习了doctl命令,以查看您创建的卷列表。

连接量

有时,您的 Droplet 可能需要额外的空间来处理应用程序数据和配置文件等资产. 添加卷是添加这个空间而不会扰乱服务的好方法。

要添加卷,您将需要两个信息:

  • 卷 ID
  • 滴滴 ID

在上一节中,我们已经看到如何通过使用doctl计算量列表命令获取 **volume ID。

我们可以通过运行以下命令获取我们的Droplet ID,以显示我们帐户的Droplets信息:

1doctl compute droplet list

一旦我们有音量和Droplet ID,我们可以继续使用以下命令将音量附加到Droplet:

1doctl compute volume-action attach your_volume_ID your_droplet_ID

这将产生类似于此的输出:

1[secondary_label Output]
2ID Status Type Started At Completed At Resource ID Resource Type Region
3346253669 in-progress attach_volume 2017-12-28 19:53:28 +0000 UTC    <nil>           0 backend nyc3

在本教程的早期,建议您在创建时向 Droplet 附加一个卷,以确保 Droplet 使用支持区块存储的基础设施。

1[secondary_label Output]
2Error: POST https://api.digitalocean.com/v2/volumes/your_volume_ID/actions: 422 Droplet can't attach volumes due to a region restriction

如果您遇到此错误,您将无法将音量附加到指定的Droplet,并且需要再次尝试。

一旦您成功连接到接受音量的Dropplet,您可以转到下一节,了解如何分离音量,如果您不再需要额外的空间。

排放量

有些时候,您可能需要暂时只将卷附到Droplet中,例如当您正在调试需要大量日志的问题或创建某些时间限制数据的备份时,在这些情况下,我们需要在完成使用后能够分离卷。

分离一个卷类似于附加一个卷,并使用相同的信息片段. 命令和输出略有不同。

1doctl compute volume-action detach your_volume_ID your_droplet_ID
1[secondary_label Output]
2ID Status Type Started At Completed At Resource ID Resource Type Region
3346254931 in-progress detach_volume 2017-12-28 19:57:51 +0000 UTC    <nil>           0 backend nyc3

在此时刻,你知道如何使用doctl分离一个卷,在下一节中,你将学习如何删除你不再需要的卷。

排除量

当您不再需要某个区块存储量时,您可以分离它,然后通过删除从您的帐户中删除它。

1doctl compute volume delete your_volume_id

运行此命令将提示确认:

1[secondary_label Output]
2Warning: Are you sure you want to delete volume (y/N) ?

如果您确信您希望删除音量,请按y来确认。

一旦卷被删除,您将返回命令提示,您可以使用列表命令来验证卷已被删除。

获取关于一个体积的信息

如果您需要有关特定卷的信息,您可以通过召唤下面的命令来请求它。

1doctl compute volume get your_volume_id

你会发现这个命令的输出是熟悉的,因为它在创建卷时会自动运行。

1[secondary_label Output]
2ID Name Size Region Droplet IDs
3______your_volume_ID1_______    	firstvolume 100 GiB nyc3

在本节中,您了解了如何删除不再需要的卷。

您现在拥有您需要成功使用doctl来处理DigitalOcean区块存储量的所有信息。

结论

在本教程中,我们学会了如何使用doctl来添加,添加,分离,列出和删除从我们的Dropplets的卷。

现在你知道如何做到这一点,你可能想探索创建脚本并将这些脚本添加到你最喜欢的自动化工具中,例如 JenkinsDrone

Published At
Categories with 技术
comments powered by Disqus