我们非常高兴地宣布在微软Azure中国区推出 Microsoft Azure File 服务预览版。Azure File 服务使用标准 SMB 2.1 协议提供文件共享。Azure 中运行的应用程序现在可以使用熟悉的标准文件系统 API(如 ReadFile 和 WriteFile)在虚拟机之间轻松共享文件。此外,您可同时通过 REST 接口(可支持各种混合应用场景)访问这些文件。最后,Azure Files 采用与 Blob、Table 和 Queue Services 相同的技术构建,这意味着 Azure
File 可以利用我们平台中内置的现有可用性、持久性、可伸缩性以及跨地域冗余。

场景

  • 迁移应用程序

很多本地应用程序使用本地服务器上的共享文件夹在各个组件之间共享数据。Azure File服务可以协助轻松地将这些应用程序迁移到云上。为此,每个虚拟机都连接到文件共享(请参阅下面的“入门”),然后虚拟机可以像使用本地共享文件夹一样读取和写入文件。

  • 共享应用程序设置

分布式应用程序的常规模式是将配置文件放在一个集中位置,以便可以从许多不同的虚拟机进行访问。现在可以将此类配置文件存储在 Azure File 共享中,供所有应用程序实例读取。这些设置也可以通过 REST 接口管理,这允许从全世界任何位置访问配置文件。

  • 诊断共享

Azure File 共享也可以用于保存诊断文件,如日志、指标和崩溃转储。通过 SMB 和 REST 接口提供这些文件,可以让应用程序构建或利用各种分析工具来处理和分析诊断数据。

  • 开发/测试/调试

开发人员或管理员在云中操作虚拟机时,通常需要一整套工具或实用程序。在需要的每个虚拟机上安装和分发这些实用程序是一项非常耗时的工作。有了 Azure Files,开发人员或管理员可以将喜爱的工具存储到可以轻松从任何虚拟机连接的文件共享中。

入门

  • 步骤 1:创建新存储帐户

微软Azure File公共预览开放之后,所有新创建的存储账户,都将自动配置文件端点。帐户的文件端点将为:<帐户名称>.file. core.chinacloudapi.cn 。

请注意,在 Azure File 预览版中,现有存储帐户不能访问 Azure Files。要访问 Azure Files,您需要创建新的存储帐户。

  • 步骤 2:创建文件共享

您现在可以使用以下两种方式之一来创建文件共享:

       ▪ PowerShell CmdLet

下载最新版本的 Azure PowerShell(版本 0.8.5 及更高版本)并按照此处的说明进行安装。完成后,启动 PowerShell 提示并执行以下操作。

# 为帐户和密钥创建上下文

$ctx=New-AzureStorageContext <帐户名称> <帐户密钥>

# 创建新共享

$s = New-AzureStorageShare <共享名称> -Context $ctx

# 在刚创建的测试共享中创建一个目录

New-AzureStorageDirectory -Share $s -Path testdir

# 将本地文件上传到刚创建的 testdir 目录

Set-AzureStorageFileContent -Share $s -Source D:\upload\testfile.txt -Path testdir

# 列出目录中的文件和子目录

Get-AzureStorageFile -Share $s -Path testdir

# 从 azure 存储文件服务下载文件

Get-AzureStorageFileContent -Share $s -Path testdir/testfile.txt -Destination D:\download

# 从 azure 存储文件服务删除文件

Remove-AzureStorageFile -Share $s -Path testdir/testfile.txt     

▪ REST API

您还可以使用“创建共享”REST API(版本 2014-02-14),以编程方式创建文件共享。REST API 可通过 http(s)://<帐户名称>.file.core.chinacloudapi.cn Uri 获取。此外,.NET
存储客户端库
从版本 4.0 开始使用 REST 版本 2014-02-14 并支持 Azure Files。我们建议将 NuGet 引用添加到您的项目。下面是一段抽取的用于创建共享的代码:

static void Main(string[] args)

{

CloudStorageAccount account = CloudStorageAccount.Parse(cxnString);

CloudFileClient client = account.CreateCloudFileClient();

CloudFileShare share = client.GetShareReference("bar");

share.CreateIfNotExistsAsync().Wait();

}

  • 步骤 3:使用文件共享

