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

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

때로 응용 프로그램에서는 하드 연결된 경로 이름을 덮어쓰기 위한 다른 기법이 없는 하드 연결된 해당 데이터 파일의 경로 이름을 사용합니다. 응용 프로그램 코드의 수정을 방지하기 위해 때로 심볼릭 링크를 사용할 수 있습니다.

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

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

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

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