保持与 Microsoft Azure Files 的连接 – 微软云计算: Windows Azure 中文博客

时间:15-01-31 栏目:Azure 作者:爱说云网 评论:0 点击: 1,458 次

我们在最近的博客文章中介绍了 Azure StorageFiles的预览版,请单击此处 。该文章包含  Azure Files的相关信息,说明了如何申请预览版并开始使用,还介绍了一些有助于创建共享和传输数据的工具。本文章将重点阐述如何才能创建与 Azure File共享的持久连接,以便您的计划任务、应用程序或已登录用户在  VM重新启动后仍可以使用该共享。

Windows IaaS VM

默认情况下,Windows在重新启动过程中会尝试保持到  SMB共享的连接。但是,系统在此过程中不会自动保存 Azure Files凭据,因此,重新启动后系统将无法重新连接到  Azure Files共享。保存这些凭据的方法多种多样,以下详细介绍了其中的几种方法。

保存凭据

CmdKey

要建立持久连接,最简单的方法是使用“CmdKey”命令行实用程序将您的存储帐户凭据保存到  Windows 中。以下是一个把您的存储帐户凭据保存到 VM中的命令行示例:

C:\>cmdkey/add:<yourstorageaccountname>.file.core.chinacloudapi.cn/user:<yourstorageaccountname> /pass:<YourStorageAccountKeyWhichEndsIn==>

Note:yourstorageaccountname is not yourlive id but the name in the endpoint.

借助 CmdKey,您还可以列出系统存储的凭据:

C:\>cmdkey /list

Currently stored credentials:

Target:Domain:target=filedemo.file.core.chinacloudapi.cn
Type:DomainPassword
User:filedemo

保存凭据后,以后在连接到共享时将不再需要提供这些凭据。也就是说,无需指定任何凭据,您就能连接:

C:\>net use * \\filedemo.file.core.chinacloudapi.cn\demo1

Drive Z:is now connected to\\filedemo.file.core.chinacloudapi.cn\demo1.

The command completed successfully.

然后,您可以重新启动 VM(此操作将断开与  VM 的连接):

shutdown –t 0 –r

VM重新启动并重新连接后,您可以打开另一个命令窗口来确认是否已自动重新连接:

C:\>net use

New connections will be remembered.

Status   Local    Remote       Network

-----------------------------------------------------------------------------

OK       Z:       \\filedemo.file.core.chinacloudapi.cn\demo1

                               Microsoft Windows Network

The command completed successfully.

凭据管理器

您还可以借助凭据管理器(位于控制面板”\“用户帐户下)来保存存储帐户凭据。

用户上下文

Windows会为在 VM上运行的每个用户维护不同的上下文,有时同一时间在同一  VM上运行的同一用户的上下文会有所不同。每个上下文均可独立连接到一组不同的 SMB共享,并且每个上下文都有自己的映射到所连接共享的盘符。

 CmdKey保存的凭据可供运行“CmdKey”的用户使用。同样,由“net use”记住的连接可供运行 net use的用户使用。因此,如果您的应用程序会在不同的用户名下运行,您可能还希望为其他用户保存凭据和连接。要执行此操作,您可以使用“runas”命令:

runas /user:<username> cmd.exe

此命令将打开一个新的命令窗口。命令窗口的标题将显示为“cmd.exe (running as COMPUTERNAME\username)”。如果在此命令窗口中运行“net use”,您会看到此用户未连接到任何共享:

C:\>net use

New connections will be remembered.

There are no entries in the list.

您可以针对该用户按上所述运行“CmdKey”“net use”,为其保存您的存储凭据以及与 Azure File的连接。

管理员上下文

如果您在 VM上创建了一个新的本地用户,并将此用户添加到了管理员组,您可以在提升和非提升上下文中运行此用户的命令。提升和非提升上下文中的连接并不共享,因此您可能会希望通过执行“net use”在各自的上下文中单独进行连接。但是,保存的凭据是共享的,因此您仅需在其中一个上下文中运行“CmdKey”即可。

处理计划任务

您可以创建在任何 VM用户下运行的计划任务,并且这些计划任务能够使用该用户通过  CmdKey建立的持久凭据。但是,这些计划任务可能会在此登录用户以外的其他用户上下文中运行,因此与 SMB共享的连接不会在运行该任务的用户上下文中自动重新连接。

例如,如果您创建的计划任务运行调用“net use”的脚本并将输出写入到本地文件,而此用户先前已与  Azure File 共享创建持久连接,还具有该共享的持久凭据,则输出将包含以下内容:

Status     Local    Remote       Network

-----------------------------------------------------------------------------

UnavailableZ:       \\filedemo.file.core.chinacloudapi.cn\demo1

                                 Microsoft Windows Network

The command completed successfully.

