Microsoft Azureのオブジェクトストレージサービス 「Azure Blob Storage」について詳しく解説!

はじめに

Microsoft Azure(アジュア)は2010年に提供を開始したクラウドサービスです。Amazonが同じクラウドサービス「AWS(Amazon Web Services)」の提供を開始したのは2006年、Googleが「GCP(Google Cloud Platform、現在のGoogle Cloud)」の提供を開始したのは2008年なのでAzureはやや遅れてのリリースとはなったものの、2023年第1四半期のクラウドインフラ市場シェア(Synergy Research Group、Canalys調べ)によるとAzureはAWSに次いで2位のシェア率を誇り、その差を少しずつ縮めている状況です。

Azureの提供するサービス形態は大きく分類するとIaaS(Infrastructure as a Service)とPaaS(Platform as a Service)であり、仮想マシンの「Azure Virtual Machines」やプライベートネットワークの「Azure Virtual Network」、ブロックストレージの「Azure Disk Storage」、リレーショナルデータベースシステムの「Azure SQL Database」といった基本的なサービスの他、機械学習モデル構築・運用が可能な「Azure Machine Learning」やサーバーレスでコード実行することに特化した「Azure Functions」といった250以上の豊富なサービスが提供されています。

AzureはMicrosoftの強力なバックボーンネットワーク環境下でサービス提供がされており、日本国内の東日本、西日本含め世界各国に55カ所のデータセンターを所有しています。Azureデータセンター(リージョン)としては60カ所以上あり140か国で利用が可能となっているため、海外向けのシステム運用をしたい場合も地理的に近いリージョンでの構築をすることも可能です。

また、もちろんAzure上だけでシステムの構築・運用は可能ですがハイブリッドクラウド(マルチクラウドとも言われる)としてオンプレミス環境と連携した利用も可能です。クラウドサービスには従量課金制等の独自な仕組みによってコスト削減が実現できる、マネージドサービスであることにより大幅に作業工数を削減できる等のメリットがあるものの、必ずしもクラウドへの移行が正解ということではありません。そのため一部システムをクラウドへ移行して連携しながら運用できるという点はAzureの大きなメリットと言えるでしょう。

その他にもAzureには各種Microsoft製品やWindowsとの相性が良いこと、コンプライアンスやセキュリティ対策に関する機能やサービスが豊富であること、1年または3年分を前払いすることでの大幅な割引サービスや無料利用枠の提供があること等、多くの独自メリットがあります。

今回はそんなAzureで提供されているオブジェクトストレージサービス「Azure Blob Storage」について紹介していきます。ひとえにストレージと言っても特徴や仕組みはそれぞれ異なり、用途に合わせたものを選択することでシステムの性能を高めることが可能となります。逆に適さないものを選ぶとコストの増加や処理速度の低下を招くことにもなりかねません。そのため各ストレージの特徴を正しく理解したうえでサービスを選定することはとても重要です。

Azureやクラウドサービス前半の学習をしている方、ストレージの違いについて詳しく知りたい方、現在稼働中のシステムにAzure Blob Storageが利用されているものの詳しい仕組みを知らないという方は是非ご覧ください。

Microsoft Azureの提供するストレージサービスについて

Microsoft Azureではオブジェクトストレージとして「Azure Blob Storage」、ブロックストレージとして「Azure Disk Storage」、ファイルストレージとして「Azure Files」といったサービスを提供しています。

これらのストレージはGCPやAWSでも同じように提供されており、オブジェクトストレージはGCPの「Cloud Storage」、AWSの「Amazon S3」、ブロックストレージはGCPの「Persistent Disk」、AWSの「Amazon Elastic Block Store」、ファイルストレージはGCPの「Filestore」、AWSの「Amazon Elastic File System」があります。

今回は「Azure Blob Storage」を含めたAzureのストレージサービスについて紹介しますが、ストレージによってどの会社のクラウドサービスを利用するかを検討しているという場合は、各社のサービスについても詳しく調べたり試したりしたうえで本番システムに導入することをおすすめします。

なおAzureに関しては、すでにWindows・Windows ServerやMicrosoft365を利用している企業に適したクラウドサービスと言えます。一部製品については既存のライセンスをそのままAzureに適用できるため、ライセンス料を新たに支払う必要がありません。Web関連サービスにおいて高可用性やスケーラビリティを求める場合や、個人情報や機密情報といった保護が必須となるデータを扱うシステムを運用する場合等にもAzureが適しています。

またAzureでは無料のAzureアカウントを作成するだけで30日間限定で使用可能な200ドルのクレジットが付与され、そのクレジットの範囲内で自由にAzureの各種サービスを利用することができる他、常時無料で利用できるサービスもあります。さらに、今回紹介するAzure Blob Storageこそ該当しないものの、別途サービスごとに無料利用枠が設けられていることもあるので、ぜひこれらを利用してサービスの選定をしましょう。テストや検証程度での短期間の利用であれば一切コストをかけずに利用できる可能性が高いです。

