NHN Cloud Meetup 編集部
Block Storageサービスの紹介
2020.07.07
581
Block Storageサービスの紹介
TOAST Block Storageサービスは、インスタンスにディスクを提供するコアサービスです。U2タイプのインスタンスの基本ディスクを除き、すべてのディスクはBlock Storageサービスの基本サービス仕様にのっとって作成されます。TOAST Block Storageは、高可用性の物理NAS装置を基盤に構成されており、信頼性の高いインスタンスのディスクI/Oを保証します。Block Storageの基本的な使い方は、TOASTユーザーガイドに詳しく記載されていますので、ここではFAQを中心に説明します。
FAQ
追加したブロックストレージは、接続後になぜすぐ使用できないのか?
ブロックストレージとは?
Block Storageサービスが提供するディスクは、サービス名の通りブロックストレージです。ブロックストレージは、ブロックと呼ばれる基本単位でデータの読み込みや保存を行うストレージデバイスを指します。
ブロックストレージは、何番目のブロックから何番目のブロックを読め、というような形式のコマンドを処理します。データを書き込むときにも同じように、何番目のブロックから何番目のブロックに私が伝達するデータを記録せよ、というようなコマンドを処理します。
ファイルシステム
しかし、何番目のブロックにどのようなデータがあるかを記憶するのは容易ではありません。そのため、一般的にはファイルとフォルダ、またはディレクトリと呼ばれる単位でデータを階層的に保存して管理します。このような用途として、OSではファイルシステムを導入しました。ファイルシステムは、ファイルの読み取りや書き込みのアクセスを、ブロックストレージが理解できるブロックレベルの読み取りや書き込みに変換します。
ブロックストレージとは異なり、ファイルシステムはOSや用途によってさまざまで、ユーザーがシステム要件に合わせて選択して使用しなければなりません。代表的なものとして、WindowsにはNT File Systemと呼ばれるファイルシステムがあり、Linuxにはext4、XFSなどの複数のファイルシステムが存在します。ブロックストレージが用意されたときに最初に行う作業がフォーマットですが、ファイルシステムを作成する作業が、つまりはフォーマットです。
パーティショニング
ブロックストレージがインスタンスに接続されていることを確認するには、Linuxではlsblkコマンドを使用し、Windowsの場合は、ディスク管理ウィンドウを使用します。
フォーマットの前に、パーティションを分割する必要があります。パーティションは、ブロックディスクをいくつかの部分に分けて管理できるようにする技法です。単にデータの保存容量を拡張するためにブロックディスクを追加する場合は、ディスク全体を1つのパーティションとして使用する場合が多いです。インスタンスの基本ディスクの場合は、イメージに応じてログの保存スペースを別途パーティションで利用したりします。運用中のログファイルが大きくなり過ぎ、システム全体のストレージ容量をすべて使用してしまうと、システムが不安定になるためです。
パーティションの方法は、ユーザーガイドの空のブロックストレージの使用をご参考ください。
フォーマット
フォーマットはパーティション単位で行われます。一般的な用途でディスクを使用する場合は、フォーマットオプションのデフォルト値を使用しても構いません。しかし、ディスクの使用用途が明確な場合は、用途に合わせてフォーマットオプションを設定することができます。
たとえば、ファイルシステムのブロックストレージサイズをデフォルトより大きく設定することもできます。ブロックストレージサイズを大きく設定すると、大容量ファイルを保存するときにメタデータの記憶領域が少なくなり、大きなファイルを読み込む際もより速くアクセスすることができます。このようにファイルシステムによってさまざまなオプションがあるため、これらをユーザーニーズに合わせて設定すると、より高速で効率的にブロックストレージを使用することができます。
マウント
フォーマットが完了したストレージデバイスは、マウントをしてからファイルの作成や削除などの操作を行うことができます。Windowsでは、D:、E:のようにドライブ文字にマウントし、Linuxでは、ユーザーが任意のディレクトリにストレージデバイスをマウントします。
マウント時にファイルシステムにオプションを加えることもできます。フォーマットと同じように、マウントオプションも一般的な状況ではデフォルト値でも十分使用できますが、用途に応じてオプションを変更して使用することもできます。
このようなさまざまなオプションのため、TOASTはもちろん、ほとんどのクラウドサービスではフォーマットされたストレージデバイスを提供していません。クラウドサービスはブロックストレージのみを提供し、対象のブロックストレージをどのようにパーティショニング、フォーマット、マウントするかはストレージデバイスの用途とユーザーのニーズに合わせて決定する必要があります。
また、あまりにも多くのオプションが、かえって混乱を与えることがあるため、TOAST Block Storageユーザーガイドには、一般的な用途で簡単に使用できるLinuxとWindows環境のパーティショニング、フォーマット、マウントの方法を案内しています。ガイドに沿って簡単にブロックストレージを追加することができます。
運営中のサーバーのデータをバックアップしたい
バックアップの方法は複数存在します。(TOASTバックアップサービスもあります)ここでは、基本ディスクのスナップショットを利用してバックアップする方法を説明します。この方法を利用すると、運営中のサーバーにログインしていなくても、データをバックアップすることができます。
TOASTは2019年11月のリリース以降、Block Storageリストに基本ディスクを表示しています。基本ディスクは接続情報から確認できます。
接続情報には、当該ブロックストレージが使用中であるか、また使用中であればどのようなインスタンスに接続されているかが表示されます。たとえば、上図で一行目のブロックストレージの接続情報であるIU.nowの/dev/vdaを見ると、このブロックストレージはU.now というインスタンスに/dev/vdaというデバイスで接続されていることがわかります。2行目のブロックストレージのように、接続情報が-であるものは、現在使用されていないデバイスを意味します。
/dev/vdaは、インスタンスでブロックストレージを認識するIDです。インスタンスの基本ディスクが/dev/vda、2番目のディスクは/dev/vdbです。このようにディスクが追加されると、vda、vdb、vdc、…というように、vd の接頭辞にaからアルファベットが追加されて名前が決まります。基本ディスクは/dev/vdaなので、そのブロックストレージを選択し、スナップショットの作成ボタンをクリックします。
スナップショットを作成するブロックストレージは、現在UI.now というインスタンスに接続されているため、チェックボックスを選択する必要があります。ファイルシステムの整合性は保証されませんが、I/Oが非常に多い場合でなければ整合性は崩れません。なお、スナップショットのファイルシステムの整合性が崩れた場合は、スナップショットを再作成することができます。スナップショットは使用中のブロックストレージの性能や安定性に影響を与えません。
作成したスナップショットはリストから選択し、スナップショットからブロックストレージ作成ボタンをクリックして再度ブロックストレージにします。スナップショットはインスタンスに接続できないため、常にブロックストレージを作成し、作成されたブロックストレージをインスタンスに接続する必要があります。スナップショットで作成したブロックストレージをバックアップ用のインスタンスに接続してマウントし、ファイルをバックアップ用のインスタンスにコピーします。この方法を使用すると、運営中のサーバーにログインしていなくても、運営中のサーバーのデータにアクセスすることができます。
スナップショットでブロックストレージを作成する際に、時間がかかる
スナップショットでブロックストレージを作成するとき、下図のように追加設定から、ブロックストレージタイプや可用性領域(アベイラビリティゾーン)を変更できます。
ブロックストレージタイプを変更すると、コストや性能を調整することができ、可用性領域を調整すると、jp-pub-a 領域のデータをjp-pub-b 領域にコピーすることもできます。サービスの可用性のため、jp-pub-a とjp-pub-b 領域に分けてサービスしている場合、この方法でデータを移行することもできます。
ブロックストレージを追加設定を行わずに作成した場合と比べると、可用性領域やブロックストレージタイプを変更した場合、はるかに多くの時間がかかります。追加設定なしでブロックストレージを作成すると、元のスナップショットと同じ可用性領域は、同じブロックストレージタイプのストレージを作成します。TOAST Block Storageサービスは、同じ可用性領域、同じブロックストレージタイプのブロックストレージには、NASから提供されるクローン(clone)機能を利用するため、すぐにコピーできます。
一方で、異なる可用性領域、ブロックストレージタイプでブロックストレージを作成すると、NAS装置の範疇を越えてデータを複製するため、クローン機能を利用することができません。このため、スナップショットのサイズに比例してブロックストレージの作成に時間がかかることになります。
異なる可用性領域とブロックストレージタイプのブロックストレージを1つのNAS装置で運用した場合、スナップショットからブロックストレージを作成する時間を大幅に削減することができます。しかし、1つしかないNAS装置が予期せぬ原因で故障してしまった場合、すべての可用性領域のブロックストレージが使用できなくなり、障害が発生します。TOASTは高可用性のため、各ブロックストレージタイプと可用性領域に別途のNASを構築して使用しています。これにより、スナップショットの可用性領域やブロックストレージタイプを変更した際、ブロックストレージを作成するまでに多くの時間を要します。何卒ご了承お願いいたします。
(付録)ブロックストレージの活用のコツ
1.基本ディスクは過剰に大きくせずに、保存スペースが必要な場合は追加のブロックストレージを利用する
データ容量が必要なために非常にサイズが大きい基本ディスクを使用する場合があります。データの保存スペースが多く必要な場合は、基本ディスクを大きくするよりもブロックストレージを追加して利用することをお勧めします。基本ディスクを大きく作成すると、イメージを作成するのに時間がかかり、作成されたイメージ容量が大きいため、コストが増加します。また、基本ディスクはインスタンスが動作している間、継続して使用されるため、一度大きく作られたディスクは小さくするのが困難です。
2.より速いディスクが必要なら、より大きいブロックストレージを利用する
TOAST Block Storageサービスは、小さいサイズのブロックストレージがシステム全体のI/Oを独占することを防ぐため、ブロックストレージの大きさに比例して最大IOPS値を設定しています。より速いI/Oが必要なストレージデバイスが必要であれば、SSDのブロックストレージタイプで大きいサイズのブロックストレージを使用します。
3.2TB以上のディスクが必要な場合
TOAST Block Storageサービスでは、最大2TBのディスクのみ提供します。より大きいサイズのディスクが必要な場合は、2つ以上のブロックストレージを作成して、インスタンス内でソフトウェア的に接続して使用します。このような用途として、LVMのようなブロックストレージ管理ツールとZFSやBTRFSなどの次世代ファイルシステムが発売されています。