我们的连接速度很慢,硬盘很小,如何在 azure 上为云驱动器创建 1 TB VHD?
5 回答
您是否需要上传现有的 VHD,或者只需要 1 TB Azure 驱动器用于云中的应用程序?如果是前者,Rinat 可能是对的。查看这篇博客文章了解如何编写控制台应用程序:blogs.msdn.com/b/windowsazurestorage/archive/2010/04/11/using-windows-azure-page-blobs-and-how-to-efficiently-upload -and-download-page-blob.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 作为页面 blob 上传到 Azure Blob 存储,仅传输非零字节。
您还可以创建一个 vm-disk 并将一个 vm 附加到它并从那里准备它
然后从 vm 中删除磁盘(这不会将其从存储中删除)并使用 cloudDrive 挂载它
(之后你可以删除虚拟机)
1TB 对于 vhd 来说是一个非常大的大小,但是一个全新的 vhd 在文件末尾只包含非常少的数据(固定硬盘映像为 512 字节)。也就是说,你的 vhd 的大部分数据都是零,没有必要将整个 1TB 的数据上传到 Azure 存储。
For vhd file format, please refer to http://en.wikipedia.org/wiki/VHD_(file_format)
If you are familiar with vhd and azure storage client, you can write your own application to do these things.
Create an empty 1TB page blob on azure storage with PutBlob operation
http://msdn.microsoft.com/en-us/library/windowsazure/dd179451.aspx
Write the VHD footer to end of the Page Blob with PutPage operation
http://msdn.microsoft.com/en-us/library/windowsazure/ee691975.aspx
If not, you can use diskmgmt.msc(Disk Management) to create a vhd at first, and then use Set-AzureStorageBlobContent in windows azure powershell to efficiently upload your vhd. Set-AzureStorageBlobContent will skip the useless data when uploading page blob.
Set-AzureStorageBlobContent -Container upload -File .\a.vhd -BlobType Page
For reference, http://msdn.microsoft.com/en-us/library/dn408487.aspx