Windows Azure

AzCopy – Announcing General Availability of AzCopy 3.0 plus preview release of AzCopy 4.0 with Table and File supportを意訳した投稿です。

今回のリリースから、正式版の機能だけを含んだRTM版と、正式版とプレビュー版の機能を含んだプリリリース版の2種類のAzCopyを公開することにしました。

blobへの対応だけのAzCopy 3.0と正式版の機能に加えて、Tableエンティティにも対応しているプレビューでの提供のAzCopy 4.0 プレビューの両方をダウンロードできます。

AzCopy 3.0 正式版

  • AzCopyで、すべてのパラメーター名を明示的に指定しなければならなくなりました。プレビュー時には、source、destination、ファイルパターンはパラメーター名を指定しなくても問題ありませんでした。
    AzCopy /Source:<source> /Dest:<destination> /Pattern:<pattern> [Options] …
  • AzCopyのヘルプメッセージを次のように変更しました。
    「AzCopy」と入力すると、ショートバージョンのヘルプが表示されます。
    「AzCopy /?」と入力すると、コマンドラインの詳細なヘルプが表示されます。
    「AzCopy /?:Sample」と入力すると、コマンドラインサンプルが表示されます。
    「AzCopy /?:<オプション名>」と入力すると、AzCopyオプションの詳細が表示されます。(例:AzCopy /?:SourceKey)
  • プレビュー時には、存在するファイルの上書きをしないを選択していると、存在しているファイルやBlobへのステータスが「failed」に設定されていました。3.0.0からは、「skipped」ステータスになり、コンソールウィンドウの「Transfer summary」に「Transfer skipped: <スキップ合計数>」と表示されます。

AzCopy 4.0.0-preview Azure Storage Table エンティティ(新しいプレビュ)

AzCopy 4.0.0-previewでは、TableエンティティをローカルファイルまたはAzure Storage ブロックブロブへのエクスポート、ストレージTableへのデータをインポートして戻すのに対応しています。この機能は、Tableの矛盾が発生しないスナップショットではない(トランザクションではない)ことに注意してください。すべてのエンティティをAzCopyが出力する前に、随時Tableのエンティティに変更が加えられるかもしれないからです。

  • Tableエンティティのエクスポート時、/Destパラメーターで、ローカルフォルダーからBlobコンテナーを指定します。
    AzCopy /Source:https://myaccount.table.core.windows.net/myTable/ /Dest:D:\test\ /SourceKey:key
    AzCopy /Source:https://myaccount.table.core.windows.net/myTable/ /Dest:https://myaccount.blob.core.windows.net/mycontainer/ /SourceKey:key1 /Destkey:key2

    AzCopyは、ローカルフォルダーまたはBlobコンテナーに、次のような命名規則で、JSONデーターファイルを生成します。
    <account name>_<table name>_<timestamp>_<volume index>_<CRC>.json
  • AzCopyは、デフォルトでひとつのJSONデータファイルを生成します。「/SplitSize: <MBで分割容量>」パラメーターを指定することで、複数のファイルを生成することができます。
    AzCopy /Source:https://myaccount.table.core.windows.net/myTable/ /Dest:D:\test\ /SourceKey:key /SplitSize:100
  • AzCopyは、デフォルトですべてのTableエンティティを出力します。並列エクスポーtするためには、「/PKRS: <パーティションキーレンジ>」オプションが必要です。
    例えば、「/PKRS:”aa#bb”」と指定すると、AzCopyは、次のような3つのキー範囲でエクスポート処理を並列に実行します。

    [<最初のパーティションキー>, aa]
    [aa, bb]
    [bb, <最後のパーティションキー>]

    AzCopy /Source:https://myaccount.table.core.windows.net/myTable/ /Dest:D:\test\ /SourceKey:key /PKRS:”aa#bb”

    そして次のように3つのJSONファイルが生成されます。
    myaccount_mytable_20140903T051850.8128447Z_0_0_C3040FE8.json
    myaccount_mytable_20140903T051850.8128447Z_1_0_0AB9AC20.json
    myaccount_mytable_20140903T051850.8128447Z_2_0_939AF48C.json

    並列処理数は、/NCオプションで指定できます。デフォルトでは、AzCopyは、/NCの値にマシンのコア数を使用します。ユーザが、/PKRSを指定すると、パーティションキー数と/NCで指定された数の小さい方の値を選択します。詳細は、「AzCopy /?:NC」と入力してください。

  • Tableにデータをインポートして戻すとき、/Manifestと/EntityOperationを指定する必要があります。
    AzCopy /Source:D:\test\ /Dest:https://myaccount.table.core.windows.net/mytable1/ /DestKey:key /Manifest:"myaccount_mytable_20140103T112020.manifest" /EntityOperation:InsertOrReplace
    AzCopy /Source:https://myaccount.blob.core.windows.net/mycontainer/ /Dest:https://myaccount.table.core.windows.net/mytable1/ /SourceKey:key1 /DestKey:key2 /Manifest:"myaccount_mytable_20140103T112020.manifest" /EntityOperation:InsertOrReplace
    Manifestファイルは、AzCopyを使用してTableエンティティをエクスポートした時に、destinationローカルフォルダーまたはBlobコンテナーに生成されます。Manifestファイルは、インポートする際にデータバリデーションの実行とすべてのデータファイルを見つけるのに使用されます。
    <account name>_<table name>_<timestamp>.manifest

    /EntityOperationは、エンティティインポート動作に影響を与えます。
    InsetOrSkip – Tableに存在しない場合新しいエンティティを挿入し、存在する場合はスキップ
    InsertOrMerge – 既存のエンティティとマージまたは、Tableに存在しない場合新しいエンティティを挿入します。
    InsertReplace – Tableに存在しない場合新しいエンティティを挿入し、既存のエンティティに上書きします。

    インポート時には、/PKRSオプションは使用できません。AzCopyはデフォルトで、マシンと同じコア数の並列度で、最初のファイルから順番にインポートします。/NCオプションで並列度を変えることはできます。

