Microsoft Azure Fileサービスの紹介

Azure Storageチームが投稿した「Introducing Microsoft Azure File Service」をざっくり抜粋意訳した投稿です。

Microsoft Azure File サービスのプレビューが発表されました。
Azure Fileサービスは、標準的なSMB2.1プロトコルを使用してファイル共有を提供します。
Azureで動作するアプリケーションは、ReadFileやWriteFileのようなファイルシステムAPIを使用して仮想マシン間のファイル共有を簡単にできます。
さらに、多様なシナリオに対応できるようにRESTインターフェイス経由のファイルアクセスも提供されます。
Azure Fileはブロブ、テーブル、キューサービスと同じテクノロジー上に構築されています。つまり、プラットフォーム上で提供されている地理的冗長性、拡張性、可容性、耐久性が提供されます。

想定シナリオ

  • アプリケーションのクラウドへの上げ下げ
    アプリケーションの一部でファイル共有を使用している場合に、クラウド上でも同様にアプリケーションを運用することができます。
  • アプリケーション設定の共有
    センターマシンでアプリケーションの共通設定を持ち、複数の仮想マシンからアクセスさせられます。そのファイルの配置場所にAzure File共有が使用できます。共有ファイルへのアクセスには、ワイルドワイドにはRESTインターフェイス経由で管理します。
  • 分析データの共有
    Azure File共有は、ログやメトリックス、クラッシュダンプのような分析ファイルを保存するのに便利です。SMBとRESTインターフェイス両方が提供されており、分析データの分析と処理をする分析ツールを使用できます。
  • 開発・テスト・デバッグ
    Azure Fileにお気に入りもしくは必要なツールやファイルを共有し、それぞれの仮想マシンにインストールするときに使用することができます。

はじめてみよう

ステップ1 サービスのサインアップ

サインアップするために、Microsoft Azure Preview Portalにアクセスし、Microsoft Azure File サービスのサインアップをします。準備が完了したら、メール通知されます。サービス提供は遅めになるので、サインアップ後は辛抱強くまってください。

ステップ2 新しいストレージアカウントの作成

通知が届いたら、Azure Management Portalにアクセスし、新しいストレージアカウントを作成してください。自動的にファイルエンドポイントが準備されます。
ファイルエンドポイント:<account name>.file.core.windows.net

Azure Fileプレビューの間は、既存のストレージアカウントではAzure Fileにアクセスできません。必ず新しいストレージアカウントを作成する必要があります。

ステップ3 ファイル共有の作成

次の2種類のファイル共有の作成方法があります。

PowerShellコマンドレット

# import module and create a context for account and key
import-module .\Microsoft.WindowsAzure.Commands.Storage.File.dll
$ctx=New-AzureStorageContext  
 
# create a new share
$s = New-AzureStorageShare  -Context $ctx
 
# create a directory in the test share just created
New-AzureStorageDirectory -Share $s -Path testdir
 
# upload a local file to the testdir directory just created
Set-AzureStorageFileContent -Share $s -Source D:\upload\testfile.txt -Path testdir
 
# list out the files and subdirectories in a directory
Get-AzureStorageFile -Share $s -Path testdir
 
# download files from azure storage file service
Get-AzureStorageFileContent -Share $s -Path testdir/testfile.txt -Destination D:\download
 
# remove files from azure storage file service
Remove-AzureStorageFile -Share $s -Path testdir/testfile.txt 

REST API

REST APIバージョン2014-02-14を使用して、ファイル共有を作成することができます。

REST APIは、http(s)://<account name>.file.core.windows.net 経由で提供されます。

さらに、.NET Storage Client Library 4.0でRESTバージョン2014-02-14でAzure Fileをサポートします。NuGETでプロジェクトに追加することをお勧めします。

static void Main(string[] args)
{
     CloudStorageAccount account = CloudStorageAccount.Parse(cxnString);
     CloudFileClient client = account.CreateCloudFileClient();
     CloudFileShare share = client.GetShareReference("bar");
     share.CreateIfNotExistsAsync().Wait();
}

ステップ4 ファイル共有を使用する

ファイル共有を作成したら、共有するストレージアカウントと同じリージョンでホストされているAzureノード(VM/Worker/Webロール)からSMBまたはRESTプロトコル経由でアクセスできます。

SMB2.1プロトコル経由で共有を使用するには、次のように「net use」を実行して共有アクセスを許可する必要があります。

net use z: \\<account name>.file.core.windows.net\<share name> /u:<account name> <account key>

C:\>net use z: \\myaccount.file.core.windows.net\myshare /u:myaccount StgAccKey==
The command completed successfully.
 
C:\>dir z:\
  Volume in drive Z has no label.
  Volume Serial Number is 4038-F841
 
  Directory of z:\
 
  08/06/2013 10:51 AM 15 HelloFromWindosAzureFileService.txt
  1 File(s) 15 bytes
  0 Dir(s) 109,951,162,777,600 bytes free
 
C:\>type z:\HelloFromWindowsAzureFileService.txt
Hello World

ファイル共有のマッピングを削除するには、「net use z: /delete」コマンドを使用します。

Azure Fileにデータを移動させる方法

Azure BlobからAzure Fileはサービス隔離されています。

プレビューでは、Azure BlobからAzure Fileへのファイルコピーはサポートしていません。

さらに、プレビュー中は、Microsoft Import/Exportサービスもサポートしません。

