标签:azure文件服务 fileshare azure存储
春节前突击出差了几次忙的不可开交,没想节后又马不停蹄的投入到工作中。。。哎,不过充实的工作安排也会让自己得到更快的提升(只能这样自我安慰了),有阵子没更新博客了,主要是因为忙于很多售前项目,也迟迟没想出哪些值得分享的内容,好在春节利用几天时间做了些测试并准备了不少素材,可能最近会share一些内容出来,不过很多都是基本的,希望可以帮助到一些刚接触azure或云计算相关的朋友们吧。
之前的博文有提到过一些有关Azure存储服务方面的内容,例如Blob的概念,还有像AzCopy管理工具,今天继续说说Azure存储方面的一个新服务,叫做Azure文件服务。
先看下面两张图,相对于Blob来说,文件服务(即FileShare)从逻辑上看有些区别,首先同样是基于存储账户这个概念的,也就是对外开放的URL与Blob、Table、Queue都是一样的,只不过在存储账号之后不再是container而是share,这个share相当于共享名称(没有数量限制),和我们windows服务器中的smb共享是一样的,但是Azure文件服务是基于smb2.1的而不是3.0,也就意味着目前文件服务无法承载虚拟机或MSSQL这些服务,在share之后就是目录,目录同样没有数量限制,最后就是文件,单个文件大小上限是1TB,可以发现这个阀值与page blob是相同的。
那么最终Azure文件服务的URL格式就是:https://<storage
account>
.file.core.chinacloudapi.cn/<share>
/<directory/directories>
/<file>
目前Azure文件服务的创建与管理是无法通过门户来操作的,最便捷的方式就是PowerShell(Azure模块 0.8.5或更高,如果不满足请及时更新),整个过程还是很简单的,首先要具备一个存储账号如下图:(后面的截图中可能账号名称不一致,因为我在global和大陆版之间切换,不影响演示)
通常第一次导入publishsetting文件时,默认的订阅是没有关联存储账号的,那么就通过powershell配置一下,如下图:
接下来就准备创建Azure文件服务的共享了,一般我习惯先设置一个存储账户的变量$key,然后生成一个上下文变量$context,这一步是必须的,上下文中主要是包含了存储账户和密钥(主备密钥都可以),接下来就可以创建文件服务的share,也就是紧跟在存储账户之后的那个文件共享名,通过new-azurestorageshare来实现,需要调用之前的$context
但是!出现了一个坑,与其说是坑倒不如说是设计上的缺陷(至少我个人是这么人为的),希望看过我这篇博文的筒子们可以少绕些弯子,如下图中报错中所描述的,提示我解析名称失败,奇怪的是这名称不是国内的chinacloudapi.cn而是global版的windows.net
于是乎赶紧查看一下语法,果不其然发现一个坑爹的-environment参数,记得之前只有在get-azurepublishsettingfile时会用到它,没想到文件服务也需要,明明之前的blob、table、queue服务都可以直接指向大陆版本,真是想不明白。。。
重启配置一次$context,并添加azurechinacloud,如下图
再次尝试创建文件共享名"labshare01",果然成功了。。。
有了account和share之后就可以创建目录了,在labshare01下创建一个叫做“share01folder01”的文件夹,如下图:
到此为止Azure文件服务就已经创建完成了,接下来就可以利用文件服务来上传并管理所需要的数据了,我在本地生成了一个txt文档,然后将它上传至share01folder01文件夹中,如下图:
通过get-azurestoragefile查看已经上传成功,同样利用AzCopy工具也能完成,并且AzCopy支持Blob与FileShare之间的数据拷贝,还是非常好用的
####################################################################################
上面提到了如何快速简单的创建Azure文件服务,接下来如何使用呢,首先Azure文件服务可以供Azure虚拟机和云服务来使用,任意数量的虚拟机或其他角色(Web/Worker)可以同时挂载文件共享,本地的应用程序也可以通过文件API来访问共享中的数据,遗憾的是本地的客户端不能通过Azure存储账户和密钥来直接挂载共享,只有AzureVM可以使用,例如下图中通过net use来将之前创建的共享mount到我这台虚拟机上,成功后可以看到Z盘映射了labshare01
这样我就可以很方便的从AzureVM中来访问共享中的数据,如下图:
但是在大部分场景中,我们都需要虚拟机重启时能够自动重连共享(跟网络映射一样),可以通过下图中的cmdkey来将azure存储账户和密钥凭据保存在本地
但是坑又来了。。。经过上面的方法,重启之后链接失败,如下图:
惦记共享后手动输入存储账户密钥,就可以正常访问了,开始很奇怪为什么会酱紫,本地保存的凭据和我输入的肯定一致,可就是无法自动重连
经过咨询和自己验证之后得知,需要先使用cmdkey将凭据保存,然后再mount共享。。。这又是坑啊
这次总算自动连接上了,看来对于操作的步骤还有先后顺序的要求(从技术上来看真是说不过去。。)
Azure文件服务实现简单,使用也很方便,它的出现使得用户在公有云存储服务上又多了一种选择,并且对于已有的本地应用,迁移到云端时考虑使用Azure文件服务会是一种比较简单的实现方式,如果日后Azure支持SMB3.0的话,估计会有更多的亮点出现。
本文出自 “技术不宅” 博客,请务必保留此出处http://maomaostyle.blog.51cto.com/2220531/1618847
标签:azure文件服务 fileshare azure存储
原文地址:http://maomaostyle.blog.51cto.com/2220531/1618847