Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents

...

리소스를 승격하기 위한 명령은 다음과 같습니다.

fsradm primary [리소스명]


Info
  • 리소스의 역할을 primary 로 전환하는 것을 승격이라고 합니다.
  • 리소스의 역할을 secondary 로 전환하는 것을 강등이라고 합니다.



초기 동기화 시점의 로컬 파일은 양노드 정합성이 맞지 않은 Inconsistent 상태를 초기값으로 하기 때문에 기본적으로 승격이 거부됩니다. 초기 승격 시에는 강제(-f 옵션) 승격을 통해 사용자가 해당 리소스를 소스로 하겠다고 명시적으로 알려야 합니다.

...

Info
title고아파일

고아파일은 누락파일과 달리 타깃의 복제 경로에 연고없이 남겨진 파일로 정의합니다. 이것은 일반적인 복제 상황에선 발생하지 않지만 타깃의 파일이 보호되지 않는 상황에서 의도치 않은 파일 조작이 있을 경우에 발생합니다.

고아파일이 발생하면 FSR 의 고아파일 대응 정책에 따라 처리가 되고 기본적으로 타깃의 특정 경로에 백업하는 것으로 처리됩니다. 백업 필요없이 바로 삭제 처리하도록 옵션을 지정할 수도 있습니다.

전환

전환(switch-over)은 복제 클러스터 내의 하나의 시스템에서 다른 시스템으로 자원에 대한 액세스를 수동 교환하는 동작입니다. 소스 노드를 강등시킨 후 타깃노드를 소스노드 역할로 승격하여 서비스를 위한 데이터를 활성화하는 과정입니다. 수동절체 라고도 하며 이와 반대로 장애에 자동 대응하는 개념으로 장애조치(fail-over)가 있습니다.

소스노드의 리소스를 강등합니다.

Code Block
c:\>fsradm secondary r0
done

타깃노드의 리소스를 승격합니다.

Code Block
c:\>fsradm primary r0
done
Info

고려사항

전환/절체 시 타깃노드의 리소스 파일상태는 UpToDate 최신 상태일 때 복제 정합성을 보장합니다. 만약 복제 연결이 단절되어 타깃이 최신 데이터를 가지지 못한 경우 이거나 타깃노드의 리소스가 동기화 중인 Inconsistent 상태일 경우에는 소스와 정합하지 않은 상태이므로 전환/절체를 제한해야 합니다.

파일잠금

타깃에 복제된 파일들은 소스로부터 수신하는 미러링 데이터 이외의 다른 쓰기 I/O 로 부터 보호되어야 합니다. 그렇지 않으면 복제 사본을 유지하기 위한 데이터 일관성을 보장할 수 없습니다. 특히 HA를 운영하는 경우 절체의 과정 중 대기노드의 데이터 일관성 보장을 위해 파일 잠금 기능을 반드시 활성화 시켜서 운영해야 합니다.

파일잠금은 리소스의 nodes 섹션내의 auto_file_lock 옵션을 통해 리소스의 역할에 따라 자동으로 설정되게 하거나 fsradm lock 또는 unlock 명령을 통해 수동으로 활성화,비활성화 할 수 있습니다.

자동 잠금

auto_file_lock 옵션은 기본 활성화되어 있습니다. 리소스의 역할이 강등된다면 파일들은 기본적으로 잠겨진 상태가 됩니다. 잠겨진 파일들을 해제하려면 리소스의 역할을 승격하거나 unlock 명령을 통해 잠금을 해제해야 합니다.

강등 시 잠금은 자동이지만 해제는 자동이 아닙니다.

수동 잠금

...


파일잠금

타깃에 복제된 파일들은 소스로부터 수신하는 미러링 데이터 이외의 다른 쓰기 I/O 로 부터 보호되어야 합니다. 그렇지 않으면 복제 사본을 유지하기 위한 데이터 일관성을 보장할 수 없습니다. 특히 HA를 운영하는 경우 절체의 과정 중 대기노드의 데이터 일관성 보장을 위해 파일 잠금 기능을 반드시 활성화 시켜서 운영해야 합니다.

파일잠금은 리소스의 nodes 섹션내의 auto_file_lock 옵션을 통해 리소스의 역할에 따라 자동으로 설정되게 하거나 fsradm lock 또는 unlock 명령을 통해 수동으로 활성화,비활성화 할 수 있습니다.

