Настройка экземпляра отказоустойчивого кластера (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
)
Убедитесь, что ваши стандарты безопасности соблюдаются при доступе. При настройке папки убедитесь, что только серверы, участвующие в отказоустойчивом кластерном экземпляре (FCI), имеют доступ к папке 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)
Инструкции
Выберите один из серверов, которые будут включены в конфигурацию отказоустойчивого кластера (FCI). Это не имеет значения, какой из них.
Проверьте, доступны ли серверу подключенные ресурсы на сервере 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, чтобы переключиться на пользователя root.
Подключите общую папку 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>
— это папка, созданная в предыдущем шаге.
-
Повторите эти действия на других узлах.