ストレージの種類について

ここでは各ストレージの特徴や違いを紹介すると同時に、Azureで提供されている各ストレージサービスについても紹介します。なお、Azure Blob Storageについては今回メインで取り上げるため、次の項目で紹介します。

オブジェクトストレージ

端的に表すと、階層構造を持たずデータをフラットに管理できるタイプのストレージです。ユーザーが任意に設定できるものを含めた多様なメタデータが付与でき、そのメタデータはオブジェクトと一緒にユニーク(一意)の識別子を持ってアドレス空間に保存されます。なおアドレス空間とは、アドレスの指定によって参照できるメモリ領域のことです。アドレス空間に保存されているため、特定のキーによって参照したいデータにランダムアクセスが可能なインデックスの作成も簡単に行えます。これらの仕組みによってストレージのどこに格納されたかわからないデータを素早く検索することが可能となっています。またメタデータによって複数の属性情報によるグルーピングをすることも可能です。

またオブジェクトストレージは離れた場所にあるサーバー同士を同じストレージプールとして認識させることが可能なので、共通のストレージを利用できる他、急なスケールアウトにも対応できる仕組みとなっています。さらにファイルストレージではCIFS(Common Internet File System)やNFS(Network File System)といったプロトコルを使ったアクセスが行われるのに対し、オブジェクトストレージでは幅広く利用されているHTTP(S)でのアクセスが利用可能なため、REST APIを利用した様々な環境からのアクセスができます。

ビデオや音声、圧縮ファイル、実行ファイルと言ったデータ形式に囚われない非構造化データに対応しており、大規模であっても処理が可能という点もオブジェクトストレージの大きな特徴の一つです。このオブジェクトストレージに該当するAzureのサービスが今回取り上げる「Azure BLOB Storage」ですが、サービスの詳細については次の項目で解説していきます。

ブロックストレージ

名称にもあるように、データをあらかじめ容量の決まった「ブロック」という単位で管理するタイプのストレージです。なおブロックはさらに「ボリューム」という単位の記憶領域でも分割されており、ブロックとボリュームにはそれぞれにユニークなアドレスが付与されてます。

ブロックの容量は決まっているためブロックの容量以上のデータが格納される場合も要領が変化することはありません。その代わり複数のブロックに渡ってデータを分割して格納されることとなります。分割されたデータの参照がリクエストされた際にはブロックごとのデータが再結合されて結果を返します。データの参照はアドレスに対して行われるため、分割されたデータを格納したブロック同士が隣り合っている必要もありません。

なおブロックストレージもオブジェクトストレージと同様に階層構造を持たないためデータへのパスを複数指定でき、その結果アクセスが高速になるというメリットがあります。メタデータは付与できませんがパフォーマンスの効率を求められるシステムに適したストレージとなります。また実際にブロックストレージをOSから利用する場合はファイルシステムを構築したうえで、それを介してアクセスすることとなります。

Azureでブロックストレージに該当するサービスは「Azure Disk Storage」で、ディスクサイズとタイプを選択することでOSディスク、データディスク、一時ディスクといった様々な用途としてVMにアタッチすることが可能です。

保存されたデータはサーバーサイドの暗号化によって保護される仕組みとなっていますが、「Azure Disk Encryption」を利用することでVM単位での暗号化もできるようになる他、Azure Backupと連携することでデータ破損や意図しない削除が発生した場合の対策を採ることもできます。さらにアベイラビリティセット、アベイラビリティゾーンといった機能と合わせることでデータセンターやゾーンといった規模の大きいレベルで障害が発生してもシステムを保護することができるといったように、Azureのその他サービスと連携性に優れていると言えます。

Azure Disk StorageにはUltra Disk Storage、Premium SSD、Standard SSD、Standard HDD といった4つのディスクストレージオプションが用意されており、用途によって適切に使い分けることでシステムの性能を上げることが可能となります。例えば、ワークロードの多いデータベースやSAP HANAのパフォーマンスを上げたい場合はUltra Disk Storage、パフォーマンスが重視されるシステム環境においてはPremium SSD、ある程度のパフォーマンスを求めるものの、テスト環境・開発環境等のように使用頻度が多くない場合はStandard SSD、重要度の低いデータを保存する場合はStandard HDDというような使い分けが考えられます。コストは以上のディスクの種類とサイズによって異なるため、適切に使うことで無駄なコストをかけずに済みます。

ファイルストレージ