创建共享后,可以通过 SMB 或 REST 协议从共享所属存储帐户所在的同一区域中的任何 Azure 节点 (VM/Worker/Web role) 访问共享。

要通过 SMB 2.1 协议使用共享,请登录需要访问共享的虚拟机并执行“net use”,如下所示:

net use z:\\<帐户名称>.file.core.chinacloudapi.cn\<共享名称> /u:<帐户名称> <帐户密钥>

C:\>net use z:\\myaccount.file.core.chinacloudapi.cn\myshare /u:myaccount StgAccKey==



The command completed successfully.



C:\>dir z:\



  Volume in drive Z has no label.



Volume Serial Number is 4038-F841 



Directory of z:\



08/06/2013 10:51 AM 15 HelloFromWindosAzureFileService.txt



  1 File(s) 15 bytes



  0 Dir(s) 109,951,162,777,600 bytes free

C:\>type z:\HelloFromWindowsAzureFileService.txt



Hello World

要从虚拟机删除共享映射,请使用:net use z:/delete。

如何将我的数据移至 Azure Files

Azure Files 是一项独立于 Azure Blob 的服务。在预览版中,不支持将 Azure Blob 复制到 Azure Files。此外,Microsoft Azure 导入/导出服务不支持 Azure Files 预览版。这两项功能均在规划中,我们将在以后提供更多详细信息。

对于预览版,以下是可用于从内部部署向 Azure File 服务传输文件的选项列表。

AzCopy

AzCopy 版本 2.4 现在支持将本地文件移至 Azure files 或从其中移回本地。您的数据传输到 Azure Files 后,您可以从同一区域中的任何云虚拟机通过 SMB 协议轻松访问此文件共享。

假设您在文件服务中创建了名为“myfileshare”的共享,下面是一些示例:

  • 以递归方式从本地磁盘将文件上传到 Azure Files,同时复制所有文件夹结构。

             AzCopy d:\test\ https://myaccount.file.core.chinacloudapi.cn/myfileshare/
/DestKey:key /s          

注意: 空文件夹不会上传。

  • 将具有特定文件模式的文件从本地磁盘上传到 Azure Files。

            AzCopy d:\test\ https://myaccount.file.core.chinacloudapi.cn/myfileshare/
/DestKey:key ab* /s

  • 以递归方式将文件共享中的所有文件下载到本地磁盘,同时复制所有文件夹结构。

              AzCopy https://myaccount.file.core.chinacloudapi.cn/myfileshare/
d:\test\ /SourceKey:key /s            

注意:空文件夹不会下载。

  • 将某个文件从文件共享下载到本地磁盘         

    AzCopy https://myaccount.file.core.chinacloudapi.cn/myfileshare/myfolder1/
    d:\test\ /SourceKey:key abc.txt          

    注意:指定文件模式“abc.txt”时,AzCopy
    将尝试在“myfileshare/myfolder1”下查找名称完全相同的文件,但不包括其子文件夹。

在预览阶段,AzCopy 不支持以下场景。

  • 在 Azure Blob 与 Azure Files 之间以及 Azure File 共享之间使用服务器端异步复制文件。
  • 从跨地域冗余帐户的辅助区域读取 Azure File 数据。
  • 使用共享访问签名 (SAS) 连接 Azure Files。

