使用VHDUpload上传VHD文件到云存储,并在Azure VM中加挂Azure Drive

原创 2012年04月01日 16:58:42


1.上传VHD文件到Azure Blob Storage

VHDUpload程序的源代码在Windows Azure Training Kit目录Labs\ExploringWindowsAzureStorageVS2010\Source\Assets\VHDUpload,先编译成VHDUpload.exe。然后上传

Uploads a virtual hard disk (VHD) file to Windows Azure page blob service.

usage: VHDUPLOAD vhdFilePath blobUri accountName accountKey

  vhdFilePath  - path to virtual hard disk (VHD) file
  blobUri      - destination page blob relative URI (i.e. container/blobname)
  accountName  - storage account name (use devstorage for storage emulator)
  accountKey   - storage account primary key (omit for storage smulator)

VHDUpload上传过程如下所示:


2. 自写命令行程序Mount Drive

主要代码如下(请修改成相应的存储帐户和存储密钥,并编译成EXE):

 class Program
    {
        const string sMainStorageName = "StorageAccountName";
        const string sMainStorageKey = "StorageKey";

        static void Main(string[] args)
        {
            string sVHDPathName = string.Empty;
            string sOperation = string.Empty;
            bool IfUnmount = false;
            if (args.Count() == 0)
            {
                Console.WriteLine("Syntax: MountAzureDrive ContainerName/Disk.VHD");
                return;
            }

            try
            {
                sVHDPathName = args[0];
                if (args.Length > 1)
                {
                    sOperation = args[1];
                    if (args[1] == "/u")
                        IfUnmount = true;
                }

                var cloudDriveBlobPath = string.Format("http://{0}.blob.core.windows.net/{1}", sMainStorageName, sVHDPathName);
                StorageCredentialsAccountAndKey credentials = new StorageCredentialsAccountAndKey(sMainStorageName, sMainStorageKey);
                // LocalResource localCache = RoleEnvironment.GetLocalResource(sMainLocalStorageName);
                //  Char[] backSlash = { '\\' };
                //String localCachePath = localCache.RootPath.TrimEnd(backSlash);
                //CloudDrive.InitializeCache(localCachePath, localCache.MaximumSizeInMegabytes);


                //string cachePath = @"C:\Resources\LocalStorage";   //for VM role

                //Console.WriteLine("Local Cache initialized.....{0}", cachePath);
                //try
                //{
                //    CloudDrive.InitializeCache(cachePath, 10);
                //}
                //catch (Exception e)
                //{
                //    Console.WriteLine(e.Message);
                //}

                if (IfUnmount)
                {
                    Console.WriteLine("UnMount Drive " + cloudDriveBlobPath);
                    CloudDrive mountDrive = new CloudDrive(new Uri(cloudDriveBlobPath), credentials);

                    Console.WriteLine("Calling Cloud Drive UnMount API....", 0);
                    mountDrive.Unmount();
                    Console.WriteLine("Finished Cloud Drive UnMount .");
                }
                else
                {
                    Console.WriteLine("Mount Drive " + cloudDriveBlobPath);
                    CloudDrive mountDrive = new CloudDrive(new Uri(cloudDriveBlobPath), credentials);

                    Console.WriteLine("Calling Cloud Drive Mount API....", 0);
                    string driveLetter = mountDrive.Mount(0, DriveMountOptions.FixFileSystemErrors | DriveMountOptions.Force);
                    Console.WriteLine("Finished Cloud Drive Mounting at Drive :" + driveLetter, 0);

                }

            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
    }


3. 在虚拟机里执行Mount动作

使用上述命令行:


下图的E盘是Mount之后的效果。(VM Role里实验通过)





相关文章推荐

将本地文件上传到Windows Azure虚机 - Upload and Attach VHD

使用Windows Azure中的虚机,我们常常需要将一些文件从本地上传到虚机中( 例如,上传某个软件的安装镜像文件)。要做这件事,有很多的方法,例如:   1. 在远程桌面(RDP)连接中,打开剪切...

Azure Blob Storage 云存储中实现大文件分块断点续传

Blob 服务提供二进制文件和文本文件的存储。通过Blob的 REST API 能够访问2种资源: Containers 和 Blobs。容器可以看做包含多个文件的文件夹,而blob便是属于某个容器的...

关于Azure存储账户中存储虚拟机VHD文件的注意事项

Joy Qiao from MSFT  Thu, Mar 12 2015 3:16 PM   我们在使用Azure时经常都会在Azure存储账户中放一些文件,包括Azure虚机的VHD文件也都是放...

[Azure][ARM]使用Azure powershell复制正在运行VM的VHD并新建虚拟机时可能遇到的HostName异常

使用Azure powershell复制正在运行VM的VHD并新建虚拟机,及有可能遇到的HostName解析异常。...

使用Azure SDK 1.6 ,VM Role里加载Azure Drive方案

使用Azure SDK 1.6 ,在Web Role和Worker Role里加载Azure Drive没问题。但是在VM Role里加载会出现以下错误: CloudDriveException...

VM Role实战: Azure 平台上传虚拟机C 盘不能大于64GB

客户带来一个虚拟机,结果C盘分了126GB。如下图所示: 用CSUpload上传,会出现“TheVHDs logical size of 130048MB exceeds the sys...

[Azure]使用Azure Powershell查看ARM模式下Azure存储中的vhd文件对应的虚拟机

如题,使用Powershell将一个账号中所有订阅下ARM模式的存储账号过一遍,将其中的vhd文件对应的虚拟机找出来汇总成表。 脚本如下: $Cred = New-Object System.Ma...

nodejs使用七牛云存储来上传文件

nodejs 使用七牛云存储上传文件nodejs 使用七牛云存储上传文件 1-准备工作 2-服务器端的云存储操作 2-1文件上传 文件下载 文件获取 在网上寻找了很多七牛云存储的博文,也百度了许多...

php开发日记之使用ueditor上传文件至云存储

上次写表单交互的时候说不知道怎么将图片或者其他文件上传到七牛云存储上面,这次是参考七牛云的官方示例,使用百度的ueditor编辑器上传图片或者附件,代码已经上传到百度云了,这里就直接给出下载 链接:...

Spring Boot实战之文件上传存入Azure Storage

Spring Boot实战之文件上传存入Azure Storage 本章介绍,文件上传及文件上传至Azure的流程,以上传图片为例 1、本章与Azure的交互使用到Azure storage相关的...
  • sun_t89
  • sun_t89
  • 2016年07月19日 15:37
  • 2706
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用VHDUpload上传VHD文件到云存储,并在Azure VM中加挂Azure Drive
举报原因:
原因补充:

(最多只允许输入30个字)