장애 조치(failover) 클러스터 인스턴스 구성 - NFS - SQL Server on Linux
적용 대상: SQL Server - Linux
이 문서에서는 Linux에서 FCI(장애 조치(failover) 클러스터 인스턴스)용 NFS 스토리지를 구성하는 방법을 설명합니다.
NFS(네트워크 파일 시스템)는 Linux 환경에서는 디스크를 공유하는 일반적인 방법이지만 Windows 환경에서는 그렇지 않습니다. iSCSI와 비슷하게 NFS는 SQL Server에 대한 스토리지 요구 사항을 충족하는 경우 서버 또는 일종의 어플라이언스나 스토리지 단위에서 구성할 수 있습니다.
중요한 NFS 서버 정보
NFS를 호스팅하는 소스(Linux 서버 또는 다른 서버)은 버전 4.2 이상을 사용하거나 이를 준수해야 합니다. 이전 버전은 SQL Server on Linux에서 작동하지 않습니다.
NFS 서버에서 공유할 폴더를 구성할 때는 다음 지침 일반 옵션을 따르는지 확인합니다.
rw
, 폴더를 읽고 쓸 수 있도록 확인sync
- 폴더에 대한 쓰기가 보장되는지 확인합니다.no_root_squash
를 옵션으로 사용하지 마세요. 보안 위험으로 간주됩니다.- 폴더에 전체 권한(
777
)이 적용되었는지 확인합니다.
액세스에 보안 표준이 적용되는지 확인합니다. 폴더를 구성할 때 FCI에 참여하는 서버만 NFS 폴더를 볼 수 있도록 해야 합니다. 다음 예에서는 폴더가 제한 FCIN1
과 FCIN2
로 제한되는 Linux 기반 NFS 솔루션의 수정된 /etc/exports
를 보여줍니다.
# /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를 입력하여 다시 루트 사용자로 전환합니다.
SQL Server 데이터 폴더에 NFS 공유를 탑재합니다.
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를 실행하여 탑재에 성공했는지 확인합니다.
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
mssql
이 되지 않도록 하려면exit
를 입력합니다.루트가 되지 않도록 하려면
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>
는 사용하려는 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
스위치 없이 mount를 실행하여 탑재에 성공했는지 확인합니다.
exit를 입력하여 슈퍼 사용자를 종료합니다.
테스트하려면 해당 폴더에 데이터베이스를 만듭니다. 다음 예시에서는 sqlcmd를 사용하여 데이터베이스를 만들고, 컨텍스트를 전환하고, 파일이 OS 수준에 있는지 확인한 다음 임시 위치를 삭제합니다. SSMS를 사용할 수 있습니다.
공유를 분리합니다.
sudo umount <IPAddressOfNFSServer>:<FolderOnNFSServer> <FolderToMountIn>
<IPAddressOfNFSServer>
는 사용하려는 NFS 서버의 IP 주소입니다.<FolderOnNFSServer>
는 NFS 공유의 이름입니다.<FolderMountedIn>
은 이전 단계에서 만든 폴더입니다.
다른 노드에서 단계를 반복합니다.