接続が非常に遅く、ハードディスクが非常に小さいため、Azure でクラウド ドライブ用に 1 TB の VHD を作成するにはどうすればよいですか?
5 に答える
既存の VHD をアップロードする必要がありますか? それとも、クラウド内のアプリケーション用に 1 TB の Azure ドライブが必要ですか? 前者ならRinatが正しいだろう。コンソール アプリの作成方法については、次のブログ記事を参照してください: -and-download-page-blobs.aspx .
ただし、アプリケーションに 1 TB の Azure ドライブだけが必要な場合は、クラウドで実行されているコードを使用して作成できます。私が以下に書いたものと同様のコードを書くことができます:
string pageBlobName = "testpageblob";// Guid.NewGuid().ToString();
string blobUri = string.Format("{0}/{1}", blobContainer.Uri.AbsoluteUri,
pageBlobName);
CloudDrive cloudDrive = new CloudDrive(new Uri(blobUri), csa.Credentials);
for (int i = 0; i < 30; i++)
{
try
{
cloudDrive.Create(20);
break;
}
catch (CloudDriveException ex)
{
if (!ex.Message.Equals("ERROR_UNSUPPORTED_OS") || i == 29)
throw;
Thread.Sleep(10000);
}
}
string driveLetter = cloudDrive.Mount(25, DriveMountOptions.Force);
アップロードを効率的に行うために、VHD を Azure Blob Storage にページ BLOB としてアップロードし、0 以外のバイトのみを転送する単純なコンソール アプリを作成できます。
また、vm-disk を作成し、それに vm をアタッチして、そこから準備することもできます
その後、vm からディスクを削除し (これはストレージからディスクを削除しません)、cloudDrive でマウントします
(後でvmを削除できます)
1 TB は vhd の非常に大きなサイズですが、新しい vhd にはファイルの末尾にごくわずかなデータ (固定ハード ディスク イメージの場合は 512 バイト) しか含まれていません。つまり、vhd のほとんどのデータはゼロであり、1 TB のデータ全体を Azure ストレージにアップロードする必要はありません。
vhd ファイル形式については、 http://en.wikipedia.org/wiki/VHD_(file_format)を参照してください。
vhd と azure ストレージ クライアントに精通している場合は、これらのことを行う独自のアプリケーションを作成できます。
PutBlob 操作を使用して、Azure ストレージに空の 1 TB ページ BLOB を作成する
http://msdn.microsoft.com/en-us/library/windowsazure/dd179451.aspx
PutPage 操作を使用して VHD フッターをページ BLOB の末尾に書き込む
http://msdn.microsoft.com/en-us/library/windowsazure/ee691975.aspx
そうでない場合は、最初に diskmgmt.msc (ディスクの管理) を使用して vhd を作成し、次に Windows azure powershell でSet-AzureStorageBlobContentを使用して vhd を効率的にアップロードできます。Set-AzureStorageBlobContent は、ページ BLOB のアップロード時に不要なデータをスキップします。
Set-AzureStorageBlobContent -Container upload -File .\a.vhd -BlobType Page
参考までに、 http://msdn.microsoft.com/en-us/library/dn408487.aspx