部署在Windows Azure上的虚拟机之间如何共享文件?例如:Web Server A和Web Server B组成负载均衡集群,两个服务器需要一个共享目录来存储用户上传的文件。通常,大家可能首先想到的是在一个虚拟机上开放一个共享目录或者NFS服务(Linux)。其实,Windows Azure的文件共享服务就可以很好的解决这个问题,而且不需要在虚拟机上开放共享目录或者提供NFS服务。
文件共享服务是Windows Azure存储服务的一部分。每个存储账户(Storage Account)都有一个文件共享服务终结点(Endpoint),用户可以通过存储账户的文件共享服务终端点创建文件共享服务。
- 每个存储账户可以创建多个文件共享服务。
- 每个文件共享服务最高容量为5TB。
- 存储在文件共享服务中的单个文件最大1TB。
- 文件共享使用SMB 2.1协议,未来会支持SMB 3.0。
- 文件服务不能跨数据中心使用。例如:北京的虚拟机不能挂载上海的文件共享服务。
- 文件服务只能使用PowerShell创建和维护。
接下来,我们来创建一个文件共享服务并挂载到虚拟机上使用。
找到并记录存储账号的名称、文件服务终端点(file service endpoint)和主访问密钥(primary access key)。例如:
Storage Account[存储账户名称]:myteststorage File Service Endpoint[文件共享服务终端点]:https://myteststorage.file.core.chinacloudapi.cn/ Primary Key[主访问密钥]:HPvhefYfgGWiB8lb+oXxpMS0Tc==
定义当前存储账户上下文(context),即:选择要创建文件共享服务的存储账号。
$ctx=New-AzureStorageContext [存储账户名称] [主访问密钥]
创建文件共享服务
New-AzureStorageShare [文件共享服务名称] -Context $ctx
查看文件共享服务
Get-AzureStorageShare -Context $ctx
在Windows Server中挂载文件共享服务,[盘符]是一个有效的、没有被占用的Windows文件系统盘符,例如:z:
net use [盘符] \[存储账户名称].file.core.chinacloudapi.cn[文件共享服务名称] /u:[存储账户名称] [主访问密钥]
执行上述命令后,在Windows Server文件系统中会出现一个新的盘符,打开这个盘符,就可以访问上述步骤中所创建的文件共享服务了。
Linux系统中也可以挂载和使用文件共享服务,但需要安装CIFS协议支持。个人并不建议在生产环境中通过Linux系统来挂载和使用文件共享服务。希望Windows Azure未来会支持基于NFS的文件共享服务。