前書き
ブロックストレージを使用すると、ハードドライブの使用と同様の方法で、DigitalOcean Dropletsの追加ストレージを管理できます。 ドロップレットへのブロックストレージの追加は、DigitalOceanの合理化されたGUIまたはグラフィカルユーザーインターフェイスから数回クリックするだけで実行できます。 ただし、これはより大規模で複雑な環境で動作する実用的な方法ではないため、DigitalOceanは大規模に動作するAPIを提供します。 DigitalOceanの公式コマンドラインツールであるdoctl
を介してAPIと直接対話できます。
このチュートリアルでは、doctl
を使用して、ドロップレットからブロックストレージボリュームを作成、一覧表示、アタッチ、デタッチ、および削除する方法を学習します。
前提条件
このチュートリアルを開始する前に、doctl
とDigitalOceanのブロックストレージについて理解しておく必要があります。 次の記事が役立ちます。
続行する前に、最新バージョンのdoctl
(この記事の執筆時点では1.7.1)がインストールされ、認証されていることを確認する必要があります。 doctl version
を実行して、doctl
のバージョンを確認します。 また、SSH key added to your DigitalOcean accountが必要になります。
最後になりましたが、このチュートリアルに従うには、ブロックストレージの使用を許可するリージョンの1つにドロップレットを作成する必要があります(この記事の執筆時点では、次のリージョンがブロックストレージを提供しています:BLR1、FRA1、LON1、NYC1、NYC3、SFO2、SGP1、およびTOR1)。
[.note]#Note:上記のリージョンはブロックストレージをサポートしていますが、この機能は現在、記載されているリージョンのすべてのドロップレットで使用できるわけではありません。 作業中のドロップレットがブロックストレージをサポートしていることを確認するには、作成時にボリュームをドロップレットにアタッチする必要があります。
#
ボリュームの作成
doctl
でボリュームを作成するには、コマンドに次のパラメーターを指定する必要があります。
-
volume name:この例ではfirstvolumeになります
-
region:チュートリアルでは、NYC3でボリュームを作成します
-
size(デフォルトは4TB):この例では、100 GiBに設定します
descフラグを使用して説明を提供することもできますが、これは完全にオプションです。 完全なコマンドは次のようになります。
doctl compute volume create firstvolume --region nyc3 --size 100GiB
次のような出力が表示されます。
OutputID Name Size Region Droplet IDs
______your_volume_ID1_______ firstvolume 100 GiB nyc3
この時点で、doctl
コマンドと、新しいボリュームを作成するために必要な情報がわかります。 次に、既存のボリュームの完全なリストを印刷する方法を学習します。
ボリュームのリスト
doctl
は、フォーマットされたリストに既存のボリュームを表示する機能を提供します。 ボリュームを一覧表示する理由はいくつかあります。 最も一般的な2つの方法は、後のコマンドで使用される各ボリュームのIDを表示することと、どのドロップレットにボリュームが割り当てられているかを表示することです。
現在のすべてのブロックストレージボリュームを一覧表示するには、次のコマンドを実行できます。
doctl compute volume list
これは、この例で実行されたlist
コマンドの出力です。
OutputID Name Size Region Droplet IDs
______your_volume_ID1______ firstvolume 100 GiB nyc3
______your_volume_ID1______ secondvolume 4096 GiB nyc3
______your_volume_ID1_______ thirdvolume 100 GiB nyc3 [ID]
このセクションでは、作成したボリュームのリストを表示するためのdoctl
コマンドについて学習しました。 次のセクションでは、ボリュームをドロップレットにアタッチする方法について説明します。
ボリュームの接続
アプリケーションデータや設定ファイルなどのアセットを処理するために、ドロップレットに余分なスペースが必要になる場合があります。 ボリュームを追加すると、サービスを中断することなくこのスペースを追加できます。
ボリュームを接続するには、2つの情報が必要です。
-
ボリュームID
-
ドロップレットID
前のセクションでは、doctl compute volume list
コマンドを使用してvolume IDを取得する方法を説明しました。
次のコマンドを実行してアカウントのドロップレットに関する情報を表示すると、Droplet IDを取得できます。
doctl compute droplet list
ボリュームIDとドロップレットIDの両方を取得したら、次のコマンドを実行してボリュームをドロップレットにアタッチできます。
doctl compute volume-action attach your_volume_ID your_droplet_ID
これにより、次のような出力が生成されます。
OutputID Status Type Started At Completed At Resource ID Resource Type Region
346253669 in-progress attach_volume 2017-12-28 19:53:28 +0000 UTC 0 backend nyc3
このチュートリアルの前半で、ドロップレットがブロックストレージをサポートするインフラストラクチャを使用していることを確認するために、作成時にボリュームをドロップレットにアタッチすることをお勧めしました。 その時点でボリュームをアタッチせずにドロップレットを作成した場合、ボリュームをアタッチしようとすると次のエラーが表示される場合があります。
OutputError: POST https://api.digitalocean.com/v2/volumes/your_volume_ID/actions: 422 Droplet can't attach volumes due to a region restriction
このエラーが発生した場合、指定されたドロップレットにボリュームを接続することができず、再試行する必要があります。
ボリュームを受け入れるドロップレットにボリュームを正常に接続したら、次のセクションに進んで、余分なスペースが不要になった場合にボリュームを切り離す方法を学習できます。
ボリュームの切り離し
大量のログを必要とする問題をデバッグするときや、特定の時間制限のあるデータのバックアップを作成するときなど、ボリュームを一時的にドロップレットにアタッチする必要がある場合があります。 これらの場合、使用後にボリュームをデタッチできるようにする必要があります。
ボリュームのデタッチはボリュームのアタッチに似ており、同じ情報を使用します。 コマンドと出力はわずかに異なります。
doctl compute volume-action detach your_volume_ID your_droplet_ID
OutputID Status Type Started At Completed At Resource ID Resource Type Region
346254931 in-progress detach_volume 2017-12-28 19:57:51 +0000 UTC 0 backend nyc3
この時点で、doctl
を使用してボリュームをデタッチする方法がわかりました。 次のセクションでは、不要になったボリュームを削除する方法を学習します。
ボリュームを削除する
特定のブロックストレージボリュームが不要になったら、それをデタッチしてから、削除してアカウントから削除できます。 ボリュームをデタッチしたら、削除するにはそのIDが必要になります。
doctl compute volume delete your_volume_id
このコマンドを実行すると、確認のプロンプトが表示されます。
OutputWarning: Are you sure you want to delete volume (y/N) ?
ボリュームを削除することに問題がなければ、y
を押して確認します。
ボリュームが削除されると、コマンドプロンプトに戻ります。 list
コマンドを使用して、ボリュームが削除されたことを確認できます。
ボリュームに関する情報を取得する
特定のボリュームに関する情報が必要な場合は、次のコマンドを呼び出して要求できます
doctl compute volume get your_volume_id
このコマンドの出力は、ボリュームの作成時に自動的に実行されるため、おなじみです。
OutputID Name Size Region Droplet IDs
______your_volume_ID1_______ firstvolume 100 GiB nyc3
このセクションでは、不要になったボリュームを削除する方法を学習しました。
これで、doctl
を正常に使用してDigitalOceanブロックストレージボリュームを操作するために必要なすべての情報が得られました。