Windows Azure

すでにムッシュが、「Microsoft® SQL Server® Backup to Microsoft Windows® Azure®Tool を使ってみる」で紹介していたのですが、自分も触ってみました。

SQL Server 2005以降に対応したツールで、SQL Serverネイティブで提供されているAzure StorageのBlobにバックアップする機能が無いバージョンでもBlobにバックアップファイルをシームレスに保存リストアできます。

このツールをインストールすると、裏側で「Microsoft SQL Server Backup to Windows Azure Tool サービス(実態は、SQLBackup2Azure.exe)」が動くようになります。

  1. このサービスは、指定パス(もしくは全ディレクトリ)・拡張子を監視します。
  2. 指定した条件にマッチするファイルが出来上がると、自動的にバックアップファイルをBlobのコンテナーに転送します。
  3. コンテナーに転送が完了すると、ローカルにはスタブファイルを生成します。スタブファイルの中身は、コンテナーでのバックアップファイル名とスタブファイル名、ストレージアカウント名、コンテナー名、ファイルサイズ、圧縮後サイズなどが記録されています。
  4. リストアするときには、そのスタブファイルを指定するとシームレスにBlobからバックアップファイルをダウンロードしリストアします。

スタブファイルを削除してしまった場合

スタブファイルは普通のファイル(テキストファイル)です。

image

このファイルを消してしまった場合は、Blobコンテナーからローカルにダウンロード(*.bak)し、元の場所に配置すれば、すぐ利用できるようになります。

image

圧縮処理

このツールの機能で、バックアップファイルが圧縮されます。
そのため、SQL Serverのバックアップファイルの圧縮とは併用しないことが推奨されています。

ツールのメリット

  • ローカルストレージには、6KB程度のスタブファイルしか保持しないので、ストレージ容量を節約することができます。
  • また、Blobは3重化(地理ロケーションが有効だと6重化)されているので、安全にバクアップファイルを保持することができます。
  • シームレスに動作するので、ユーザーはAzure Blobを意識することなく、シームレスに利用できます。

Windows Azure

Windows Azure Powershellとは

GitHubリポジトリ:https://github.com/WindowsAzure/azure-sdk-tools

開発者と管理者がWindows Azureアプリケーションを管理したり、デプロイしたり、開発するためのPowerShellコマンドレットです。

SQL Azure関連の機能

  • データベースサーバー、データベース、FirewallルールのCRUDに対応
  • データベースサーバーの容量情報の取得
  • データベースサーバーのサービスs指定のGet/Setに対応

更新履歴:参照元

2013.07.18 Version 0.6.17

  • 参照するWindows Azure SDKのバージョンを1.8から2.0へ更新しました。
  • サブスクリプションの所有者の場合、SQL Azure DatabaseのCRUDコマンドレットは、SQL認証不要になりました
  • Get-AzureSqlDatabaseServerQuota は、指定したWindows Azure SQL Databaseサーバーの容量情報を取得するためのコマンドレットです。
  • SQL Azureサービスの対象をサポートしました。
    ・Get-AzureSqlDatabaseServiceObjective は、Windows Azure SQL Databaseサーバーを指定するためのコマンドレットです。
    ・Set-AzureSqlDatabase にWindows Azure SQL Databaseを指定するための -ServiceObjective パラメーターを追加しました。
  • Get-AzureWebsite のローカルキャッシュ問題を修正しました。新しい Get-AzureWebsite は常に最新のWebサイトの情報を返します。

2013.06.24 Version 0.6.16

  • Add-AzureEnvironment は、Windows Azure Packのようにカスタマイズ環境を追加するコマンドレットです。
  • Set-AzureEnvironment は、Windows Azure Packのようにカスタマイズ環境をセットするコマンドレットです。
  • Remove-AzureEnvironment は、Windows Azure Packのようにカスタマイズ環境を削除するコマンドレットです。
  • Webサイトコマンドレットは、Windows Azure Packをサポートしました。
  • Service Busコマンドレットは、Windows Azure Packをサポートしました。
  • Windows Azure Packをサポートした全てのコマンドレットに、WAPackプレフィックスを追加しました。「help WAPack」を使用すると、サポートする全てのコマンドレットを確認できます。
  • New-AzureQuickVM と Add-AzureProvisioningConfig に -NoWinRMEndpoint パラメーターを追加しました。
  • New-AzureSqlDatabaseServerFirewallRule に -AllowAllAzureSerivces パラメーターを追加しました。
  • 仮想マシン、クラウドサービス、Webサイトの診断周りの多くのバグを修正しました。

Windows Azure

AzCopyについては、MSエヴァの佐々木さんのBlog「azcopy – BLOB へファイルをやったり取ったり」や自分の過去の投稿「AzCopy–Windows Azure Blob用のファイルアップロード・ダウンロードツールがリリース」で紹介しています。

