GlusterFS는 경로없이 두뇌를 분할하는데 무슨 의미입니까?


11

방금 glusterfs 볼륨의 상태를 확인하고 있으며 경로가없는 split-brain 항목이있는 볼륨이 있습니다.

# gluster volume heal private_uploads info
Brick server01:/var/lib/glusterfs/brick01/uploads/
<gfid:4c0edafb-0c28-427c-a162-e530280b3396> - Is in split-brain
<gfid:42d62418-1be9-4f96-96c4-268230316869> - Is in split-brain
Number of entries: 2

Brick server02:/var/lib/glusterfs/brick01/uploads/
<gfid:42d62418-1be9-4f96-96c4-268230316869> - Is in split-brain
<gfid:4c0edafb-0c28-427c-a162-e530280b3396> - Is in split-brain
Number of entries: 2

무슨 뜻이에요? 어떻게 고치나요?

GlusterFS 3.5.9를 실행하고 있습니다.

# gluster --version
glusterfs 3.5.9 built on Mar 28 2016 07:10:17
Repository revision: git://git.gluster.com/glusterfs.git

클러스터에서 2 개의 서버 만 사용합니까?
고아

답변:


8

스플릿 브레인이란?

RedHat에서 제공하는 Split-Brain 관리 에 대한 공식 문서에서 언급했듯이 split-brain 은 네트워크 디자인의 서버로 인해 범위가 겹치는 두 개의 개별 데이터 세트의 유지 관리에서 발생하는 데이터 또는 가용성 불일치가 발생하는 상태입니다. 또는 서로 통신하지 않고 데이터를 동기화하는 서버를 기반으로하는 장애 조건. 또한 구성 복제에 적용되는 용어입니다.

말했다되는 것을주의하십시오 "통신하고 서로의 데이터를 동기화하지 서버를 기반으로 장애 상태" 때문에 모든 가능성에 - -하지만 당신의 노드가 연결이 끊어 질 수 있음을 의미하지 않는다. 피어가 아직 클러스터에 있고 연결되어있을 수 있습니다.

스플릿 브레인 유형 :

우리는 세 가지 유형의 스플릿 브레인을 가지고 있으며, 내가 볼 수있는 한 엔트리 스플릿 브레인입니다. 세 가지 유형의 스플릿 브레인을 설명하려면 :

  • 데이터 스플릿 브레인 : 스플릿 브레인 에서 파일의 내용은 복제본 쌍마다 다르며 자동 치유는 불가능합니다.

  • 메타 데이터 split-brain : , 파일의 메타 데이터 (예 : 사용자 정의 확장 속성)가 다르고 자동 치유가 불가능합니다.

  • Entry split-brain : 파일이 각 복제본 쌍마다 다른 gfid를 가질 때 발생합니다.


GFID 란 무엇입니까?

GlusterFS 내부 파일 식별자 (GFID) 는 전체 클러스터에서 각 파일에 고유 한 UUID입니다. 이것은 일반적인 파일 시스템의 inode 번호와 유사합니다. 파일의 GFID는 xattr이라는 이름으로 저장됩니다 trusted.gfid. GFID의 경로를 찾으려면 GlusterFS에서 제공하는 이 공식 기사 를 읽는 것이 좋습니다 .


항목 분할 뇌를 해결하는 방법?

스플릿 브레인 발생을 방지하는 여러 가지 방법이 있지만이를 해결하려면 해당 gfid 링크 파일을 제거해야합니다. gfid-link 파일은 브릭의 최상위 디렉토리에있는 .glusterfs 디렉토리에 있습니다. 그런데 gfid- 링크를 삭제하기 전에 해당 브릭에있는 파일에 대한 하드 링크가 없는지 확인해야합니다. 하드 링크가 있으면 삭제해야합니다. 그런 다음 다음 명령을 실행하여 자체 복구 프로세스를 사용할 수 있습니다.

그 동안 분할 브레인 상태 인 볼륨의 파일 목록을 보려면 다음을 사용할 수 있습니다.

# gluster volume heal VOLNAME info split-brain