Windows Azure

AzCopyを、お前らがもっと使えるようにガイドライン的なチュートリアルを用意してやるぜ!ってマイクロソフトがおっしゃって、ドキュメントがででで~んっと公開されています。

とりあえず、これを見ればAzCopyの全てがわかるって感じです。ここにかかれていない情報は、他にも書かれてないぜ!ぐらいの勢いで、大量の文章が用意されています。素敵。ぜひ日本語版も用意して!

主な使用例を抜粋。

 

  • 特定パターンに当てはまったBlobをアップロード
  • 別のストレージアカウントにBlobをコピーしてスナップショットをする
  • 複数のレスポンスファイルを指定する
  • ジャーナルファイルパスの指定
  • AzCopyのリジューム
  • 任意の場所にログ出力
  • 新しいファイルをBlobから取り除く
  • 古いファイルをBlobから取り除く
  • ストレージエミュレーターのBlobリソースに対してAzCopyの実行
  • Azure File共有からファイルシステムにファイルをダウンロード
  • Azure File共有からファイルシステムにファイルとディレクトリをダウンロード
  • ファイルシステムからファイルとディレクトリをAzure File共有にアップロード
  • 特定パターンにマッチしたファイルをAzure File共有にアップロード

Windows Azure

AzCopyの最新バージョンがリリースされました。
このバージョンでは、パフォーマンスや使用勝手の重要な改善が含まれています。

いくつか抜粋して紹介します。
アップデートの全体像は、原文を参照してください。

  • デフォルトでジャーナルファイルが生成されるようになりました。
    従来は、[/z]オプションが必要でしたが、今回のバージョンから指定しなくても生成されるようになりました。ジャーナルファイルは、デフォルトでは、%localAppData%\Microsoft\Azure\AzCopy\に格納されます。格納先パスは、/zオプションで宇和がクコとができます。
  • AzCopyの実行ログのデフォルトフォルダーが、%localAppData%\Microsoft\Azure\AzCopy\になりました。
  • インストールウィザードで、AzCopyのインストール先を指定できるようになりました。

Windows Azure

ネタ元:Use port pings instead of ICMP to test Azure VM connectivity

ICMPプロトコルは、Azureのロードバランサーで許可されていないので、インターネットやAzure 仮想マシン内からAzure仮想マシンにpingをしても結果を取得できません。

エンドポイントを設定して、エクスターナルのIPを使用するネットワークトラフィックの場合の話で、Azure仮想ネットワークゲートウェイやExpressRouteを使って接続するときには、ICMPはブロックされません。

接続テストをするには、代わりにポートPingを使用することをお勧めします。
Ping.exeはICMPを使用するので、特定のTCPポートにpingできるPsPing, Nmap, or Telnetのようなツールを使用します。

たとえば、Azure仮想マシン内からyahoo.comにpingするとリクエストタイムアウトします。これは、AzureロードバランサーでICMPがブロックされているからです。

C:\>ping yahoo.com

Pinging yahoo.com [206.190.36.45] with 32 bytes of data:
Request timed out.
Request timed out.
Request timed out.
Request timed out.