存储客户端库 4.0(或 REST API
版本 2014-02-14

存储客户端库 4.0 及后续版本都支持文件操作,您可以编写快速应用程序以将文件上传到服务。

远程桌面到已映射共享的虚拟机

使用文件浏览器:使用文件浏览器复制文件的方法有两种。     

a. 在远程会话中通过浏览器将文件从本地计算机复制粘贴到文件共享中。 

b. 在已共享本地磁盘的情况下在远程会话中使用 xcopy            

i. 从远程桌面进入 Azure 虚拟机,并且可以选择可以在远程会话中访问的本地磁盘,如下图所示。

               

 ii.如前面所述使用 net use 创建指向 Azure 文件共享的映射。

iii.使用 xcopy:                     

xcopy \\tsclient\c\software\demo\data\* \\<accountname>.file.core.chinacloudapi.cn\myshare\data\.

SMB REST
接口之间的交互

如前面所述,Azure File 共享可以同时通过两种接口(SMB 2.1 或 REST)进行访问。

对同时在 SMB 客户端上打开的文件执行 REST 操作时,REST 操作必须遵从由 SMB 客户端指定的共享模式。

本节简要说明了这两种接口之间的交互方式,更多详细信息请参阅 MSDN 文档

以下 SMB 文件访问模式用于确定 REST 操作是否可以完成:

REST

 
操作

REST

 
操作文件访问同等操作

注释

列出文件

不适用

创建文件

写入/删除

如果文件当前已在 SMB 中打开,在文件具有写入或写入/删除共享模式时,只能通过 REST 创建文件。

获取文件

读取

如果文件当前已在 SMB 中打开,在文件通过共享读取打开时,只能通过 REST 读取文件。

设置文件属性

写入

如果文件当前已在 SMB 中打开,在文件通过写入共享打开时,只能通过 REST 设置文件属性。

获取文件属性

不适用

设置文件元数据

写入

如果文件当前已在 SMB 中打开,在文件通过写入共享打开时,只能通过 REST 设置文件元数据。

获取文件元数据

不适用

删除文件

删除

如果文件当前已在 SMB 中打开,在文件通过删除共享打开时,只能通过 REST 删除文件。

放置范围

写入

如果文件当前已在 SMB 中打开,在文件通过写入共享打开时,只能通过 REST 对文件写入数据。

列出范围

读取

如果文件当前已在 SMB 中打开,在文件通过读取共享打开时,只能通过 REST 列出其范围。

注意:列出文件 (REST API)、获取文件属性 (REST API) 和获取文件元数据
(REST API) 不能对 SMB 文件内容操作,并且不需要对文件进行读取访问(也就是说,即使 SMB 客户端为进行独占读取访问而打开文件,这些操作仍会成功)。

下面是有关 REST 获取文件共享冲突的示例:

  • SMB 客户端使用 FileShare.Write 打开文件,而非使用 FileShare.Read 打开,后者意味着不允许其他客户端同时读取该文件。
  • 然后,REST 客户端对文件执行获取文件 (REST API) 操作(从而按上表指定使用 FileAccess.Read)。
  • 结果:REST 客户端的请求失败,并显示状态代码 409(冲突)和错误代码 SharingViolation,因为 SMB 客户端在拒绝读取/删除访问的同时仍然将文件打开。

何时使用 Azure FilesAzure Blob
Azure Disk

我们通过三种主要方式将数据存储到 Azure 云中 – Files、Blob 和 Disk。所有这三种抽象均利用了 Azure 存储架构和 Azure 平台。以下部分对每种抽象的优点进行了比较。

Azure Files除 REST 接口外,还提供 SMB 2.1 接口以提供文件访问。SMB 接口使在云中运行的应用程序可以使用本地文件系统 API 读取和写入文件。文件共享最适合用于:

  • 将已使用本地文件系统 API 的应用程序迁移到云中,以在应用程序的各部分之间共享数据
  • 存储需要从许多云实例(VM/Web role/Worker role)访问的开发和调试工具
  • 需要从任何位置对数据进行 REST 访问以及需要从存储帐户所在区域中对数据进行 SMB 访问的应用程序

Azure Blob 为大规模扩展对象存储提供 REST 接口。

  • 可以编写应用程序以使用 REST API 将非结构化数据大规模存储到 Azure blob 中(单个容器的大小可以为 200 TB)。
  • 支持流媒体场景和随机访问
  • 通过 REST 从任何位置访问数据

Azure Disk提供附加到 Azure 虚拟机的永久磁盘,通过将磁盘作为固定格式的 VHD 存储到 Azure 存储中的
page blob 使数据持久。用作 VHD 时,磁盘可以附加到单个虚拟机,但不能在虚拟机实例之间共享。

  • 迁移使用本地文件系统 API 的应用程序以在永久磁盘中读取和写入数据,但不需要这些数据对其他云虚拟机可用。请注意,单个磁盘在任何指定的时间只能附加到单个虚拟机。
  • 存储在磁盘中的独立数据不需要从虚拟机以外访问,因为数据使用 NTFS 存储为 VHD 格式。但是,VHD 可以通过 REST API 从任何位置下载,然后加载到本地虚拟机。
  • 可以为磁盘创建快照,以创建时间点只读备份。需要恢复时,可以将快照复制到其他 blob 并恢复数据。

通过 SMB 2.1 访问 Azure Files 时,共享对存储帐户所在区域中的虚拟机可用。另一方面,REST 接口可以从任何位置访问。这项新服务让客户无需更改代码即可将依赖文件系统 API 的旧版应用程序迁移到云中。

下表对 Azure Files 和 Azure Blob 进行了比较。最明显的区别在于,Azure Files 可以从虚拟机通过标准文件系统 API 访问(例如,Azure Files 具有真实目录并且支持文件和目录重命名)。Files 和 Blob 均提供 REST API,允许在全球范围内访问其存储的数据。另一个重要的区别是 Azure Blob 的规模非常大,每个容器最高可达 200TB,而 Azure Files 每个共享的容量限制为 5TB。最后,Azure Blob 支持“copy blob”和“snapshots”API,而
Azure Files 预览版不支持这些 API。

描述

Azure

  Blob

Azure

  Files

持久性 选项

LRS、ZRS、GRS(以及具有更高可用性的

  RA-GRS)

LRS、GRS

可访问性

REST API

SMB 2.1(标准文件系统 API



  REST API

连接性

REST – 全世界

SMB 2.1 - 一定区域内



  REST – 全世界

端点

http://myaccount.blob.core.windows.net/mycontainer/myblob

\\myaccount.file.core.chinacloudapi.cn\myshare\myfile.txt

  http://myaccount.file.core.chinacloudapi.cn/myshare/myfile.txt

目录

平面命名空间,但前缀列表可以模拟虚拟目录

真实目录对象

名称大小写

区分大小写

不区分大小写,但保留大小写

容量

最高 200TB

  的容器

5TB 的文件共享

吞吐量

每个 blob 最多

  60 MB/秒

每个共享最多 60 MB/秒

对象大小

每个 blob 最多

  1TB

每个文件最多 1TB

计费容量

根据写入的字节

根据文件大小

Azure Files 可补充 Azure Disk,并且可以附加到 Azure 虚拟机。磁盘在任何指定的时间只能附加到单个虚拟机。Azure 磁盘是在 Azure 存储中存储为 page blob 的固定格式 VHD,由虚拟机用来保留磁盘上的数据。但是,磁盘是 NTFS 格式的 VHD(或其他文件系统格式),因此只能从单个虚拟机访问。此外,磁盘没有可识别 VHD 或文件系统格式的 REST 接口,因此您无法从虚拟机以外通过 REST 访问 VHD 中的数据(文件)。基于 Azure Files 的文件共享可以从
Azure 虚拟机以访问本地磁盘的方式进行访问。此外,文件共享可以在许多虚拟机之间共享并且可以通过 REST API 访问。下表重点介绍了 Azure Disk 与 Azure Files 之间的一些区别。

描述

磁盘

Azure

  Files

与 Azure 虚拟机的关系

需要启动(操作系统磁盘)

作用域

独立/隔离于单个虚拟机

在多个虚拟机之间进行共享访问

快照和复制

配置

通过门户/管理 API 配置并且在启动时可用

在启动后连接(在 Windows 中通过

  net use 连接)

内置身份验证

内置身份验证

通过 net use 设置身份验证

清理

如果需要,可以通过虚拟机清理资源

通过标准文件 API 或

  REST API 手动操作

通过 REST 访问

只能通过 REST 作为固定格式 VHD(单个 blob)访问。不能通过 REST 访问存储在

  VHD 中的文件。

可以通过 REST 访问存储在共享中的各个文件

最大大小

1TB 磁盘

5TB 文件共享,共享内 1TB 文件

最高 8KB IOPS

500 IOPS

1000 IOPS

吞吐量

每个磁盘最多 60 MB/秒

每个文件共享最多 60 MB/秒

Azure File 服务的特性和兼容性

以下是 Azure Files 预览版的可伸缩性目标

  • 每个共享最多 5TB
  • 每个文件最多 1 TB
  • 每个共享最多 1000 IOPS(大小为 8KB)
  • 对于大型 IO,每个共享的数据传输为最多 60MB

支持的 SMB 协议版本为 SMB 2.1,在使用 Windows 7 或更高版本、Windows Server 2008 R2 或更高版本的 Windows 客户端上可用。对于 Linux,在 Azure IaaS 映像库中可用的 Ubuntu 映像已知可支持 SMB 2.1,但是具有 SMB 2.1 支持的其他分发应该也可以使用。

定价

新 SMB 服务的定价位于此处。在预览阶段,容量将以正式发布价格的 50% 收费。

SMB 兼容性

SMB 2.1 协议具有许多功能;其中某些功能不适用于云(例如,命名管道等),而有些功能极少使用,因此不提供支持(例如,备用数据流)。有关 Azure Storage Files 不支持的相关功能列表,请参阅此处

常见问题

1. 是否支持 SMB 3.0

目前支持 SMB 2.1。我们已将支持 SMB 3.0 加入我们的功能请求列表,但是尚不能提供时间表。我们发现 SMB 2.1 对于大多数常见系统和工具运行良好。

2. 是否支持基于 Active Directory
的身份验证?

目前不支持基于 AD 的身份验证或 ACL,但是已将此支持加入我们的功能请求列表。目前使用 Azure 存储帐户密钥提供文件共享的身份验证和授权访问。

3. 是否可以从存储帐户所在区域以外访问文件共享?

SMB 2.1 协议仅适用于从存储帐户所在区域中访问。REST API 可用于从任何位置同时访问这些文件。

4. 如何使共享对我的虚拟机可见?

您可以将共享映射(或挂载)为操作系统中的任何其他 SMB 共享。对于 Windows,您可以在命令行中使用“net use”命令,或使用文件浏览器挂载共享。存储帐户名称为用户名,密码为存储帐户密钥:

net use * \\myaccountname.file.core.chinacloudapi.cn\<sharename> /u:myaccountname StorageAccountKeyEndingIn==

5. 是否可以从 Linux 挂载共享?

可以。目前,似乎只有门户中最新的 2 种 Ubuntu 映像可以支持 Azure Files。要从 Linux 挂载共享,您需要先安装一些客户端工具。一个选择是 cifs-utils。这是从 Ubuntu 安装 cifs-utils 的命令:

sudo apt-get install cifs-utils      

接下来,您需要设置挂载点 (mkdir mymountpoint),然后发出与此命令类似的挂载命令:   

sudo mount -t cifs //myaccountname.file.core.chinacloudapi.cn/mysharename ./mymountpoint -o vers=2.1,username=myaccountname,password=StorageAccountKeyEndingIn==,dir_mode=0777,file_mode=0777      

您也可以在您的 /etc/fstab 中添加设置以挂载共享。

6. 如何访问共享中的数据?

挂载共享后,访问共享就如同访问本地硬盘上的文件一样简单。只需使用标准文件系统 API 创建/打开/读取/修改/删除所需文件或目录即可。

7. 新的Azure模拟器是否支持 Azure Files

新模拟器不支持通过 SMB 或 REST API 使用 Azure Files。

总结与链接

总而言之,我们非常高兴地宣布发布新的文件共享 PaaS 服务,让我们的用户可以使用标准文件系统 API 在应用程序实例之间轻松共享数据。我们一如既往地乐于倾听您的反馈,请通过本博客和Azure Storage MSDN 论坛发表评论或发送电子邮件至
mastoragequestions@microsoft.com

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

Azure Files 2014-04-14 版本

AzCopy

Storage .NET Client Library 4.3.0

Brad Calder、Andrew Edwards、Jai Haridas、Atul Sikaria 和 Jean Ghanem

本文翻译自:http://blogs.msdn.com/b/windowsazurestorage/archive/2014/05/12/introducing-microsoft-azure-file-service.aspx

Microsoft Azure File 服务简介的更多相关文章

  1. 保持与 Microsoft Azure Files 的连接

    我们在最近的博客文章中介绍了 Azure StorageFiles的预览版,请单击此处.该文章包含 Azure Files 的相关信息,说明了如何申请预览版并开始使用,还介绍了一些有助于创建共享和传 ...

  2. 通过Microsoft Azure服务设计网络架构的经验分享(转)

    原文:http://www.infoq.com/cn/articles/azure-networking-tips 本文从产品设计和架构角度分享了 Microsoft Azure 网络服务方面的使用经 ...

  3. 通过Microsoft Azure服务设计网络架构的经验分享

    作者 王枫  发布于 2014年4月8日 本文从产品设计和架构角度分享了Microsoft Azure网络服务方面的使用经验,希望你在阅读本文之后能够了解这些服务之间,从而更好地设计你的架构. Mic ...

  4. Azure File SMB3.0文件共享服务(4)

    在Linux上使用Azure文件共享服务 使用SMB 3.0从用户自己的数据连接到Azure,需要加密连接,但目前的Linux SMB客户端都暂时都不支持,Linux的开源社区正在努力将该功能添加到L ...

  5. Azure File SMB3.0文件共享服务(1)

    Azure Storage File是Azure推出的文件共享服务,目前的版本同时支持SMB 2.1和SMB 3.0协议.文件共享服务非常适合那些希望把自己数据中心中使用文件共享的应用程序,在云端需要 ...

  6. Microsoft Azure 负载平衡服务

     Microsoft Azure 为在其中托管的虚拟机(IaaS) 和云服务(PaaS) 提供负载平衡服务.负载平衡支持应用程序伸缩,并且提供应用程序故障恢复以及其他优势. 可以通过以下方式访问负 ...

  7. Azure File

    Azure File 服务使用标准 SMB 2.1 协议提供文件共享.Azure 中运行的应用程序现在可以使用熟悉的标准文件系统 API(如 ReadFile 和 WriteFile)在虚拟机之间轻松 ...

  8. Microsoft Azure云计算第一步—试用帐户申请

    从本文开始,将会对Microsoft Azure云从Iaas, Paas, Saas三种类型的云应用通过文章进行介绍.千里之行,始于帐户:),如果大家需要申请免费试用帐户请参考本文. 对于直接付钱的壕 ...

  9. 利用Microsoft Azure Machine Learning Studio创建机器学习实例

    Microsoft Azure云服务推出机器学习的模块,用户只需上传数据,利用机器学习模块提供的一些算法接口和R语言或别的语言接口,就能利用Microsoft Azure强大的云计算能力来实现自己的机 ...

随机推荐

  1. How to debug Custom Action DLL

    在MSI工程中,经常会遇到这样的情况: MSI 工程需要调用DLL(C++)中的一个函数实现某些特殊或者复杂的功能,通常的做法是在Custom Action 中调用该DLL . 那么在安装过程中,该C ...

  2. php header示例代码(推荐)

    <?php /*** Function: PHP header() examples (PHP) ** Desc: Some examples on how to use the header( ...

  3. angular中的orderBy过滤器使用

    一  orderBy过滤器   AngularJS中orderBy进行排序,第一个参数可以有三种类型,分别为:function,string,array:   第一种:function,如果是func ...

  4. js调用asp.net 后台属性值

    后台代码: public string title = "js调用后台属性值"; public void getContent() { return title; } 前台代码: ...

  5. redis 安装注意事项

    redis安装 1.redis 安装 官网地址:http://redis.io/download $ wget http://download.redis.io/releases/redis-3.0. ...

  6. codeforces 615D - Multipliers

    Multipliers 题意:给定一个2e5范围内的整数m,之后输入m个2e5内的素数(当然可以重复了),问把这些输入的素数全部乘起来所得的数的约数的乘积mod(1e9+7)等于多少? 思路:对题目样 ...

  7. 转:Java Annotation详解

    转载自:http://william750214.javaeye.com/blog/298104 元数据的作用 如果要对于元数据的作用进行分类,目前还没有明确的定义,不过我们可以根据它所起的作用,大致 ...

  8. Java之向左添加零(000001)第二种方法

    //待测试数据 int i = 100; //得到一个NumberFormat的实例 NumberFormat nf = NumberFormat.getInstance(); //设置是否使用分组 ...

  9. POJ 2186 Popular Cows(Tarjan)

    http://poj.org/problem?id=2186 题意 :给你n头牛,m对关系,每对关系由两个编号组成,u和v代表着u认为v是受欢迎的,如果1认为2是受欢迎的,2认为3是受欢迎的,那1认为 ...

  10. POJ 2492 A Bug's Life(并查集)

    http://poj.org/problem?id=2492 题意 :就是给你n条虫子,m对关系,每一对关系的双方都是异性的,让你找出有没有是同性恋的. 思路 :这个题跟POJ1703其实差不多,也是 ...