ローカル ストレージ リソースの構成

Windows Azure Platform

[このコンテンツには Windows Azure の現在のリリースに今後提供予定の機能も含まれています。]

ローカル ストレージ リソースは、ロールのインスタンスが実行されている仮想マシン (VM) のファイル システム内に存在する予約済みのディレクトリです。インスタンス内で実行されるコードは、ファイルの読み書きを行う必要がある場合、ローカル ストレージ リソースに書き込むことができます。たとえば、サービスが Windows Azure で実行されているとき、1 つ以上のロール インスタンスがアクセスする必要があるデータを、ローカル ストレージ リソースを使用してキャッシュできます。

ローカル ストレージ リソースはサービス定義ファイルで宣言します。ロールごとに任意の数のローカル ストレージ リソースを宣言できます。各ローカル ストレージ リソースは、そのロールのすべてのインスタンスに対して予約されます。ローカル ストレージ リソースに割り当てることができる最小ディスク容量は 1 MB です。特定のローカル リソースに割り当てることができる最大容量は、ロールに指定されている仮想マシンのサイズによって決まります。VM の各サイズに応じて、合計ストレージ容量が割り当てられています。あるロールについて宣言されているすべてのローカル ストレージ リソースに割り当てられるディスク容量の合計は、その VM サイズに割り当てられている最大容量を超えることはできません。VM の各サイズに割り当てられる最大ローカル ディスク容量については、「仮想マシンのサイズの構成」を参照してください。

注意

  • 開発者は、ローカル ストレージ リソース用に要求するディスク容量が VM に割り当てられている最大容量を超えないようにする責任があります。許容最大容量を超えるローカル ストレージ リソースを設定しても、許容最大容量を超える書き込み操作を試みるまでエラーは発生しません。その操作が試みられた時点で、書き込み操作がディスク空き容量エラーで失敗します。許容最大容量を超えないようにするには、特定のローカル ストレージ リソースに書き込みを行う前に、そのリソースで現在使用されているディスク容量をチェックするとよいでしょう。
  • ローカル ストレージ リソースは、インスタンスがリサイクルされる際に保持されるよう、指定することができます。ただし、VM のローカル ファイル システムに保存されたデータの永続性は保証されません。ロールで永続的なデータが必要な場合は、Windows Azure ドライブを使用してファイル データを保存することをお勧めします。Windows Azure ドライブは Windows Azure Blob サービスによって支えられているため、永続性が保証されます。詳細については、「Windows Azure ストレージ サービスの使用」を参照してください。

 

ローカル ストレージ リソースを追加する

サービス定義ファイル内でローカル ストレージ リソースを宣言するには、LocalResources 要素を WebRole 要素の子、または WorkerRole 要素の子として追加してから、リソースを表す LocalStorage 要素を追加します。LocalStorage 要素には、以下の の 3 つの属性があります。

  • name
  • sizeInMB: ローカル ストレージ リソースのサイズを指定する
  • cleanOnRoleRecycle: ロール インスタンスがリサイクルされるときにローカル ストレージ リソースを完全にクリアするか、またはロールのライフサイクルをまたいで永続するかを指定します。既定値は true です。

次のサービス定義ファイルは、Web ロールに対して宣言された 2 つのローカル ストレージ リソースを示します。

<?xml version="1.0" encoding="utf-8"?>
<ServiceDefinition xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition" name="MyService">
  <WebRole name="MyService_WebRole" vmsize="Medium">
    <InputEndpoints>
      <InputEndpoint name="HttpIn" port="80" protocol="http" />
    </InputEndpoints>
    <ConfigurationSettings>
      <Setting name="SimpleConfigSetting" />
    </ConfigurationSettings>
    <LocalResources>
      <LocalStorage name="localStoreOne" sizeInMB="10" />
      <LocalStorage name="localStoreTwo" sizeInMB="10" cleanOnRoleRecycle="false" />
    </LocalResources>
  </WebRole>
</ServiceDefinition>

サービス定義ファイルの詳細については、「サービス定義スキーマ」を参照してください。

注意

Windows Azure Tools for Microsoft Visual Studio を使用している場合は、ロールのプロパティ ページ内でローカル ストレージ リソースを定義できます。詳細については、「クラウド サービスの構築」を参照してください。

 

実行時にローカル ストレージ リソースにアクセスする

Windows Azure マネージ ライブラリは、ロール インスタンスで実行するコード内からローカル ストレージ リソースにアクセスするためのクラスを提供します。RoleEnvironment.GetLocalResource メソッドは、指定された LocalResource オブジェクトへの参照を返します。

LocalResource オブジェクトはディレクトリを表すため、このオブジェクトの読み書きは標準の .NET ファイル I/O クラスを使用して実行できます。ローカル ストレージ リソースのディレクトリのパスを決定するには、LocalResource.RootPath プロパティを使用します。このプロパティは、指定されたリソース ディレクトリも含めて、ローカル ストレージ リソースの完全パスを返します。たとえば、サービスが開発ファブリックで実行されている場合、ローカル ストレージ リソースはローカル ファイル システム内で定義されます。RootPath プロパティは、サービスが開発ファブリックで実行されている場合、次のような値を返します。

C:\Users\myaccount\AppData\Local\dftmp\s0\deployment(1)\res\deployment(1).MyService.MyService_WebRole.0\directory\localStoreOne\

サービスが Windows Azure に展開されている場合は、ローカル ストレージ リソースのパスに展開 ID が含まれます。RootPath プロパティは、サービスが Windows Azure で実行されている場合、次のような値を返します。

C:\Resources\directory\f335471d5a5845aaa4e66d0359e69066.MyService_WebRole.localStoreOne\

ロール インスタンスで実行されるコードは、インスタンスがオンライン状態になってからオフライン状態に戻るまでの間、そのロールに定義されているローカル ストレージ リソースにアクセスできます。

参照

概念

Windows Azure サービスの構成
サービス定義スキーマ

ページのトップへ