使用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 Nano Server安装配置详解06:在物理机中部署NanoServer

在物理机中部署Nano Server的步骤和在虚拟机中加载VHD部署有类似之处,下面把不同的地方罗列出来。 1)在生成VHD文件的过程中,需要添加-OEMDrivers参数,意思是为大多数普通硬件安...
  • wma664620
  • wma664620
  • 2017年01月19日 23:57
  • 485

在 Azure 中将基础结构自动化工具与虚拟机配合使用

若要以一致的方式大规模创建和管理 Azure 虚拟机 (VM),通常需要某种形式的自动化。 可以通过许多工具和解决方案来自动完成整个 Azure 基础结构部署和管理生命周期。 本文介绍了一些可以在 A...
  • zangdalei
  • zangdalei
  • 2017年11月22日 17:16
  • 143

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

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

[Azure]ARM模式下制作映像并创建虚拟机

在操作前需要明确一点:目前ARM模式下只能制作一般化(Generalized)的映像。   我们以一台Windows Server 2012的虚拟机为模板,首先在虚拟机内使用Sysprep进行一般...
  • qwertyupoiuytr
  • qwertyupoiuytr
  • 2017年07月13日 14:29
  • 524

VHD恢复操作系统

都是贪玩惹得祸,不习惯就是不习惯,想尝试win8所以把之前的win7备份了下,我的本子当时的环境是固态120(C、D)两个分区,安装的系统,软件,光驱拆掉上的机械硬盘1T,数据用过WIN7自带的备份备...
  • u012385481
  • u012385481
  • 2015年11月16日 10:53
  • 4730

[Azure]ARM模式下删除虚拟机挂盘修复后恢复的脚本(托管磁盘)

使用Azure虚拟机经常会遇到无法连接的问题,比如我们修改了虚拟机防火墙,修改了注册表,修改了配置文件,系统磁盘文件系统挂掉了等等。 遇到这种问题的时候,由于Azure没有开放控制台登录虚拟机的功能...
  • qwertyupoiuytr
  • qwertyupoiuytr
  • 2017年08月17日 20:15
  • 202

[Azure]ARM虚拟机整机磁盘快照[4]——从快照还原虚拟机

这个还原脚本有一个小前提,就是原虚拟机不能先删除,原因是为了简化操作和参数,脚本会从原来虚拟机的属性中读取资源组,虚拟网络,可用性集等属性,然后直接利用原虚拟机的某个时间点的快照在和原虚拟机同一子网下...
  • qwertyupoiuytr
  • qwertyupoiuytr
  • 2017年08月05日 12:55
  • 367

python 操作 azure 虚拟机

python 操作 azure 虚拟机下载微软的 python SDKpip install azure但是默认的 azure 接口对国内的 azure 无效,修改Python27\Lib\site-...
  • qcpm1983
  • qcpm1983
  • 2015年04月17日 15:51
  • 2167

理解及快速测定 Azure 虚拟机的磁盘性能

随着越来越多的用户将生产系统迁移到 Azure 平台的虚拟机服务中,Azure 虚拟机的性能愈发被关注。传统的数据中心中,我们通常使用 CPU,内存,存储和网络的性能来衡量生产压力。特别是对于 IO ...
  • zangdalei
  • zangdalei
  • 2017年09月20日 14:58
  • 101

Windows Nano Server安装配置详解05:在虚拟机中部署NanoServer

1.将 NanoServerImageGenerator 文件夹从 Windows Server 2016 ISO 中 \NanoServer 文件夹复制到你硬盘上的文件夹。 拷贝到C盘根目录。...
  • ppf19159
  • ppf19159
  • 2017年01月19日 23:52
  • 774
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用VHDUpload上传VHD文件到云存储,并在Azure VM中加挂Azure Drive
举报原因:
原因补充:

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