今回の投稿は、Windows Azure Storage Team Blogに投稿されたCTP2のリリースを知らせる「AzCopy – Using Cross Account Copy Blob」をざっくり意訳した投稿です。

AzCopy CTP2は、ここからダウンロードできます。参考用にAzCopy CTP1について説明したブログはここ(英語)です。

CTP2で追加された新機能

  • アカウント間のBlobのコピーをサポートしました。
    AzCopyは同一ストレージアカウント間、異なるストレージアカウント間のBlobコピーを可能にします(アカウント間のBlobコピーの詳細については、このBlog(英語)を参照してください)。アカウントから別のアカウントへBlobを移動する際のコストと時間を効率的にします。ストレージサービスがデータ転送を実施するので、あなたが転送元からBlobをダウンロードし、転送先にアップロードする必要はありません。
    /Z を使用して、再開可能モードで転送することができます。
  • /MOV を追加しました。
    このオプションは、コピー後、転送元から移動したファイルを削除します。
  • /NC を追加しました。
    ネットワーク並列度を指定することができます。デフォルトでは、ローカルコンピューターからWindows Azure Storageにファイルをアップロードするとき、AzCopyは並列タスクを実行するためにコンピューターがもっているコア数の8倍をネットワーク並列処理に使用します。たとえば、4コアのPCの場合、AzCopyは32個のネットワーク並列処理を実行します。CPUやネットワーク帯域使用量を制限したい場合は、/NCを使用して制限することができます。
    この値は、絶対値を指定するもので、コアごとの使用数を指定するものではありません。上の例で半分にしたい場合は、/NC:16 を指定します。
  • /SNAPSHOT を追加しました。
    スナップショットでBlobを転送できるようにします。
    AzCopy CTP1では、デフォルトでBlobのスナップショットを転送していました。今回のバージョンからは、Blobをコピーしている間、AzCopyはスナップショットを転送しません。
    /SNAPSHOTオプションを指定した場合のみ、AzCopyはBlobのスナップショットをすべて転送します。しかし、転送先ではオリジナルのBlobのスナップショットの代わりに複数のBlboに分かれています。転送されたBlobのスナップショットは次のような名前に変更されます。[blob名](スナップショット日時)[拡張子]。
    たとえば、転送しようとしたrename.txtファイルが3回スナップショットされていた場合、転送先では次のようなファイル名で格納されます。readme (2013-02-25 080757).txt / readme (2012-12-23 120657).txt / readme (2012-09-12 090521).txt
  • /@:response-file: を追加しました。
    ファイルにパラメーターを格納し、コマンドラインで指定した場合、AzCopyによって実行されます。パラメーターファイルは、1パラメーターにつき1行で記載し、複数行記載することができます。

使用例

異なるストレージアカウントへのコピー

AzCopy https://<sourceaccount>.blob.core.windows.net/<sourcecontainer>/ https://<destaccount>.blob.core.windows.net/<destcontainer>/  /sourcekey:<key> /destkey:<key> /S

スナップショットをコピーする場合

AzCopy https://<sourceaccount>.blob.core.windows.net/<sourcecontainer>/ https://<destaccount>.blob.core.windows.net/<destcontainer>/  /sourcekey:<key> /destkey:<key> /S /SNAPSHOT

コピー元からファイルを消したい場合

AzCopy https://<sourceaccount>.blob.core.windows.net/<sourcecontainer>/ https://<destaccount>.blob.core.windows.net/<destcontainer>/  /sourcekey:<key> /destkey:<key> /MOV /S

次のような応答ファイル「myAzCopy.txt」を作成し、実行する場合。

#URI of Source Container
https://<sourceaccount>.blob.core.windows.net/<sourcecontainer>/
#URI of Destination Container
https://<destaccount>.blob.core.windows.net/<destcontainer>/

AzCopy /@:C:\myAzCopy.txt /sourcekey:<key> /destkey:<key> /MOV /S

あああ

Windows Azure

MSDNブログ「AzCopy – Uploading/Downloading files for Windows Azure Blobs」を抜粋意訳した投稿です。

Windows Azure Blobストレージとローカルファイルシステム間のファイルのダウンロードやアップロードを簡単にできるようにしたいとの要望は、Windows Azure Storageチームがよく受ける要望の一つです。

Windows Azure Storageチームは、コマンドラインツールであるAzCopy(ベータ版)をリリースしました。このツールは、Windows Azureストレージアカウントの内外にデータを転送するタスクを観覧にできるようにするために設計されました。
このツールはスタンドアロンツールとしても、既存のアプリケーションに統合することもできます。

このツールは、Githubからダウンロードできます。

使ったことがあるかもしれませんがrobocopyのようなMicrosoftの他のファイルコピーツールにとても似ています。構文は次のようになっています。

