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

멀티 호스트된 데이터 배치에 심볼릭 링크 사용

때로는 하드 연결된 경로 이름을 대체할 기법 없이 응용 프로그램 데이터 파일의 경로 이름이 하드 연결되는 경우가 있습니다. 응용 프로그램 코드의 수정을 방지하기 위해 때로 심볼릭 링크를 사용할 수 있습니다.

예를 들어, 응용 프로그램에서 하드 연결된 경로 이름/etc/mydatafile을 사용하여 데이터 파일의 이름을 지정하는 것으로 가정합시다. 개발자는 논리 호스트 파일 시스템 중 하나에 있는 파일을 가리키는 값을 가지는 심볼릭 링크로 파일 경로를 변경할 수 있습니다. 예를 들어, 경로를 /global/phys-schost-2/mydatafile에 대한 심볼릭 링크로 만들 수 있습니다.

응용 프로그램이나 관리 절차 중 하나에서 해당 내용뿐만 아니라 데이터 파일 이름을 수정할 경우 이 심볼릭 링크 사용에 문제가 생길 수 있습니다. 예를 들어, 응용 프로그램에서 먼저 새로운 임시 파일 /etc/mydatafile.new를 만들어 업데이트를 수행한다고 가정합니다. 그런 다음 rename() 시스템 호출이나 mv 명령을 사용하여 임시 파일이 실제 파일 이름을 갖도록 이름을 변경합니다. 데이터 서비스는 임시 파일을 만든 다음 이름을 실제 파일 이름으로 변경하여 데이터 파일 내용이 항상 올바로 구성되도록 보장합니다.

유감스럽게도 rename() 작업을 수행하면 심볼릭 링크가 완전히 삭제됩니다. 이제 /etc/mydatafile 이름은 정규 파일이며 클러스터의 클러스터 파일 시스템이 아니라 /etc 디렉토리와 동일한 파일 시스템에 있습니다. /etc 파일 시스템은 각 호스트에서 개인 파일 시스템이기 때문에 페일오버 또는 스위치오버 후에는 해당 데이터를 사용할 수 없습니다.

이 상황에서 발생할 수 있는 문제는 기존 응용 프로그램이 심볼릭 링크를 인식하지 못하여 심볼릭 링크를 처리하도록 작성되지 않았다는 것입니다. 심볼릭 링크를 사용하여 데이터 액세스를 논리 호스트의 파일 시스템으로 재지정하려면 응용 프로그램 구현에서 심볼릭 링크를 제거하지 않는 방식으로 작동해야 합니다. 따라서 심볼릭 링크는 클러스터의 파일 시스템에 데이터를 배치하는 문제에 대한 완벽한 해결책이 아닙니다.