安装Azure文件共享

当我尝试使用以下命令进行挂载时:

mount -v -t cifs //<storageaccount>.file.core.windows.net/<sharename> <localfolder> -o username=<myuser>,password=<storageaccountkey>,dir_mode=0777,file_mode=0777,vers=3.0 

如果我使用等效的命令从Azure Ubuntu VM或Windows机器运行它,它将很好地工作。

试图在我的Linux机器上运行相同的命令我得到以下错误:

挂载错误(13):权限被拒绝

而这从dmesg

[9421.865985]状态码返回0xc0000022 STATUS_ACCESS_DENIED

[9421.865994] CIFS VFS:在SessSetup = -13中发送错误

[9421.866098] CIFS VFS:cifs_mount失败,返回码= -13

我拥有与VM相同版本的CIFS :6.4。

我在我的内核(4.4.21-gentoo)中启用了SMB2-SMB3-SMB3.1.1(实验)。

我也安装了samba (也不适用于smbclient),但我的理解是不相关的。

不幸的是,你还不能。 如果安装在Azure数据中心之外,则仅支持Windows 8,10和Windows Server 2012(R2)。

Linux SMB客户端尚不支持encryption,因此从Linux安装文件共享仍然要求客户端与文件共享位于相同的Azure区域。 但是,对Linux的encryption支持是负责SMBfunction的Linux开发人员的路线图。 未来支持encryption的Linux发行版也将能够从任何地方安装Azure文件共享。

更多信息:

https://azure.microsoft.com/en-us/documentation/articles/storage-how-to-use-files-linux/#overview

我肯定会推荐你产生一个基于Windows的虚拟机来完成这项工作。 当我在Windows上需要可靠的NFS服务器/客户端时,我在Windows上做了一个不同的故事。

它是否适合你的smbclient?

这适用于我,而“mount -t cifs -overs = 3.0”…不。

 smbclient //foo.file.core.windows.net/test -mSMB3 -e -Ufoo%longkeyhere== 

根据你的描述,我再次testing一下。 不幸的是,我们无法在Azure虚拟机之外安装文件共享。 您可以使用命令检查已安装的软件包和操作系统的内核。

在这里输入图像说明

即使虚拟机的软件包和操作系统的内核相同,我们也无法在本地虚拟机上安装Azure文件共享。 实际上,在Azure VM中托pipe的Linux服务器将会工作,因为如果客户端与文件共享处于相同的Azure区域,则Azure文件存储将接受SMB2.1连接。

但是,当您尝试从本地安装时,Azure文件存储请求使用从客户端强制encryption的SMB 3.0,但是SMB 3.0encryption是Linux不支持的内容,因此即使您指定的SMB 3.0在你的命令。

这是我的情况….

当我尝试使用SMB 3.0(我的虚拟机在Azure上,我的存储帐户也在同一地区)与SMB 3.0,我一直在获取安装错误。 但是,当我将SMB版本更改为2.1时,它取得了成功。 参见下面的例子

例如:

在Azure中失败的命令(带有SMB 3.0版本)

 sudo mount -t cifs //storageaccountname.file.core.windows.net/shared /mnt/mount -o vers=3.0,username=xxxxxxx,password=xxxxxxxx,dir_mode=0777,file_mode=0777 

结果:

挂载错误(11):资源暂时不可用请参考mount.cifs(8)手册页(例如man mount.cifs)

在Azure中使用命令(与SMB 2.1版本)

 sudo mount -t cifs //storageaccountname.file.core.windows.net/shared /mnt/mount -o vers=2.1,username=xxxxxxx,password=xxxxxxxx,dir_mode=0777,file_mode=0777 

结果:

它成功挂载