azure VHD 1TB上传

时间:2011-01-28 15:20:09

标签: azure vhd

我们连接速度很慢,硬盘非常小,如何在天蓝色云端驱动器上创建1 TB VHD?

5 个答案:

答案 0 :(得分:1)

您是否需要上传现有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-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);

答案 1 :(得分:0)

为了高效上传,您可以编写一个简单的控制台应用程序,将VHD作为页面blob上传到Azure Blob存储,仅传输非零字节。

答案 2 :(得分:0)

CSUpload完全相同:仅上传非零页面 您可以在本地创建一个(小)1TB动态VHD,然后使用CSUpload上传(即时扩展到固定大小,不发送零字节)。另请参阅this question有关在Azure中使用1TB磁盘的信息。

答案 3 :(得分:0)

你也可以创建一个虚拟磁盘并附加一个虚拟机并从那里准备

然后从vm中删除磁盘(这不会将其从存储中删除)并使用cloudDrive挂载

(之后你可以删除vm)

答案 4 :(得分:0)

1TB对于vhd来说是一个非常大的大小,但是一个全新的vhd在文件末尾只包含非常少的数据(固定硬盘映像为512字节)。换句话说,您的vhd的大部分数据为零,无需将整个1TB数据上传到Azure存储。

有关vhd文件格式,请参阅http://en.wikipedia.org/wiki/VHD_(file_format)

如果您熟悉vhd和azure存储客户端,则可以编写自己的应用程序来执行这些操作。

  1. 使用PutBlob操作在天蓝色存储上创建一个空的1TB页面blob

    http://msdn.microsoft.com/en-us/library/windowsazure/dd179451.aspx

  2. 使用PutPage操作将VHD页脚写入Page Blob的末尾

    http://msdn.microsoft.com/en-us/library/windowsazure/ee691975.aspx

  3. 如果没有,您可以先使用diskmgmt.msc(磁盘管理)创建vhd,然后在windows azure powershell中使用 Set-AzureStorageBlobContent 来有效上传您的vhd。 上传页面blob时,Set-AzureStorageBlobContent将跳过无用的数据。

      Set-AzureStorageBlobContent -Container upload -File .\a.vhd -BlobType Page 
    

    供参考, http://msdn.microsoft.com/en-us/library/dn408487.aspx