장애 조치(failover) 클러스터 인스턴스 구성 - NFS - SQL Server on Linux

적용 대상:SQL Server - Linux

이 문서에서는 Linux에서 FCI(장애 조치(failover) 클러스터 인스턴스)에 대해 NFS 스토리지를 구성하는 방법을 설명합니다.

NFS 또는 네트워크 파일 시스템은 Windows가 아닌 Linux 환경에서 디스크를 공유하는 일반적인 방법입니다. iSCSI와 비슷하게 NFS는 SQL Server에 대한 스토리지 요구 사항을 충족하는 경우 서버 또는 일종의 어플라이언스나 스토리지 단위에서 구성할 수 있습니다.

중요한 NFS 서버 정보

NFS를 호스팅하는 원본(Linux 서버 또는 다른 서버)은 버전 4.2 이상을 사용/준수해야 합니다. 이전 버전은 SQL Server on Linux에서 작동하지 않습니다.

NFS 서버에서 공유할 폴더를 구성할 때 다음 지침 일반 옵션을 따르는지 확인합니다.

  • rw 폴더를 읽고 에 쓸 수 있는지 확인합니다.
  • sync - 폴더에 대한 쓰기가 보장되는지 확인합니다.
  • 옵션으로 사용하지 no_root_squash 마세요. 보안 위험으로 간주됩니다.
  • 폴더에 전체 권한()이777 적용되었는지 확인합니다.

액세스에 보안 표준이 적용되는지 확인합니다. 폴더를 구성할 때 FCI에 참여하는 서버만 NFS 폴더를 표시해야 합니다. 다음 예제에서는 Linux 기반 NFS 솔루션에서 수정된 /etc/exports 폴더가 제한 FCIN1FCIN2되는 위치에 표시됩니다.

# /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)

지침

  1. FCI 구성에 참여할 서버 중 하나를 선택합니다. 어느 것이든 상관없습니다.

  2. 서버가 NFS 서버에서 탑재를 볼 수 있는지 확인합니다.

    sudo showmount -e <IPAddressOfNFSServer>
    
    • <IPAddressOfNFSServer> 은 사용하려는 NFS 서버의 IP 주소입니다.
  3. 시스템 데이터베이스 또는 기본 데이터 위치에 저장된 항목의 경우 다음 단계를 수행합니다. 그렇지 않으면 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 200.201.202.63:/var/nfs/fci1 /var/opt/mssql/data -o nfsvers=4.2,timeo=14,intr
      
    • 스위치 없이 mount를 실행하여 탑재에 성공했는지 확인합니다.

      mount
      

      Screenshot of the mount command and the response to the command showing no switches.

    • 사용자로 전환합니다 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를 통해 수행할 수 있습니다.

      Screenshot showing how to create the test database.

    • SQL Server를 중지하고 종료되었는지 확인합니다.

      sudo systemctl stop mssql-server
      sudo systemctl status mssql-server
      
    • 다른 NFS 탑재를 만들지 않는 경우 공유를 분리합니다. 있는 경우 분리하지 마세요.

      sudo umount <IPAddressOfNFSServer>:<FolderOnNFSServer> <FolderToMountIn>
      
      • <IPAddressOfNFSServer> 은 사용하려는 NFS 서버의 IP 주소입니다.
      • <FolderOnNFSServer> 은 NFS 공유의 이름입니다.
      • <FolderMountedIn> 는 이전 단계에서 만든 폴더입니다.
  4. 사용자 데이터베이스 또는 백업과 같은 시스템 데이터베이스 이외의 항목은 다음 단계를 수행합니다. 기본 위치만 사용하는 경우 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 200.201.202.63:/var/nfs/fci2 /var/opt/mssql/userdata -o nfsvers=4.2,timeo=14,intr
      
    • 스위치 없이 mount를 실행하여 탑재에 성공했는지 확인합니다.

    • exit를 입력하여 슈퍼 사용자를 종료합니다.

    • 테스트하려면 해당 폴더에 데이터베이스를 만듭니다. 다음 예제에서는 sqlcmd를 사용하여 데이터베이스를 만들고, 컨텍스트를 전환하고, 파일이 OS 수준에 있는지 확인한 다음, 임시 위치를 삭제합니다. SSMS를 사용할 수 있습니다.

      Screenshot of the sqlcmd command and the response to the command.

    • 공유를 분리합니다.

      sudo umount <IPAddressOfNFSServer>:<FolderOnNFSServer> <FolderToMountIn>
      
      • <IPAddressOfNFSServer> 은 사용하려는 NFS 서버의 IP 주소입니다.
      • <FolderOnNFSServer> 은 NFS 공유의 이름입니다.
      • <FolderMountedIn> 는 이전 단계에서 만든 폴더입니다.
  5. 다른 노드의 단계를 반복합니다.