자동 잠금

auto_file_lock 옵션은 기본 활성화되어 있습니다. 리소스의 역할이 강등된다면 파일들은 기본적으로 잠겨진 상태가 됩니다. 잠겨진 파일들을 해제하려면 리소스의 역할을 승격하거나 unlock 명령을 통해 잠금을 해제해야 합니다.

강등 시 잠금은 자동이지만 해제는 자동이 아닙니다.

수동 잠금

auto_file_lock 옵션을 비활성화 하고 파일잠금을 수동으로 운영할 수도 있습니다. 파일잠금을 수동으로 운영하려면 다음과 같이 잠금명령과 강등명령을 개별적으로 수행하고 명령 순서를 지켜야 합니다.

Code Block
c:\>fsradm lock r0
done
c:\>fsradm secondary r0
done

-l 옵션을 명시할 경우 위의 두 명령을 하나의 강등명령으로 처리할 수도 있습니다. 명령의 순서는 위와 동일하게 락을 먼저 걸고 강등합니다.

Code Block
c:\>fsradm secondary -l r0
done


이와 반대로 승격 과정에선 primary 명령 이후 잠금을 해제 합니다.

Code Block
c:\>fsradm primary r0
done
c:\>fsradm unlock r0
done

-u 옵션을 사용하면 하나의 승격명령에서 처리할 수 있습니다.

Code Block
c:\>fsradm primary -u r0
done


Info
  • 파일 잠금이 활성화 되면 해당 복제 파일 셋에 대한 쓰기 I/O가 차단 되므로 관련된 애플리케이션 및 서비스들을 모두 종료하여 해당 파일로 I/O 가 더이상 발생하지 않게 한 후 잠금이 수행되도록 해야 합니다. 이렇게 하지 않으면 I/O 가 발생하는 도중 쓰기가 차단되어 I/O 에러가 유발되거나 애플리케이션이 가지고 있는 캐쉬 영역에 대한 Flush를 할 수 있는 기회를 놓쳐서 중요한 데이터의 기록이 누락될 수 있습니다. 절체 시에는 반드시 애플리케이션이 완전히 종료 작업을 수행한 후 파일잠금이 수행되도록 보장해야 합니다.


Info
  • 만약 애플리케이션을 종료하지 못했거나 복제 대상 파일의 핸들이 열린 상태로 강등 되었다면 강등이 성공했다고 하더라도 이처럼 정리 안된 파일들을 대상으로 한 타깃의 쓰기가 실패 될 수 있습니다. 타깃의 파일이 이미 읽기 모드로 열려져 있다면 FSR 엔진이 쓰기 권한이 없으므로 제어할 수 없기 때문입니다. FSR 1.2 에서는 이러한 문제를 예방하기 위해 파일 잠금 시 이미 열려져 있는 파일 핸들을 모두 강제로 닫도록 합니다.
  • 기존에 FSR에서 제공하던 읽기전용 잠금 기능도 더 이상 제공하지 않기로 했습니다. 읽기 전용 잠금이 읽기를 허용함으로 인해 타깃의 엔진 쓰기 실패가 야기되는 잠재적 문제를 차단하기 위함입니다. 이제 파일잠금은 전체 잠금(열기,읽기,쓰기 모두 잠금)만 제공합니다.


전환

전환(switch-over)은 복제 클러스터 내의 하나의 시스템에서 다른 시스템으로 자원에 대한 액세스를 수동 교환하는 동작입니다. 소스 노드를 강등시킨 후 타깃노드를 소스노드 역할로 승격하여 서비스를 위한 데이터를 활성화하는 과정입니다. 수동절체 라고도 하며 이와 반대로 장애에 자동 대응하는 개념으로 장애조치(fail-over)가 있습니다.


소스노드의 리소스를 강등합니다.

Code Block
c:\>fsradm locksecondary r0
done

타깃노드의 리소스를 승격합니다.

Code Block
c:\>fsradm secondaryprimary r0
done

-l 옵션을 명시할 경우 위의 두 명령을 하나의 강등명령으로 처리할 수도 있습니다. 명령의 순서는 위와 동일하게 락을 먼저 걸고 강등합니다.

Code Block
c:\>fsradm secondary -l r0
done

이와 반대로 승격 과정에선 primary 명령 이후 잠금을 해제 합니다.

Code Block
c:\>fsradm primary r0
done
c:\>fsradm unlock r0
done