フォルダやディレクトリという要素があり階層的にデータを管理するストレージで、Windowsのパソコンやサーバーを利用したことがある方であれば馴染み深いシステムとなることでしょう。Windowsのファイルシステムを利用するためのツール「エクスプローラー」で分かるようにファイルストレージは一つのデータに対してパスは一つであり、「C:\Program Files:\Java」のように階層を辿ってアクセスすることとなります。macOSやLinuxでも同じようなファイルストレージを利用することが可能です。なおメタデータに関してはファイル名や作成日、サイズ、データの種類といった必要最低限のものが付与されます。Windowsではファイルやフォルダを右クリックして「プロパティ」を開くとこれらの情報が確認できます。

プロトコルにはCIFSやNFSが利用されHTTP(S)は利用できないもののファイル共有サービスによってネットワークを介したアクセスは可能であり、人間には直感的にわかりやすいタイプのストレージです。なおLinuxのディストリビューション等を開発しているRed Hatのサイト内でストレージの種類について紹介されていましたが、ファイルストレージについてはファイルキャビネットでのデータ管理を例に説明されていました。キャビネット、引き出し、フォルダーによって階層的にデータが管理されている様が階層的なファイルストレージの仕組みに似ています。

しかし初心者には扱いやすい一方、大容量のファイルを保存しようとすると他のストレージに比べてストレージ領域を多く占める仕組みとなっているため、この場合は適していません。また非構造化データの管理にも向いていません。細かい処理が多発するデータを扱う場合にはファイルストレージが適していると言えるでしょう。

Azureでファイルストレージに該当するサービスは「Azure Files」で、クラウドからだけではなくWindows、Linux、macOSといった各種OSで構築されたオンプレミス環境からのアクセスも可能です。もちろんオンプレミスで運用しているファイルシステムをAzure Filesに移行することも可能な他、コンテナーサービスの「Azure Container Instances」の永続ストレージとして利用することもできます。Azure上からはファイルシステムAPIを利用して共有データにアクセスします。

アプリケーションレベルのネットワークプロトコルであるSMB(Server Message Block)やNFSに対応している他、ファイルストレージであるにもかかわらずHTTPSにも対応しています。クラウドサービスならではの高可用性、容量不足を解決するスケーラビリティ、Azure Backupと連携したバックアップやレプリケーションによる冗長化といったDR(ディザスタリカバリ)、Azure AD(Active Directory)と連携したセキュリティ対策も可能です。

「Premium」「トランザクション最適化」「ホット」「クール」といった4種類のサービスレベルが用意されており、レイテンシー等のパフォーマンス性やワークロードの頻度等によって適したレベルを選定して利用することとなります。Azure Filesにも1年または3年分を前払いすることでの割引システムがあり、10TiBまたは100TiBの予約容量から選択可能です。

Azure BLOB Storageの特徴

BLOBは「Binary Large Objects」の略であり、狭義ではストレージに保管されるデータのことを指します。Azure BLOB Storageと言った場合は、Azureのオブジェクトストレージサービスのことを指します。またBLOBが格納される箱をコンテナーと言いますが、同じオブジェクトストレージサービスであるAmazon S3やCloud Storageではこのコンテナーのことを「バケット」と言います。

オブジェクトストレージなのでもちろんBLOB自体は階層構造は持ちませんが、構造としては一つのストレージアカウントに複数のコンテナーが紐付き、その中に複数のBLOBが存在するという構成になっています。なお一つのAzureのサブスクリプションにおいてストレージアカウントは最大100個まで作成が可能であり、コンテナー数、BLOB数は無制限となっています。

やや細かい部分となりますがそれぞれの名称には命名規則があり、ストレージアカウント名の場合は3~24文字以内の英小文字・数字、コンテナー名の場合は英小文字か数字で始まる3~63文字以内の文字列で記号は「-(ダッシュ)」のみ使用でき、ダッシュをコンテナー名の最初や最後に使用すること、連続させることはできません。BLOB名は1〜1024文字で大文字小文字は区別されます。

仮想マシンにアタッチしての利用こそできないものの、HTTP(S)を使ったアクセスができるためプログラムからの利用も比較的簡単にできます。なおURLは「http://(ストレージアカウント名).blob.core.windows.net/(コンテナー名)/(BLOB名)」というように入力することで対象のBLOBにアクセスできます

また、Azure Blob StorageはJava、.NET、Python、Node.js、Go、PHP、Rubyといったプログラミング言語やフレームワークに対応しており、モバイルやWeb、クラウドネイティブアプリケーションにおけるスケーリング、セキュリティ、可用性を実現できます。複数のストレージ層と自動ライフサイクル管理を利用することでPB(ペタバイト)にも及ぶ大容量データも効率的に管理することができます。PBはあまり聞き慣れない単位かもしれませんが、1,000TBが1PBとなります。1PBあると一般的な書籍の5000億ページ分相当のデータを保持することが可能とも言われています。

