읽기 요청이 많은 디렉토리(예: 많은 파일 열림)는 여러 노드에 선택적으로 복제하여 부하를 분산합니다.
크기가 크고 쓰기 요청이 많은 디렉토리(예: 많은 파일 생성)는 디렉토리의 locality(위치적 근접성)를 희생하면서, 파일 이름을 기준으로 해싱하여 클러스터 전체에 내용을 분산해 부하를 균형 있게 분배합니다.
모든 MDS 응답은 클라이언트에게 해당 inode의 권한을 가진 노드(Primary)와 복제본(Secondary) 및 조상 노드(ancestors)에 대한 정보를 제공합니다.
클라이언트가 특정 경로에서 작업을 수행할 때, 요청 경로에 가까운 조상 노드들의 실시간 상태와 위치를 학습할 수 있음.
이후의 메타데이터 작업은 경로의 가장 깊이 알려진 접두사를 기준으로(동적 트리 구조와 일관성 유지), 업데이트 작업은 Primary 노드로, 읽기 작업은 무작위 복제본으로 전달됩니다.
클라이언트가 /dir3/dir4/dir5/file.txt를 요청하는 경우:
/dir5에 대한 정보를 알고 있다면 바로 해당 MDS로 요청 가능./dir3까지만 알고 있다면, /dir3의 MDS에 요청을 보내 경로를 탐색해야 함.쓰기 요청
/dir5에 파일을 추가하려면, MDS3에 요청.읽기 요청
/dir5/file.txt를 읽는 요청은 MDS3 또는 해당 메타데이터를 복제한 다른 MDS로 분산.일반적으로 클라이언트는 잘 알려지지 않은(복제되지 않은) 메타데이터의 위치를 학습하고, 적절한 MDS에 직접 접근할 수 있습니다.
그러나 인기 있는 메타데이터를 접근하는 경우, 클라이언트는 해당 메타데이터가 여러 MDS에 분산되어 있거나 다른 MDS에 위치한다고 안내받음