但是,该上下文中的凭据可以重新连接到共享。因此,如果向您的脚本添加以下命令,则将重新建立网络连接:

net use z:\\filedemo.file.core.chinacloudapi.cn\demo1

或者,您的脚本可以使用完整的 UNC路径(而不是已映射的盘符)访问文件:

dir \\filedemo.file.core.chinacloudapi.cn\demo1

另外还要注意,由于计划任务不在登录用户所处的环境中运行,因此由该计划任务创建的连接可能不会在此环境中建立。

Windows PaaS角色

PaaS角色的功能与持久连接恰好相反。对于  PaaS角色,无论系统是否启动了全新的实例,还是重新启动了您的实例,都要确保您的代码可以自动进行连接。

WNetAddConnection2进行平台调用

您可以通过对WNetAddConnection2进行平台调用来映射  PaaS角色启动代码中的盘符。以下代码声明了一组建立从 Azure Files共享到本地盘符的映射所需的结构。

[DllImport("Mpr.dll",

           EntryPoint ="WNetAddConnection2",

           CallingConvention = CallingConvention.Winapi)]

privatestaticexternint WNetAddConnection2(NETRESOURCElpNetResource,

                                            string lpPassword,

                                            string lpUsername,

                                            System.UInt32 dwFlags);

 [DllImport("Mpr.dll",

          EntryPoint ="WNetCancelConnection2",

          CallingConvention = CallingConvention.Winapi)]

privatestaticexternint WNetCancelConnection2(string lpName,

                                               System.UInt32 dwFlags,

                                               System.Boolean fForce);

 [StructLayout(LayoutKind.Sequential)]

privateclass NETRESOURCE

{

   publicint dwScope;

   public ResourceType dwType;

   publicint dwDisplayType;

   publicint dwUsage;

   publicstring lpLocalName;

   publicstring lpRemoteName;

   publicstring lpComment;

   publicstring lpProvider;

};

publicenum ResourceType

{

   RESOURCETYPE_DISK = 1,

};

然后,您可以编写一个用于在给定盘符上挂载共享的方法:

publicstaticvoid MountShare(string shareName,

                            string driveLetterAndColon,

                             string username,

                             string password)

{

   if(!String.IsNullOrEmpty(driveLetterAndColon))

   {

       //确保我们未使用此盘符进行其他映射

       WNetCancelConnection2(driveLetterAndColon, 0,true);

   }

   NETRESOURCE nr =new NETRESOURCE();

   nr.dwType = ResourceType.RESOURCETYPE_DISK;

   nr.lpRemoteName = shareName;

   nr.lpLocalName = driveLetterAndColon;

   int result =WNetAddConnection2(nr, password, username, 0);

   if (result != 0)

   {

       thrownew Exception("WNetAddConnection2failed with error " +result);

   }

}

然后,可以从您角色的“OnStart()”方法中调用此方法:

MountShare(\\\\filedemo.file.core.chinacloudapi.cn\\demo1,

          "z:",

          "filedemo",

          "<YourStorageAccountKeyWhichEndsIn==>");

从此时起,一直到 Worker Role,您都能够使用盘符或完整  UNC 路径读取文件并将其写入到 Azure File共享:

File.Create("z:\\WNetAddConnection2.txt");

File.Create(\\\\filedemo.file.core.chinacloudapi.cn\\demo1\\UNC.txt);

Web Role和用户上下文

Azure Web Role  OnStart()方法不在用于显示网站页面的用户上下文中运行。因此,如果希望从显示页面的代码中引用您的 Azure Files共享,您应该将上述代码放在  Global.Application_Start()方法,而不是WebRole.OneStart()中。

Linux VM

Linux具有多种在启动过程中自动挂载共享的方法,但是我们仅在  Ubuntu 14.04 LTS上对其中一种方法进行试验。

保持与 Fstab的连接

Linux /etc中有一个称为“fstab”的文件,该  /etc 在启动过程中可用于挂载驱动器和共享。在启动过程中自动挂载 Azure Files共享的一种方法是,向  /etc/fstab添加一行。应将以下文本放在文件中的一行:

//<yourstorageaccountname>.file.core.chinacloudapi.cn/demo1/home/azureuser/smb cifsvers=2.1,dir_mode=0777,file_mode=0777,username=<yourstorageaccountname>,password=<YourStorageAccountKeyWhichEndsIn==>

下表详细介绍了此行包含的各个部分:

部分

示例

描述

共享 URL

//filedemo.file.core.chinacloudapi.cn/demo1

之前创建的 Azure Files共享的  URL

挂载点

/home/azureuser/smb

您之前创建以挂载共享的 Linux VM上空白目录的路径。

文件系统

Cifs

要挂载的文件系统的类型。对于 Azure Files,其文件系统类型为“cifs”

挂载参数

vers=2.1

要使用的 SMB版本,在本示例中为  2.1

