适用于:SQL Server - Linux
本文介绍如何在 Linux 上为故障转移群集实例 (FCI) 配置 NFS 存储。
NFS 或网络文件系统是用于在 Linux 中而非 Windows 中共享磁盘的常见方法。 与 iSCSI 类似,只要满足 SQL Server 的存储要求,就可以在服务器、某种设备或存储单元上配置 NFS。
重要的 NFS 服务器信息
托管 NFS 的源(Linux 服务器或其他源)必须使用/符合 4.2 或更高版本。 早期版本不适用于 Linux 上的 SQL Server。
将文件夹配置为在 NFS 服务器上共享时,请确保它们遵循以下准则常规选项:
-               rw,确保文件夹可读取和写入
-               sync,确保一定会写入文件夹
- 不要将 no_root_squash用作选项,它被认为存在安全风险
- 确保对文件夹应用完整权限 (777)
确保针对访问强制执行安全标准。 配置文件夹时,请确保只有参与 FCI 的服务器才能看到 NFS 文件夹。 在以下示例中,显示了基于 Linux 的 NFS 解决方案的修改 /etc/exports,其中文件夹限制为 FCIN1 和 FCIN2。
# /etc/exports: the access control list for filesystems which may be exported
#               to NFS clients. See export(5).
#
/var/nfs/fci1   FCIN1(rw,sync) FCIN2(rw,sync)
说明
- 选择将参与 FCI 配置的其中一个服务器。 选择任何一个均可。 
- 检查服务器是否可以访问 NFS 服务器上的挂载。 - sudo showmount -e <IPAddressOfNFSServer>-               <IPAddressOfNFSServer>是要使用的 NFS 服务器的 IP 地址。
 
-               
- 对于系统数据库或存储在默认数据位置的任何内容,请执行以下步骤。 否则,请跳至步骤 4。 - 确保正在使用的服务器上的 SQL Server 已停止运行。 - sudo systemctl stop mssql-server sudo systemctl status mssql-server
- 彻底切换为超级用户。 - sudo -i
- 切换为 - mssql用户。- su mssql
- 创建一个临时目录来存储 SQL Server 数据和日志文件。 - mkdir <TempDir>-               <TempDir>是文件夹的新名称。 以下示例创建一个名为/var/opt/mssql/tmp的文件夹。
 - mkdir /var/opt/mssql/tmp
-               
- 将 SQL Server 的数据和日志文件复制到临时目录。 - cp /var/opt/mssql/data/* <TempDir>-               <TempDir>是上一步中的文件夹的名称。
 
-               
- 验证文件是否位于目录中。 - ls TempDir-               <TempDir>是上一步中的文件夹的名称。
 
-               
- 删除现有 SQL Server 数据目录中的文件。 - rm - f /var/opt/mssql/data/*
- 验证文件是否已删除。 - ls /var/opt/mssql/data
- 键入 exit 切换回根用户。 
- 将 NFS 共享装载到 SQL Server 数据文件夹中。 - mount -t nfs4 <IPAddressOfNFSServer>:<FolderOnNFSServer> /var/opt/mssql/data -o nfsvers=4.2,timeo=14,intr-               <IPAddressOfNFSServer>是要使用的 NFS 服务器的 IP 地址
-               <FolderOnNFSServer>是 NFS 共享的名称。 以下示例语法与步骤 2 中的 NFS 信息匹配。
 - mount -t nfs4 10.201.202.63:/var/nfs/fci1 /var/opt/mssql/data -o nfsvers=4.2,timeo=14,intr
-               
- 在不切换的情况下,发布装载,以检查装载是否成功。 - mount- 下面是预期的输出。 - 10.201.202.63:/var/nfs/fcil on /var/opt/mssql/data type nfs4 (rw,relatime,vers=4.2,rsize=524288,wsize=524288,namlen=255,hard, proto=tcp,port=0,timeo=14, retrans=2,sec=sys,clientaddr=10.201.202.128,local lock=none, addr=10.201.202.63)
- 切换到 - mssql用户。- su mssql
- 从临时目录 /var/opt/mssql/data 复制文件。 - cp /var/opt/mssql/tmp/* /var/opt/mssqldata
- 验证文件是否在那里。 - ls /var/opt/mssql/data
- 输入 - exit而不是- mssql。
- 输入 - exit以退出 root 身份。
- 启动 SQL Server。 如果正确复制了所有内容并正确应用了安全性,SQL Server 应显示为已启动。 - sudo systemctl start mssql-server sudo systemctl status mssql-server
- 创建数据库以测试是否正确设置了安全性。 以下示例演示如何通过 Transact-SQL 完成。 也可以通过 SQL Server Management Studio(SSMS)完成。   
- 停止 SQL Server 并验证它是否已关闭。 - sudo systemctl stop mssql-server sudo systemctl status mssql-server
- 如果你不再创建任何其他 NFS 装载,请卸载共享。 如果要创建其他挂载,请不要卸载。 - sudo umount <IPAddressOfNFSServer>:<FolderOnNFSServer> <FolderToMountIn>-               <IPAddressOfNFSServer>是要使用的 NFS 服务器的 IP 地址
-               <FolderOnNFSServer>是 NFS 共享的名称
-               <FolderMountedIn>是在上一步中创建的文件夹。
 
-               
 
- 对于系统数据库以外的其他内容,例如用户数据库或备份,请按照以下步骤操作。 如果仅使用默认位置,请跳至步骤 5。 - 切换为超级用户。 - sudo -i
- 创建将由 SQL Server 使用的文件夹。 - mkdir <FolderName>-               <FolderName>是文件夹的新名称。 如果文件夹不在正确的位置,需要指定文件夹的完整路径。
 - 以下示例创建一个名为 - /var/opt/mssql/userdata的文件夹。- mkdir /var/opt/mssql/userdata
-               
- 将 NFS 共享装载到上一步中创建的文件夹中。 - mount -t nfs4 <IPAddressOfNFSServer>:<FolderOnNFSServer> <FolderToMountIn> -o nfsvers=4.2,timeo=14,intr-               <IPAddressOfNFSServer>是要使用的 NFS 服务器的 IP 地址
-               <FolderOnNFSServer>是 NFS 共享的名称
-               <FolderToMountIn>是在上一步中创建的文件夹。
 - 以下示例装载 NFS 共享。 - mount -t nfs4 10.201.202.63:/var/nfs/fci2 /var/opt/mssql/userdata -o nfsvers=4.2,timeo=14,intr
-               
- 在不切换的情况下,发布装载,以检查装载是否成功。 
- 键入 exit,退出超级用户身份。 
- 若要进行测试,请在该文件夹中创建数据库。 以下示例使用 sqlcmd 创建数据库、相应切换上下文、验证文件是否存在于操作系统级别,然后删除临时位置。 可以使用 SSMS。   
- 卸载共享 - sudo umount <IPAddressOfNFSServer>:<FolderOnNFSServer> <FolderToMountIn>-               <IPAddressOfNFSServer>是要使用的 NFS 服务器的 IP 地址
-               <FolderOnNFSServer>是 NFS 共享的名称
-               <FolderMountedIn>是在上一步中创建的文件夹。
 
-               
 
- 在其他节点上重复这些步骤。