Настройка экземпляра отказоустойчивого кластера (NFS) — SQL Server на Linux
Область применения: SQL Server — Linux
В этой статье описывается, как настроить хранилище NFS для экземпляра отказоустойчивого кластера в Linux.
NFS (Network File System, сетевая файловая система) — это распространенный способ предоставления общего доступа к дискам в Linux, но не в Windows. Так же как и iSCSI, NFS можно настроить на сервере, устройстве или в единице хранения, если они отвечают требованиям к хранилищу для SQL Server.
Важные сведения о сервере NFS
Источник размещения NFS (сервер Linux или другое устройство) должен использовать версию 4.2 или более позднюю либо быть совместимым с ней. Более ранние версии не работают с SQL Server на Linux.
При настройке общего доступа к папкам на сервере NFS необходимо использовать следующие рекомендованные параметры:
rw
для обеспечения возможности считывания из папки и записи в нее;sync
для обеспечения гарантированной записи в папку;- Не используйте
no_root_squash
его в качестве параметра; это считается угрозой безопасности. - Убедитесь, что папка имеет полные права (
777
) применены
Примените стандарты безопасного доступа. При настройке папки NFS доступ к ней должны иметь только серверы, относящиеся к экземпляру отказоустойчивого кластера. В следующем примере показано измененное /etc/exports
решение NFS под управлением Linux, в котором папка ограничена 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)
Instructions
Выберите один из серверов, которые будут включены в конфигурацию экземпляра отказоустойчивого кластера. Это не имеет значения, какой из них.
Проверьте, доступны ли серверу подключенные ресурсы на сервере NFS.
sudo showmount -e <IPAddressOfNFSServer>
<IPAddressOfNFSServer>
— это IP-адрес сервера NFS, который вы собираетесь использовать.
Для системных баз данных или других объектов, хранящихся в расположении данных по умолчанию, выполните указанные ниже действия. В противном случае перейдите к шагу 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>
— ЭТО IP-адрес сервера NFS, который вы собираетесь использовать.<FolderOnNFSServer>
— это имя общей папки NFS. Приведенный ниже пример синтаксиса соответствует сведениям об NFS из шага 2.
mount -t nfs4 10.201.202.63:/var/nfs/fci1 /var/opt/mssql/data -o nfsvers=4.2,timeo=14,intr
Проверьте, было ли подключение выполнено успешно, с помощью команды mount без параметров.
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
, чтобы выйти из учетной записи привилегированного пользователя.Запустите SQL Server. Если все данные были скопированы и параметры безопасности применены правильно, сервер SQL Server должен отобразиться как запущенный.
sudo systemctl start mssql-server sudo systemctl status mssql-server
Создайте базу данных, чтобы проверить правильность настройки безопасности. В приведенном ниже примере это делается с помощью Transact-SQL, но можно использовать и SSMS.
Остановите SQL Server и проверьте его завершение.
sudo systemctl stop mssql-server sudo systemctl status mssql-server
Если вы не создаете другие подключения NFS, отключите общую папку. Если вы находитесь, не отключайтесь.
sudo umount <IPAddressOfNFSServer>:<FolderOnNFSServer> <FolderToMountIn>
<IPAddressOfNFSServer>
— ЭТО IP-адрес сервера NFS, который вы собираетесь использовать.<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>
— ЭТО IP-адрес сервера NFS, который вы собираетесь использовать.<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
Проверьте, было ли подключение выполнено успешно, с помощью команды mount без параметров.
Введите exit, чтобы выйти из режима суперпользователя.
Создайте в этой папке базу данных для тестирования. В приведенном ниже примере создается база данных с помощью sqlcmd, переключается контекст, проверяется наличие файлов на уровне ОС, а затем временная папка удаляется. Можно также использовать SSMS.
Отключение общей папки
sudo umount <IPAddressOfNFSServer>:<FolderOnNFSServer> <FolderToMountIn>
<IPAddressOfNFSServer>
— ЭТО IP-адрес сервера NFS, который вы собираетесь использовать.<FolderOnNFSServer>
— это имя общей папки NFS.<FolderMountedIn>
— это папка, созданная в предыдущем шаге.
Повторите эти действия на других узлах.