2016-08-15 97 views
6

有没有人有Windows Server使用Windows NFS 4.1客户端连接到AWS EFS卷?我知道这是不支持的,但想知道是否有人(或通过另一个客户端或实用程序?)来自Windows Server 2012的AWS EFS

我们有一个要求Windows服务器将文件放到NFS卷(理想情况下是EFS)上,卷可以从基于RHEL的应用程序中查询。犯规支持S3该应用,否则我们会使用

韩国社交协会

+0

为什么不支持S3?有特别的原因吗? – error2007s

+0

厂商不支持基于对象的文件存储,并表示尽管我们有很多抗议活动,但并没有计划! – JoeShmoe

回答

3

不,这是不可能的。 AWS特别声明,在他们的文档中是不可能的。

例如,

使用亚马逊EFS与Microsoft Windows亚马逊EC2实例不支持。为什么这是不可能在这里AWS EFS setup docs

更技术性的解释:

拒绝份额 NFS支持共享的否定的概念,主要是针对用户使用的Windows客户端否定别人访问特定文件已被打开。 Amazon EFS不支持此操作,并且对于指定OPEN4_SHARE_DENY_NONE以外的共享拒绝值的任何OPEN命令返回NFS错误NFS4ERR_NOTSUPP。 Linux NFS客户端不使用OPEN4_SHARE_DENY_NONE以外的任何内容。 AWS document reference

我还没有设法找到任何第三方客户端,这将解决这个问题。

+3

AWS不支持*。这并不意味着它不可能*。事实上,我在EC2上运行Windows Server 2012 R2,并使用由密歇根大学的人们制作的NFSv4.1客户端版本连接到EFS(http://citi.umich.edu/projects/nfsv4/windows /)。我正在更新我在Github上的代码分支,以包含必须做出的更改(只是注释掉一个'#define'来处理EFS的OPEN4_SHARE_DENY_NONE需求)。它将在https://github.com/contentfree/ms-nfs41-client。 (我当然不知道,如果它是*生产*等级,但...) – davemyron

2

我使用了一种解决方法。就我而言,我只需要访问Windows 2016 Server EC2实例上的EFS共享。速度/吞吐量不完全是一个问题。

我创建了一个t2.nano Linux/Ubuntu实例,在该实例上挂载了EFS共享,然后在Linux实例上设置了一个SMB共享以通过网络为挂载的EFS文件系统提供服务。

之后,它只是一个将网络文件夹映射到Windows 2016服务器EC2实例上的驱动器的问题。

在Linux/Ubuntu实例上设置SMB共享非常直接,如Ubuntu文档here中所述。

3

NFSv4.1 client made by folks at CITI @ University of Michigan开始,只需进行一些相对较小的更改,即可与AWS EFS文件系统建立工作连接。

@kafka指出:当任何客户端指定除OPEN4_SHARE_DENY_NONE以外的共享拒绝值时,AWS EFS将禁止/失败。幸运的是,CITI的人们发现这是一个可能的问题,并增加了一个定义,当被注释掉时,它只会使用OPEN4_SHARE_DENY_NONE作为共享拒绝值。

一旦这个定义被注释掉了,那么你需要为你的系统重新编译它 - 如果你使用自述文件指定的Visual Studio和WDK版本,那么这个过程相对简单。一个问题是,自签名证书过程需要而不是使用过时的Root Agency证书(因为它只有512位)。改为使用certreq

我正在收集这方面的知识到a fork of the CITI code at Github。 (我敢肯定,你要么解决了你的问题,要么继续前进,但祝你那些从Google降落在这里的人们幸运!)