AzCopy <Source> <Destination> [filepattern [filepattern…]] [Options]

特徴

効率的で柔軟性のあるツール

AzCopyは、コピーするデータを選択しやすくなっています。
再起モードを使用すると、ネストさえたディレクトリ配下にあるファイルをコピーすることができます。

ファイルパターンを指定できます。
WindowsファイルシステムやWindows Azure Blobストレージのプレフィックスからワイルドカードで選択できます。さらに、アーカイブ属性を持っているファイルをコピーするというオプションを設定することもできます。

とても多くのファイルをコピーするとき、ネットワークやほかの問題でコピーに失敗するかもしれません。再開オプションは、まだコピーしていない、コピーに失敗したところからコピー処理を再開できます。

Windows Azure ストレージデータ型のサポート

AzCopyは、ストレージアカウントで、ブロックBlobかページBlobかをdestination dataオプションで指定することができます。デフォルトでは、ブロックBlobに設定されています。
ページBlobオプションを賜与王すると、Blobは512バイトごとに0詰めされます。

ネーミングルール

URIフォーマット(httpやhttps)はBlobストレージパスの指定に、NTFS Windows ファイルフォルダーパスはWindows ファイルシステムで使用されています。
Blob名の中には、そのままWindows ファイルシステムに転送できないものもあります。AzCopyはWindowsファイルシステム名に変換するときに、独自のルールを使用します。

Windowsファイル名としてBlob名が使用できない場合は、次のルールを使用します。
「.」は「dot」
「..」は「dotdot」
「/」は「slash」
他には、重複を回避するためにファイル名やBlob名に、文字列「(n)」を追加します。

ロギング

AzuCopyは冗長モードで、ファイルとディレクトリの一覧や、コピーに失敗したファイル一覧を表示します。進捗状況も表示します。

サンプル

例1 再起モードでローカルファイルをBlobストレージコンテナーにコピーする

AzCopy C:\blob-data https://myaccount.blob.core.windows.net/mycontainer/ /destkey:key /S

c:\blob-dataとサブディレクトリにある全てのファイルをストレージアカウント「myaccount」のコンテナー名「mycontainer」のブロックBlobにコピーします。
blob-dataフォルダーには「subfolder1」サブディレクトリがあります。

C:\blob-data\car1.docx
C:\blob-data\car2.docx
C:\blob-data\car3.docx
C:\blob-data\train1.docx
C:\blob-data\subfolder1\car_sub1.docx
C:\blob-data\subfolder1\car_sub2.docx

は、「mycontainer」BlobコンテーにBlobを格納します。

car1.docx
car2.docx
car3.docx
train1.docx
subfolder1/car_sub1.docx
subfolder1/car_sub2.docx

例2 Blobからローカルに冗長と式モードでコピーする

AzCopy https://myaccount.blob.core.windows.net/mycontainer c:\blob-data /sourceKey:key /S /V

冗長モードでは次のような表示があります。

Finished Transfer: car1.docx
Finished Transfer: car2.docx
Finished Transfer: car3.docx
Finished Transfer: train1.docx
Finished Transfer: subfolder1/car_sub1.docx
Finished Transfer: subfolder1/car_sub2.docx
Transfer summary:
—————–
Total files transferred: 6
Transfer successfully: 6
Transfer failed: 0
After the copy operation, c:\blob-data folder will contain the files listed below:
C:\blob-data\car1.docx
C:\blob-data\car2.docx
C:\blob-data\car3.docx
C:\blob-data\train1.docx
C:\blob-data\subfolder1\car_sub1.docx
C:\blob-data\subfolder1\car_sub2.docx

例3 再開モードでローカルからBlobにコピーする

AzCopy c:\blob-data https://myaccount.blob.core.windows.net/mycontainer /destkey:key /Z:restart.log /S

再開をするために、進捗状況を記録するログファイル「azcop.log」がカレントディレクトリに作成されます。

例4 ファイルパターンを使用して、ストレージBlobコンテナーのファイルを選択しローカルにコピーする

AzCopy https://myaccount.blob.core.windows.net/mycontainer c:\blob-data car /sourceKey:key /Z /S

パフォーマンス

Windows Azureデータセンター内で(同じDC内のコンピュートインスタンスとストレージアカウント)、ファイルのアップロード、ダウンロードに50MB/sぐらいの速度になります(エクストラLargeインスタンスの場合)。

Windows Azure

新しいバージョンのWindows Azure PowerShell Comdlets バージョン2.2.2がリリースされました。新しいバージョンは、Codepelxからダウンロードすることができます。

  • サブスクリプション管理の改善
  • ユーザビリティの改善
  • その他(パラメータの変更、コマンド名の変更etc)

参考

詳細については、
Windows Azure PowerShell Cmdlets 222 Release
を参照してください