詳細なロードマップは将来的には提供します。

プレビューの間、オンプレミスからAzure Fileサービスへのファイル転送は提供しています。

  • net use z: \\<account name>.file.core.windows.net\<share name> /u:<account name> <account key>
  • AzCopy

    AzCopyバージョン2.4で、ローカルからAzure Fileへのデータの行き来をサポートしました。

    Azure Fileにファイルを置いてしまえば、同じリージョン内にあるクラウド仮想マシンからSMBプロトコル経由で簡単にアクセスすることができます。

    ファイルサーバーで、「myfileshare」と呼ばれる共有を作成した場合、

    ローカルディスクからAzure Fileへのファイルアップロード

    AzCopy d:\test\ https://myaccount.file.core.windows.net/myfileshare/ /DestKey:key /s

    パターンに当てはまるファイルをローカルからAzure Fileへアップロードする

    AzCopy d:\test\ https://myaccount.file.core.windows.net/myfileshare/ /DestKey:key ab* /s

    Azure Fileから全てのファイルをローカルにコピーする

    AzCopy https://myaccount.file.core.windows.net/myfileshare/ d:\test\ /SourceKey:key /s

    プレビュー中は、AzCopyで次のシナリオはサポートしていません。

    ・Azure BlobとAzure File間のファイルコピー。同様にAzure File間のコピー。

    ・セカンダリリージョンからAzure Fileデータの読み取り

    ・Azure FileにShare Access Signature(SAS)を使用して接続すること

Storage Client Library 4.0 (又はREST APIバージョン2014-02-14)

Storage Client library 4.0は、サービスへのファイルアップロードと書き込みに対応しています。

共有がマッピングされた仮想マシンへのリモート接続

ファイルエクスプローラーの使用

・エクスプローラーでリモートセッションでローカルマシンからファイル共有にコピペできます。

・リモートセッションにxcopyを使用してローカルドライブからコピーできます。

xcopy \\tsclient\c\software\demo\data\*\\bn1andredstagesmb.file.core.windows.net\myshare\data\.

・Azure VMにリモート接続し、リモートセッションでローカルリソースを共有します。

image

SMBとRESTインターフェイス間の交流

SMB2.1とRESTの2種類のインターフェイスでAzure Fileは共有できます。

SMBクライアントですでに開いているファイルにRESTで操作をするとき、REST操作は、SMBクライアントによる共有モードを優先します。

詳細は、MSDNライブラリに記載されています。

REST操作とSMBアクセスモードとの互換性については、元記事を参照してください。

Azure FileとAzure BlobとAzure Diskの比較

それぞれ長所があります。

Azure File

ファイルアクセスインターフェイスとしてSMB2.1とRESTを提供します。ファイルの読み書きにネイティブファイルシステムAPIを使用するようなアプリケーションをクラウドで使用できるようになります。

1共有あたり5TBに制限されています。

Azure Blob

スケールアウトに圧倒的なアドバンテージがあるRESTインターフェイスです。

1コンテナーあたり最大500TBまでスケールします。

「copy blob」や「snapshots」APIに対応してます。

Azure Disk

Azure StorageのページブロブでVHDにフォーマットされたディスクを、永続化領域としてAzure仮想マシンにアタッチさせることができます。VHDは一つの仮想マシンだけで使え、複数の仮想マシンから共有アクセスをすることはできません。

項目 Blob Disk Files
最大サイズ 500TB/コンテナ 1TB 5TB / 1ファイル1TB
最大8KB IOPS 60MB/s Blob毎 500IOPS 1000IOPS
スループット 1TB/blob 60MB/s Disk 60MB/s File

価格

新しいSMBサービスの価格は、ここで公開されています。プレビューの間は、GA価格の50%OFFで提供されます。

SMB互換性

SMB2.1では多くの機能が提供されています。

名前付きパイプやデータストリームに対応していません。詳細については、ドキュメントを参照してください

FAQ

1.SMB 3.0はサポートされますか?

現在は2.1をサポートしています。

3.0については将来的には提供しますが、まだ提供時期を共有できる状態ではありません。

2.Active Directoryベースの認証をサポートしていますか?

ADやACLでの認証をサポートしていませんが、計画はあります。

Azure Storage アカウントキーを使用すれば、認証と承認を提供します。

3.ストレージアカウントをホストしているリージョンの外からFile Shareにアクセスできますか?

SMB2.1プロトコルは、ストレージアカウントと同じリージョン内のみ提供しています。REST APIはどこからでもあくせすすることができます。

5.Linuxからマウントできますか?

ポータルで提供している最近の2つのUbuntuイメージのみ対応しています。

linuxから共有をマウントするには、最初にクライアントツールをインストールする必要があります。

sudo apt-get install cifs-utils
sudo mount -t cifs //myaccountname.file.core.windows.net/mysharename ./mymountpoint -o vers=2.1,username=myaccountname,password=StorageAccountKeyEndingIn==,d

/etc/fstabにマウントされます。

7.Azure File用のPowerShellコマンドレットのインストール方法

最初にモジュールをダウンロードする必要があります。

zipを解答して、AzureStorageFileフォルダーを「%UserProfile%\Documents\WindowsPowerShell\Modules」にコピーします。

8.新しいエミュレーターでAzure Fileはサポートされますか?

Azure File用のSMBやREST APIはサポートされません。