适用于: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>是在上一步中创建的文件夹。
-
在其他节点上重复这些步骤。