또한 브릭이 오프라인 상태가되어 온라인 상태로 돌아올 때 복제 된 볼륨의 경우 모든 복제본을 다시 동기화하려면 자동 복구가 필요합니다.

볼륨 및 파일의 치유 상태를 확인하려면 다음을 사용할 수 있습니다.

# gluster volume heal VOLNAME info

버전 3.5를 사용하고 있으므로 자동 치유 기능이 없습니다. 따라서 앞에서 언급 한 단계를 수행 한 후자가 치유를 시작해야합니다. 그렇게하려면 :

  • 치유가 필요한 파일에만 해당 :

    # gluster volume heal VOLNAME

  • 모든 파일에서 :

    # gluster volume heal VOLNAME full

이것이 문제 해결을 통해 도움이되기를 바랍니다. 자세한 내용은 공식 문서를 읽으십시오. 건배.


2

나는 문서 가 꽤 명확 하다고 생각 합니다. 심지어 비슷한 예를 제공했습니다.

그리고 Gluesterfs의 다음과 같은 치료 명령

클러스터 볼륨 치유 ** VOLNAME ** split-brain latest-mtime ** FILE **

FILE은 볼륨의 루트 (또는 파일의 gfid-string 표현) 에서 볼 수있는 전체 파일 이름 일 수 있습니다.

따라서 걱정할 필요가 없습니다.

그리고 GFID를 경로변환하면 다음 과 같이 말합니다.

GlusterFS 내부 파일 식별자 (GFID)는 전체 클러스터에서 각 파일에 고유 한 UUID입니다.

스크립트 는 어떤 파일 이름이 어떤 gfid에 속하는지 알려줄 수 있지만 뇌 분할이 발생하면 파일 이름이 없을 수 있습니다.

3.5를 실행 중이고 반자동 치료 cmd가 없으므로 충돌을 직접 수정해야 할 수 있습니다. 이는 일반적으로 어떤 gfid 파일을 삭제해야하는지 결정하는 것을 의미합니다.


내 Gluster 버전에는 해당 명령이없는 것 같습니다. 그렇지 않으면 간단합니다. 또한 파일 이름이 없으며 uuid가 있습니다.
pupeno

2

어떻게 고치나요?

스플릿 브레인 해상도는 여기 에서 찾을 수 있습니다 . 경우 어떻게-에 대한 설명서, 큰 도움이되지 것 여기에 작업을해야한다. 이 경우 기사 도 도움이됩니다.

스플릿 브레인 방지 방법

네트워크 파티션에 대한 보호는 쿼럼 투표 알고리즘을 통해 수행됩니다. 호스트에 장애가 발생하거나 노드가 계속 실행되지만 더 이상 서로 통신 할 수없는 스플릿 브레인 시나리오가있는 경우 클러스터의 나머지 노드는 감시 드라이브에 SCSI 예약을 배치하기 위해 경쟁합니다. 스플릿 브레인의 경우, 증인은 데이터 사본을 보유하고있는 호스트 중 어느 쪽이 제어를 담당할지 결정하는 데 도움이됩니다.

몇 가지 예.

VMware VSAN을 사용하면 3 차 호스트 또는 클라우드에서 감시 드라이브를 실행하여 2 노드 클러스터를 실행할 수 있습니다. 출처

StarWind Virtual SAN은 Microsoft 장애 조치 (Failover) 클러스터 서비스를 사용하여 2 노드 설정으로 만 실행되며 여기에는 스플릿 브레인 문제를 방지하기위한 쿼럼 투표 메커니즘이 포함되어 있습니다. 출처

두 가지 모두에 대해 하트 비트 네트워크는 노드와 쿼럼 간의 통신을 제공 / 모니터링하는 데 사용됩니다. 스플릿 브레인을 피하려면 중복 하트 비트 채널을 사용해야합니다.


1

split-brain은 클러스터의 두 노드가 연결 해제 될 때 발생합니다. 각 노드는 다른 노드가 작동하지 않는다고 생각합니다.

뇌를 나누다

이 문제를 해결하려면 두 노드가 더 이상 서로 대화하지 않는 이유를 이해해야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.