dir_mode=0777

用于 Azure Files共享目录的权限掩码,在本示例中为完整权限。

file_mode=0777

用于 Azure Files共享文件的权限掩码,在本示例中为完整权限。

username=filedemo

对于 Azure Files,此用户名必须为您的存储帐户名称。

password=StorageAccountKey==

对于 Azure Files,此密码必须为您的完整存储帐户密钥。

您的 fstab文件中还可以包含许多其他选项。有关详细信息,请参阅您正在使用的  Linux版本的相关文��。

总结

我们之前发布的介绍  Azure Files 的文章和本文章集中介绍了帮助您创建到  Azure File 共享的持久连接的步骤,从而使您可以在重新启动后使用共享连接。我们始终乐于倾听您的反馈,请通过本博客和Azure Storage MSDN论坛发表评论或发送电子邮件至mastoragequestions@microsoft.com

Andrew Edwards

有关详细信息,请参阅以下链接:

Azure Files 2014-04-14版本

Microsoft Azure File 服务简介

AzCopy

Storage .NET Client Library 4.3.0

相关文章

使用 Azure Site Recovery 将内部部署虚拟化工作负荷迁移至 Azure ̵...
views 1335
我们最近发布了微软的灾难恢复即服务 (DRaaS) 产品的预览版 - Azure Site Recovery。此产品可以提供自动化保护、异步持续复制,并可以在跨企业站点以及私有云, 或直接在Windows Azure 中,以最短的停机时间准确、一致、有序地恢复虚拟化工作负荷。 我们的客户喜欢这项服...
使用 Azure Site Recovery 灾难恢复至 Azure 的功能现已正式发布 ̵...
views 1463
自我们宣布发布使用 Azure Site Recovery 灾难恢复至 Azure 的功能预览版以来,这几个月着实令人兴奋不已。我们的客户正在亲身体验 ASR 的功能,可直接向 Windows Azure 进行虚拟机持续复制和无缝故障转移,并为虚拟机提供保护。我们做出的不遗漏任何工作负荷的承诺为我们...
Azure云平台增加三大新功能,试图超越AWS?...
views 1608
微软公司继续围绕安全性、大量虚拟机以及Docker支持为其开发的Azure云平台增加新功能。 通过增加三大新功能,微软公司的Azure继续稳固着其作为公共云之王——亚马逊网络服务的最大竞争对手的地位。 通过本月在Azure上新增的功能,微软保持着追赶AWS的态势,相关新功能包括安全性、大量虚拟机...
微软云转型达成里程碑 但仍面临高风险...
views 1363
为了适应云计算时代,微软对业务模式实施调整。在这一进程中,它刚刚完成了一项里程碑。在年末将至之际,它成为了企业级云服务市场的第一大销售商,超过了Salesforce.com等创业公司和诸如IBM、甲骨文的老牌企业。 尽管云服务在微软总营收中的占比不到5%,但该项里程碑标志着微软在后PC时代终于取得...
Microsoft Azure File 服务简介
views 1666
我们非常高兴地宣布在微软Azure中国区推出 Microsoft Azure File 服务预览版。Azure File 服务使用标准 SMB 2.1 协议提供文件共享。Azure 中运行的应用程序现在可以使用熟悉的标准文件系统 API(如 ReadFile 和 WriteFile)在虚拟机之间轻松...
乐视+微软:借力Azure布局海外,实现全球视频云服务-CSDN.NET...
views 1136
乐视和微软正式宣布展开全球战略合作。一方面,乐视将借力Azure的IaaS资源实现海外市场的拓展;另一方面,在Azure的基础上,乐视云将为Azure的用户提供视频云服务。 12月18日,乐视和微软在北京举办了题为“云端起舞,生态协同”的发布会,正式宣布展开全球战略合作。联想到今年早些时候,萨提亚·...
云计算到底哪家强?
views 1877
从全球市场看,微软Azure+谷歌GCE+IBM的Softlayer+阿里云,四家的市场份额加起来也不及Amazon AWS。微软Azure强在哪? 技术储备。Amazon AWS虽然全球员工很多人,但是最核心的工程师也就几十个,而这种技术级别的在微软,可以说是一抓一大把。而且你看,现在的很多A...
世纪互联Azure:我们要与微软“一刀两断”...
views 1538
12月的北京,已经能明确感觉到了冬天的寒意,但是云计算,确切说是公有云服务,在北京仍然是炙手可热的话题。UCloud、青云以及著名的亚马逊AWS都选择在这个月着重发出了自己的声音。当然,谁也不能忽视在这一市场上的一个重要角色——微软的Azure,从某种角度上讲,这个率先进入中国的国际性公有云品牌,真...

保持与 Microsoft Azure Files 的连接 – 微软云计算: Windows Azure 中文博客:等您坐沙发呢!

发表评论


读者排行