Ping statistics for 206.190.36.45:
    Packets: Sent = 4, Received = 0, Lost = 4 (100% loss),

しかし、特定のポートに接続テストができるSysinternalツールのPsPingを使用して、Azure仮想マシンからインターネット上のサイトの80番ポートにテストをすると成功します。

C:\Users\craig\Downloads\PSTools>psping yahoo.com:80

PsPing v2.01 - PsPing - ping, latency, bandwidth measurement utility
Copyright (C) 2012-2014 Mark Russinovich
Sysinternals - www.sysinternals.com

TCP connect to 206.190.36.45:80:
5 iterations (warmup 1) connecting test:
Connecting to 206.190.36.45:80 (warmup): 53.25ms
Connecting to 206.190.36.45:80: 52.26ms
Connecting to 206.190.36.45:80: 52.14ms
Connecting to 206.190.36.45:80: 52.32ms
Connecting to 206.190.36.45:80: 51.48ms

TCP connect statistics for 206.190.36.45:80:
  Sent = 4, Received = 4, Lost = 0 (0% loss),
  Minimum = 51.48ms, Maximum = 52.32ms, Average = 52.05ms

ちなみに、bing.comへのICMP pingだけは例外的に動作します。BingとAzureは両方マイクロソフトが提供するからです。

C:\Users\craig\Downloads\PSTools>psping bing.com

PsPing v2.01 - PsPing - ping, latency, bandwidth measurement utility
Copyright (C) 2012-2014 Mark Russinovich
Sysinternals - www.sysinternals.com

Pinging 204.79.197.200 with 32 bytes of data:
5 iterations (warmup 1) ping test:
Reply from 204.79.197.200: 6.85ms
Reply from 204.79.197.200: 2.47ms
Reply from 204.79.197.200: 2.30ms
Reply from 204.79.197.200: 2.95ms
Reply from 204.79.197.200: 2.39ms

Ping statistics for 204.79.197.200:
  Sent = 4, Received = 4, Lost = 0 (0% loss),
  Minimum = 2.30ms, Maximum = 2.95ms, Average = 2.53ms

オンプレミスからAzure仮想マシンにテストをすると、同様の結果となります。ICMPトラフィックは、Azureロードバランサーでブロックされ、pingはタイムアウトします。しかし、代わりにポートpingをすれば、仮想マシンが起動していてファイヤーウォールでポートブロックされていなくてエンドポイントがされていれば、成功します。

C:\>ping CLJun21WS12R2A.cloudapp.net

Pinging CLJun21WS12R2A.cloudapp.net [23.100.76.67] with 32 bytes of data:
Request timed out.
Request timed out.
Request timed out.
Request timed out.

Ping statistics for 23.100.76.67:
    Packets: Sent = 4, Received = 0, Lost = 4 (100% loss),

C:\>psping CLJun21WS12R2A.cloudapp.net:56972

PsPing v2.01 - PsPing - ping, latency, bandwidth measurement utility
Copyright (C) 2012-2014 Mark Russinovich
Sysinternals - www.sysinternals.com

TCP connect to 23.100.76.67:56972:
5 iterations (warmup 1) connecting test:
Connecting to 23.100.76.67:56972 (warmup): 60.44ms
Connecting to 23.100.76.67:56972: 61.28ms
Connecting to 23.100.76.67:56972: 63.41ms
Connecting to 23.100.76.67:56972: 63.69ms
Connecting to 23.100.76.67:56972: 60.41ms

TCP connect statistics for 23.100.76.67:56972:
  Sent = 4, Received = 4, Lost = 0 (0% loss),
  Minimum = 60.41ms, Maximum = 63.69ms, Average = 62.20ms

C:\>psping CLJun21WS12R2A.cloudapp.net:5986

PsPing v2.01 - PsPing - ping, latency, bandwidth measurement utility
Copyright (C) 2012-2014 Mark Russinovich
Sysinternals - www.sysinternals.com

TCP connect to 23.100.76.67:5986:
5 iterations (warmup 1) connecting test:
Connecting to 23.100.76.67:5986 (warmup): 61.49ms
Connecting to 23.100.76.67:5986: 65.29ms
Connecting to 23.100.76.67:5986: 67.08ms
Connecting to 23.100.76.67:5986: 62.70ms
Connecting to 23.100.76.67:5986: 60.99ms

TCP connect statistics for 23.100.76.67:5986:
  Sent = 4, Received = 4, Lost = 0 (0% loss),
  Minimum = 60.99ms, Maximum = 67.08ms, Average = 64.02ms