以上のような特徴により、画像やドキュメントデータのブラウザへの直接配信やバックアップデータの保存、分析に使うビッグデータの保存、動画・音楽のストリーミング配信といったユースケースが考えられます。

5種類のストレージアカウント

Azure Blob Storageでは標準ストレージ(HD)またはプレミアムストレージ(SSD)の利用が可能ですが、ストレージアカウントは汎用v2アカウント、汎用v1アカウント、BlobStorageアカウント、FileStorageアカウント、BlockBlobStorageの5種類が用意されています。汎用v2はBlob・Files・Queue・Table・Disk用の基本アカウントで最新機能も利用できます。汎用v1は従来型のアカウントで最新機能は利用できないものの汎用v2へのアップグレードが可能です。BlobStorageはブロックBlobと追加Blob専用のアカウントで汎用v2を代用することも可能です。FileStorageはPremiumパフォーマンスの特性を持つファイル専用のアカウント、BlockBlobStorageはブロックBLOBと追加BLOBにおけるPremiumパフォーマンスの特性を持つアカウントです。

3種類のストレージレベル

ストレージレベルとしてはアクセス頻度が高いデータを保存する「ホット」、逆に頻度が低いデータを保存する「クール」、ほとんどアクセスが発生しないデータを保存する「アーカイブ」の3種類があります。ホットのストレージコストと比べクールやアーカイブはコストが低くなるものの、アクセスコストは高くなるという仕組みになっています。なおアーカイブには読み取りが行えない状態でデータが保存されているため、読み取りが必要となる場合はホットやクールへの切り替え(リハイドレートという)を行う必要があるということを覚えておきましょう。

3種類のレプリケーション方式

冗長性を保つためのレプリケーションのオプションは全部で4種類あります。一つはプライマリリージョンに3つのコピーを作成する「ローカル冗長ストレージ(LRS)」ですが、データセンター全体に障害が発生した場合は利用不可となります。二つ目はプライマリリージョンに3つのAzure可用性ゾーン(物理的に離れたAzureのデータセンター)間でデータをコピーする「ゾーン冗長ストレージ(ZRS)」です。

三つ目はローカル冗長ストレージと同じくプライマリリージョンに3つのコピーの作成をしつつセカンダリリージョンにもコピーを作成できる「geo冗長ストレージ(GRS)」で、プライマリに障害が発生してもセカンダリにフェールオーバーしてシステムを維持することが可能となります。四つ目は、ゾーン冗長ストレージと同様のコピーと合わせてセカンダリリージョンにもコピーができる「geo ゾーン冗長ストレージ(RA-GZRS)」です。

BLOBストレージの作成方法

Azure Blob Storageを利用する方法は非常にシンプルです。なお、Azureのその他ストレージサービスを利用する場合と同様にあらかじめストレージアカウントを作成する必要があります。前述したストレージアカウントの種類を参考にAzure Portalで「ストレージアカウント」と入力して検索し、作成を進めてください。

アカウントを作成したらコンテナーの作成に移ります。ストレージアカウントの詳細ページから「コンテナー」をクリックし、名前の入力やパブリックアクセスレベルの選択をして作成を完了します。

コンテナの作成まで完了したら実際にデータのアップロードが可能となります。なおアップロードする方法としては「Microsoft Azure Storage Explore」と「AzCopyツール」の2通りがあります。コマンドラインで操作したい場合はAzCopyツールを利用しましょう。なおいずれもあらかじめ利用端末にインストールしておく必要があります。

今回詳細は省きますがAzCopyツールの場合はAzCopyコマンドで操作を行います。Microsoft Azure Storage Exploreの場合は、まず「アカウントの設定」から「アカウントの追加」のアイコンをクリックし、アカウントの資格情報を入力します。その後Azure Storageへ接続し、「アカウント名」に設定したアカウント名を入力します。

アカウントが表示されたら「BLOBコンテナー」を右クリックして「BLOBコンテナーの作成」を選択します。最後にアップロードを行いたいBLOBコンテナーを選択して「アップロード」ボタンからデータのアップロードができます。なおデータのダウンロードをしたい場合は「ダウンロード」ボタンから行えます。

まとめ

今回はストレージの種類やAzureで提供されているストレージサービス全般を紹介しつつ、オブジェクトストレージサービスであるAzure Blob Storageについて紹介してきました。使い方自体はとても簡単ですが、ストレージは仕様を十分に理解したうえで利用しないとパフォーマンスの低下に繋がったり、無駄なコストを発生させてしまったりという可能性があります。ぜひ今回の記事をきっかけにAzure Blob Storageの特徴を頭に入れていただき、その他ストレージについても学習したうえで適切なストレージを選定いただくことをおすすめします。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です