Sql server 将NFS装载作为卷映射的SQL Server docker容器

Sql server 将NFS装载作为卷映射的SQL Server docker容器,sql-server,docker,Sql Server,Docker,我正在尝试使用搁浅的microsoft/mssql Server linux:最新docker映像在ubuntu上作为docker容器运行SQL Server。对于数据持久性,我使用docker run命令中的-v选项将一个卷从主机(具有ext4文件系统)映射到容器,如下所示 docker run -it -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=######' -p 1433:1433 -v /var/opt/database:/va

我正在尝试使用搁浅的microsoft/mssql Server linux:最新docker映像在ubuntu上作为docker容器运行SQL Server。对于数据持久性,我使用docker run命令中的-v选项将一个卷从主机(具有ext4文件系统)映射到容器,如下所示

docker run -it -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=######' -p 1433:1433 
               -v /var/opt/database:/var/opt/mssql/data microsoft/mssql-server-linux
容器运行正常,我能够连接到数据库。但我不想在我的主机上存储数据,因为数据库的规模越来越大,而且出于群集的原因。现在我想在另一台机器上运行一个NFS服务器,将NFS目录装载到我的docker主机上,然后在卷映射上使用该NFS目录现在卷映射已完成

-v /var/nfs/database:/var/opt/mssql/data 
其中,
/var/nfs/database
是docker主机上的nfs装载目录。现在,当我启动容器时,我得到以下错误

2017-08-18 10:15:53.98 spid5s FCB::打开失败:无法打开文件号1的文件/var/opt/mssql/data/master.mdf。操作系统错误:87(参数不正确)。 2017-08-18 10:15:53.98 spid5s错误:5120,严重程度:16,状态:101。 2017-08-18 10:15:53.98 spid5s无法打开物理文件“/var/opt/mssql/data/master.mdf”。操作系统错误87:“87(参数不正确)。”。 2017-08-18 10:15:54.13 spid5s错误:17204,严重程度:16,状态:1。 2017-08-18 10:15:54.13 spid5s FCB::打开失败:无法打开文件号2的文件/var/opt/mssql/data/mastlog.ldf。操作系统错误:87(参数不正确)。 2017-08-18 10:15:54.13 spid5s错误:5120,严重程度:16,状态:101。 2017-08-18 10:15:54.13 spid5s无法打开物理文件“/var/opt/mssql/data/mastlog.ldf”。操作系统错误87:“87(参数不正确)。”

我已授予数据库文件的所有权限。下面是nfs装载代码段

sharedstorageIp:/var/nfs nfs4 443G 47G 375G 11%/var/nfs

解释你不能这样做:

此版本不支持在NFS服务器上托管数据库文件 释放。这包括使用NFS进行共享磁盘故障转移群集 以及非集群实例上的数据库。我们正在努力 在即将发布的版本中启用NFS服务器支持

考虑到数据库对可靠性的要求,在网络路径上托管数据库文件并非易事。在协议版本2.2之前,无法在SMB共享上托管文件。

解释您不能这样做:

此版本不支持在NFS服务器上托管数据库文件 释放。这包括使用NFS进行共享磁盘故障转移群集 以及非集群实例上的数据库。我们正在努力 在即将发布的版本中启用NFS服务器支持


考虑到数据库对可靠性的要求,在网络路径上托管数据库文件并非易事。在协议版本2.2之前,无法在SMB共享上托管文件。

感谢您的回答。这很有意义。但是,当我使用ctp2-0标记提取映像时,我能够使用nfs装载。可以使用该图像。当我使用ctp2-1时,这再次失败。这让我担心版本的稳定性。除了ctp2-0之外,所有版本都失败了。@Anand:这样做几乎肯定不行,除非你真的不在乎可靠性。在CTP2.0中,可能有一些文件系统调用只是为了让事情正常工作而被模拟出来,在以后的版本中正确地报告“未实现”。当然,从技术上讲,在Linux上还没有稳定的SQL Server版本,所以如果您只是想让它进行实验,那就继续吧。这不会改变安装不受支持的事实,您不应该将数据委托给它。感谢您的回答。这很有意义。但是,当我使用ctp2-0标记提取映像时,我能够使用nfs装载。可以使用该图像。当我使用ctp2-1时,这再次失败。这让我担心版本的稳定性。除了ctp2-0之外,所有版本都失败了。@Anand:这样做几乎肯定不行,除非你真的不在乎可靠性。在CTP2.0中,可能有一些文件系统调用只是为了让事情正常工作而被模拟出来,在以后的版本中正确地报告“未实现”。当然,从技术上讲,在Linux上还没有稳定的SQL Server版本,所以如果您只是想让它进行实验,那就继续吧。它不会改变这样一个事实,即安装不受支持,您不应该将数据委托给它。