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にリモート接続し、リモートセッションでローカルリソースを共有します。
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はサポートされません。