-u 옵션을 사용하면 하나의 승격명령에서 처리할 수 있습니다.

Code Block
c:\>fsradm primary -u r0
done
Info
  • 파일 잠금이 활성화 되면 해당 복제 파일 셋에 대한 쓰기 I/O가 차단 되므로 관련된 애플리케이션 및 서비스들을 모두 종료하여 해당 파일로 I/O 가 더이상 발생하지 않게 한 후 잠금이 수행되도록 해야 합니다. 이렇게 하지 않으면 I/O 가 발생하는 도중 쓰기가 차단되어 I/O 에러가 유발되거나 애플리케이션이 가지고 있는 캐쉬 영역에 대한 Flush를 할 수 있는 기회를 놓쳐서 중요한 데이터의 기록이 누락될 수 있습니다. 절체 시에는 반드시 애플리케이션이 완전히 종료 작업을 수행한 후 파일잠금이 수행되도록 보장해야 합니다.


  • 만약 애플리케이션을 종료하지 못했거나 복제 대상 파일의 핸들이 열린 상태로 강등 되었다면 강등이 성공했다고 하더라도 이처럼 정리 안된 파일들을 대상으로 한 타깃의 쓰기가 실패 될 수 있습니다. 타깃의 파일이 이미 읽기 모드로 열려져 있다면 FSR 엔진이 쓰기 권한이 없으므로 제어할 수 없기 때문입니다. FSR 1.2 에서는 이러한 문제를 예방하기 위해 파일 잠금 시 이미 열려져 있는 파일 핸들을 모두 강제로 닫도록 합니다.
  • 기존에 FSR에서 제공하던 읽기전용 잠금 기능도 더 이상 제공하지 않기로 했습니다. 읽기 전용 잠금이 읽기를 허용함으로 인해 타깃의 엔진 쓰기 실패가 야기되는 잠재적 문제를 차단하기 위함입니다. 이제 파일잠금은 전체 잠금(열기,읽기,쓰기 모두 잠금)만 제공합니다
    Info
    Info
    • 전환(switchover)은 관리자가 의도하거나 계획한 수동적 동작이지만, 절체(failover)는 예기치 않은 장애에 대응하기 위한 동작으로 자동 수행을 전제 합니다.
    • 전환/절체 시 타깃노드의 리소스 파일상태는 UpToDate 최신 상태일 때 복제 정합성을 보장합니다. 만약 복제 연결이 단절되어 타깃이 최신 데이터를 가지지 못한 경우 이거나 타깃노드의 리소스가 동기화 중인 Inconsistent 상태일 경우에는 소스와 정합하지 않은 상태이므로 전환/절체를 제한해야 합니다.


    단방향 복제

    전환과 절체없이 항상 주 노드에서 대기노드로의 단방향 복제/백업만을 필요로 할 수도 있습니다. 이를 위해 다음의 두 가지 속성이 도입 되었습니다(FSR 1.2.4 이상).

    • 각 노드들은 각자의 리소스 역할을 유지해야 합니다(primary 는 primary를, secondary는 secondary를 유지). 이를 위한 persist-role 속성을 리소스 options 섹션에 설정합니다.
    • 여기에 더해 복제/동기화 방향을 한 쪽 방향으로만 강제하는 target-only 속성을 대기 노드 측에 설정합니다.


    Code Block
    {
    	...
    	"options": {
    		"persist-role": true,
    		...
    	}
    
    	"nodes": [
    	{
    		"name": "active",
    		...
    	},
    	{
    		"name": "standby",
    		"target-only": true
    		...
    	}
    }


    복제 서비스 또는 시스템이 재시작되는 것에 관계없이 persist-role 이 설정된 리소스는 활성화될 때 명시적으로(fsradm 명령으로) 지정된 리소스 역할을 계속 유지합니다.

    target-only 가 지정된 노드는 명시적인 명령을 포함한 모든 복제/동기화 동작에서의 소스 역할을 가질 수 없습니다. 단, 복제 연결이 해제될 경우 승격은 허용하여 target-only 노드의 데이터를 확인하는 길은 열어둡니다(데이터를 확인한 후 복제를 정상화 하려면 SB 상태를 해결하는 절차를 따르면 됩니다).


    조회

    상태 조회

    FSR의 상태를 fsradm status 명령을 통해 조회할 수 있습니다.

    ...