Azure File Storage を利用してお手軽ディスク増設

こんにちわ、情報システム部 佐藤です。
mediba で提供しているサービスは Amazon AWS のテクノロジ を利用したものが多いのですが、今回は Microsoft Azure を利用して業務系システムのメンテナンスを実施したお話です。

さて、Azure File Storage が昨年末に一般提供されました。 最大の特徴は SMB 2.1 および SMB 3.0 に対応していること。 これにより、オンプレからクラウド上の共有フォルダをマウントして利用することが可能です。

Amazon AWS の 場合 S3 バケットを直接マウントしてファイルシステムのように使うツールとして s3fs や goofys などがありますが、ツールを入れるのが躊躇される場合やお手軽に試したい場合に活用されては如何でしょうか?

今回は、PowerShell から Azure File Storage を作成し Windows Server のネットワークドライブとしてマウントして利用するところまでを試します。

準備

  • Azure アカウントの入手
  • PowerShell へのコマンドラインのアップデート
    • こちら からAzure コマンドラインインターフェイスを入手できます。

Azure File Storage の用意

マウントするための共有ディスクを作成します。この作業は PowerShell が入っているクライアント端末であれば実行可能であるため、サーバーとは別の環境であらかじめ実施しておくのがお勧めです。

PowerShell

※ Azure アカウントと紐づけを行います。  
PS C:\> Add-AzureAccount  

※ サブスクリプションが複数ある場合は固定します。
PS C:\> Select-AzureSubscription -SubscriptionID:'subscriptionid'

※ 作成するストレージアカウントの名前チェックをします。
PS C:\> Test-AzureName -Storage hogehoge
詳細: The storage account named 'hogehoge' is already taken.
True

※ True が帰ってくる場合は既に存在するため Flase となる名前を探します。
PS C:\> Test-AzureName -Storage mediba
False

※ サブスクリプションで利用可能なロケーションを確認します。
PS C:\> Get-AzureLocation | format-Table -Property Name, storageAccountTypes
詳細: xx:xx:xx - Completed Operation: Get-AzureLocation
Name             StorageAccountTypes
----             -------------------
East US          {Premium_LRS, Standard_LRS, Standard_ZRS, Standard_GRS...}
・・・・
Japan West       {Standard_LRS, Standard_ZRS, Standard_GRS, Standard_RAGRS...}
Japan East       {Standard_LRS, Standard_ZRS, Standard_GRS, Standard_RAGRS...}

※ 利用可能なロケーションが返ってきます。この中から作成するロケーションを決めます。
PS C:\> New-AzureStorageAccount -StorageAccountName  -Location 'location name'
※ 'location name'には先ほどの Japan East などを指定

※ 作成したストレージアカウントにコンテナを作ります。
PS C:\> Set-AzureSubscription -SubscriptionID:'SubscriptionID' -currentStorageAccount 'アカウント名'
PS C:\> New-AzureStorageShare 'コンテナ名'

※ 作成したストレージキーをこの後の処理で使いますので出力してメモなどに保存します。
PS C:\> Get-AzureStorageKey  

以上で、Azure 側の準備は完了です。

Windows Server 側での共有ドライブのマウント

Azure File Storage をマウントするためにはインターネットに向けて TCP 445 が開放されている必要があります。Range などを絞って開放する場合、こちら の Microsoft の技術情報を参考にしてください。

コマンドプロンプト

※ 指定のドライブに共有フォルダとしてマウントします。
C:\>Net Use 'ドライブレター:' \\'アカウント名'.file.core.windows.net\'コンテナ名' /u:'アカウント名' 'ストレージキー'

以上で、Windows 側の共有フォルダとしてマウントすることができました。
見た目は、通常の共有ドライブと変わりありません。

Format は MAFS という特殊な 5TB の共有ディスクができあがりました。 top

使ってみた

作成した共有フォルダに早速ファイルをコピーして速度をチェックしてみます。
其の前にインターネットへのアップロード速度を計測しておきます。
現在の環境の上りの回線速度は以下のとおりでした。

20 Gbyte のファイルを移動してみました。

ほぼ、回線の上限値で推移をしていることがみれます。
約 30 分程度で移動をすることができました。 Japan East のロケーションを選択したからか、思った以上に速度がでます。 巨大なファイルを移動する場合は、帯域に注意が必要です。

まとめ

  • ルーターから外部に向けて TCP 445 が開放されていることを確認しよう。
  • 帯域には注意しよう。

Azure 上の仮想環境でも同様にマウントすることが可能です。 ファイルの仮置き、Azure 仮想環境への簡易移動など、ディスクイメージの退避などいろいろな用途で使ってみてはいかがでしょうか?