Azure File StorageのSMB共有のスピードをPowerShell使って測ってみた

プレビュー機能のAzure File Storageを、Azure上のWindows仮想マシンからネットワークドライブとしてマウントして、コピーや移動のスピードを測ってみました。

準備

Azure Storage Accountを2つ用意しました。ネットワークドライブとしてマウントするためにStorage Accountのリージョンは仮想マシンと同一リージョンに作る必要があります。

仮想マシンから以下のようなPowerShellを実行すれば用意完了です。なお今回はJAPAN EASTのリージョンを利用しています。

Import-Module Azure

#コピー元のFile共有を作成
$srcAccount = "コピー元ストレージアカウント名"
$srcKey = "コピー元ストレージアカウント名Aのアクセスキー"
$srcCtx = New-AzureStorageContext $srcAccount $srcKey
$srcShareName = "src"
New-AzureStorageShare -Context $srcCtx -Name $srcShareName


#コピー先のFile共有を作成
$destAccount ="コピー先ストレージアカウント名A"
$destKey = "コピー先ストレージアカウント名Bのアクセスキー"
$destCtx = New-AzureStorageContext $destAccount $destKey
$destShareName = "dest"
New-AzureStorageShare -Context $destCtx -Name $destShareName


#コピー元のFile共有をSドライブとしてマウント
[Char]$DriveLetter = "S"        
$cred = New-Object System.Management.Automation.PsCredential($srcAccount, (ConvertTo-SecureString $srcKey -AsPlainText -Force))
$sharefolder = "\\$srcAccount.file.core.windows.net\$srcShareName"
New-PSDrive -Name $DriveLetter -PSProvider FileSystem -Root $sharefolder -Credential $cred -Persist


#コピー先のFile共有をYドライブとしてマウント
[Char]$DriveLetter = "Y"       
$cred = New-Object System.Management.Automation.PsCredential($destAccount, (ConvertTo-SecureString $destKey -AsPlainText -Force))
$sharefolder = "\\$destAccount.file.core.windows.net\$destShareName"
New-PSDrive -Name $DriveLetter -PSProvider FileSystem -Root $sharefolder -Credential $cred -Persist



測定パターン

以下の4パターンで測定しています。ポイントは同一アカウント間と別アカウント間での速度の違いでした。

パターン アカウント ファイルサイズ ファイル数
パターン① 同一アカウント間 1.5GB 1
パターン② 同一アカウント間 300KB 5000
パターン③ 別アカウント間 1.5GB 1
パターン④ 別アカウント間 300KB 5000

 
 

ファイルコピー

ファイルコピーを以下のコマンドなどを利用して計測してみました。

fsutil file createnew S:\largefile.tmp 1536000000
Measure-Command {Copy-Item S:\largefile.tmp S:\largefile.tmp.copy}
Measure-Command {Copy-Item S:\largefile.tmp Y:\largefile.tmp.copy}

fsutil file createnew S:\Files\file.tmp.1 307200
2..5000 | %{Copy-Item S:\Files\file.tmp.1 S:\Files\file.tmp.$_}
Measure-Command {Copy-Item S:\Files S:\FileCopy -Recurse}
Measure-Command {Copy-Item S:\Files Y:\FileCopy -Recurse}

結果は以下の通りです。単位は秒です。

同一アカウント間 別アカウント間
1.5GB * 1File 1回目 45.033729 34.5335561
2回目 44.2469198 34.9677511
300KB * 5000Files 1回目 247.7446042 218.2413095
2回目 213.3896979 215.9584509

コピーに関しては同一アカウント間より別アカウント間でのコピーの方がスピードが出るようです。

ファイル移動

ファイル移動を以下のコマンドなどを利用して計測してみました。

fsutil file createnew S:\largefile.tmp 1536000000
Measure-Command {Move-Item S:\largefile.tmp S:\largefile.tmp.copy}
Measure-Command {Move-Item S:\largefile.tmp Y:\largefile.tmp.copy}

fsutil file createnew S:\Files\file.tmp.1 307200
2..5000 | %{Copy-Item S:\Files\file.tmp.1 S:\Files\file.tmp.$_}
Measure-Command {Move-Item S:\Files S:\FileCopy}
Measure-Command {Move-Item S:\Files Y:\FileCopy}

結果は以下の通りです。単位は秒です。

同一アカウント間 別アカウント間
1.5GB * 1File 0.030772 34.1577649
300KB * 5000Files 0.0220539 317.2146109

まとめ

全体的には特殊な結果は無く、通常のNASなどと同じようなイメージで使えるようです。