Solaris OS용 Sun Cluster 데이터 서비스 개발 안내서

Validate 메소드

자원 유형 구현의 Validate 콜백 메소드의 목적은 제안된 자원 설정(자원의 제안된 등록 정보 설정에 지정된 대로)이 자원 유형에 허용되는지 확인하는 것입니다.

자원 유형 구현의 Validate 메소드는 다음 두 조건 중 하나에서 RGM에 의해 호출됩니다.

이러한 두 시나리오는 자원의 Validate 메소드에 전달되는 -c(작성) 또는 -u(업데이트) 명령줄 옵션이 있는지에 따라 구별할 수 있습니다.

Validate 메소드는 자원 유형 등록 정보 Init_nodes의 값으로 정의되는 노드 집합의 각 노드에서 호출됩니다. Init_nodesRG_PRIMARIES 로 설정된 경우 Validate는 자원을 포함하는 자원 그룹을 호스팅할 수 있는(즉, 이러한 그룹의 기본이 될 수 있는) 각 노드에서 호출됩니다. Init_nodesRT_INSTALLED_NODES로 설정된 경우에는 자원 유 형 소프트웨어가 설치된 각 노드(일반적으로 클러스터의 모든 노드)에서 Validate가 호출됩니다.

Init_nodes의 기본값은 RG_PRIMARIES입니다(rt_reg(4) 설명서 페이지 참조). Validate 메소드가 호출되는 시점에 RGM은 아직 자원을 만들지 않았거나(작성 콜백의 경우) 업데이트 중인 등록 정보의 업데이트된 값을 아직 적용하지 않았습니다(업데이트 콜백의 경우).


주 –

HAStoragePlus 자원 유형에서 관리하는 로컬 파일 시스템을 사용 중이면 scds_hasp_check() 함수를 사용하여 해당 자원 유형의 상태를 확인합니다. 자원에 대해 정의된 Resource_dependencies 또는 Resource_dependencies_weak 시스템 등록 정보를 사용하여 자원이 의존하는 모든 SUNW.HAStoragePlus 자원의 상태(온라인 또는 기타)에서 이 정보를 가져옵니다. scds_hasp_check () 함수에서 반환된 전체 상태 코드 목록은 scds_hasp_check(3HA) 설명서 페이지를 참조하십시오.


DSDL 함수 scds_initialize()는 다음과 같은 방법으로 이러한 상황을 처리합니다.

자원 등록 정보의 검증을 구현하는 함수를 svc_validate()라고 하고 이 함수가 scds_get_name() 계열의 함수를 사용하여 검증할 등록 정보를 찾는다고 가정합니다. 허용되는 자원 설정이 이 함수의 반환 코드 0으로 표시된다고 가정하면 자원 유형의 Validate 메소드는 다음 코드 단편과 같이 나타날 수 있습니다.

int
main(int argc, char *argv[])
{
   scds_handle_t handle;
   int rc;

   if (scds_initialize(&handle, argc, argv)!= SCHA_ERR_NOERR) {
   return (1);   /* Initialization Error */
   }
   rc = svc_validate(handle);
   scds_close(&handle);
   return (rc);
}

검증 함수는 또한 자원 검증이 실패한 이유를 기록해야 합니다. 이에 대한 세부 정보는 제외하고(8 장, 샘플 DSDL 자원 유형 구현에서 Validation 함수에 대한 실제적인 처리 방법 설명) svc_validate() 함수를 다음과 같이 구현할 수 있습니다.

int
svc_validate(scds_handle_t handle)
{
   scha_str_array_t *confdirs;
   struct stat    statbuf;
   confdirs = scds_get_confdir_list(handle);
   if (stat(confdirs->str_array[0], &statbuf) == -1) {
   return (1);   /* Invalid resource property setting */
   }
   return (0);   /* Acceptable setting */
}

따라서 개발자는 svc_validate() 함수의 구현만 신경 쓰면 됩니다.