6장. Ceph MDSs 문제 해결
스토리지 관리자는 Ceph MDS(메타데이터 서버)를 사용할 때 발생할 수 있는 가장 일반적인 문제를 해결할 수 있습니다. 발생할 수 있는 몇 가지 일반적인 오류:
- MDS 노드 장애에 새 MDS 배포가 필요합니다.
- MDS 노드 문제로 인해 MDS 노드를 재배포해야 합니다.
6.1. Ceph MDS 재배포
Ceph 메타데이터 서버(MDS) 데몬은 Ceph 파일 시스템을 배포하는 데 필요합니다. 클러스터의 MDS 노드가 실패하면 MDS 서버를 제거하고 새 또는 기존 서버를 추가하여 Ceph 메타데이터 서버를 재배포할 수 있습니다. 명령줄 인터페이스 또는 Ansible 플레이북을 사용하여 MDS 서버를 추가하거나 제거할 수 있습니다.
6.1.1. 사전 요구 사항
- 실행 중인 Red Hat Ceph Storage 클러스터.
6.1.2. Ansible을 사용하여 Ceph MDS 제거
Ansible을 사용하여 Ceph 메타데이터 서버(MDS)를 제거하려면 shrink-mds
플레이북을 사용합니다.
MDS가 제거되면 사용할 대체 MDS가 없는 경우 클라이언트에서 파일 시스템을 사용할 수 없게 됩니다. 이것이 바람직하지 않은 경우 오프라인으로 전환하려는 MDS를 제거하기 전에 추가 MDS를 추가하는 것이 좋습니다.
사전 요구 사항
- 하나 이상의 MDS 노드
- Ansible에서 배포한 Red Hat Ceph Storage 클러스터 실행.
-
Ansible 관리 노드에 대한
root
또는sudo
액세스.
절차
- Ansible 관리 노드에 로그인합니다.
/usr/share/ceph-ansible
디렉터리로 변경합니다.예제
cd /usr/share/ceph-ansible
[ansible@admin ~]$ cd /usr/share/ceph-ansible
Copy to Clipboard Copied! Ansible
shrink-mds.yml
플레이북을 실행하고 메시지가 표시되면yes
를 입력하여 클러스터 축소를 확인합니다.구문
ansible-playbook infrastructure-playbooks/shrink-mds.yml -e mds_to_kill=ID -i hosts
ansible-playbook infrastructure-playbooks/shrink-mds.yml -e mds_to_kill=ID -i hosts
Copy to Clipboard Copied! ID 를 삭제하려는 MDS 노드의 ID로 바꿉니다. 플레이북이 실행될 때마다 Ceph MDS가 하나만 제거할 수 있습니다.
예제
ansible-playbook infrastructure-playbooks/shrink-mds.yml -e mds_to_kill=node02 -i hosts
[ansible @admin ceph-ansible]$ ansible-playbook infrastructure-playbooks/shrink-mds.yml -e mds_to_kill=node02 -i hosts
Copy to Clipboard Copied! root
또는sudo
액세스로/usr/share/ceph-ansible/hosts
인벤토리 파일을 열고 편집한 후[mds]
섹션의 MDS 노드를 삭제합니다.구문
[mdss] MDS_NODE_NAME MDS_NODE_NAME
[mdss] MDS_NODE_NAME MDS_NODE_NAME
Copy to Clipboard Copied! 예제
[mdss] node01 node03
[mdss] node01 node03
Copy to Clipboard Copied! 이 예에서는
node02
가[mdss]
목록에서 제거되었습니다.
검증
MDS 데몬 상태를 확인합니다.
구문
ceph fs dump
ceph fs dump
Copy to Clipboard Copied! 예제
ceph fs dump
[ansible@admin ceph-ansible]$ ceph fs dump [mds.node01 {0:115304} state up:active seq 5 addr [v2:172.25.250.10:6800/695510951,v1:172.25.250.10:6801/695510951]] Standby daemons: [mds.node03 {-1:144437} state up:standby seq 2 addr [v2:172.25.250.11:6800/172950087,v1:172.25.250.11:6801/172950087]]
Copy to Clipboard Copied!
6.1.3. 명령줄 인터페이스를 사용하여 Ceph MDS 제거
명령줄 인터페이스를 사용하여 Ceph 메타데이터 서버(MDS)를 수동으로 제거할 수 있습니다.
현재 MDS가 제거되면 사용할 대체 MDS가 없는 경우 클라이언트에서 파일 시스템을 사용할 수 없게 됩니다. 이것이 바람직하지 않은 경우 기존 MDS를 제거하기 전에 MDS를 추가하는 것이 좋습니다.
사전 요구 사항
-
ceph-common
패키지가 설치되어 있습니다. - 실행 중인 Red Hat Ceph Storage 클러스터.
-
MDS 노드에 대한
root
또는sudo
액세스
절차
- MDS 데몬을 삭제할 Ceph MDS 노드에 로그인합니다.
Ceph MDS 서비스를 중지합니다.
구문
sudo systemctl stop ceph-mds@HOST_NAME
sudo systemctl stop ceph-mds@HOST_NAME
Copy to Clipboard Copied! HOST_NAME 을 데몬이 실행 중인 호스트의 짧은 이름으로 교체합니다.
예제
sudo systemctl stop ceph-mds@node02
[admin@node02 ~]$ sudo systemctl stop ceph-mds@node02
Copy to Clipboard Copied! MDS 서비스를 이 노드에 재배포하지 않는 경우 다음을 비활성화합니다.
구문
sudo systemctl disable ceph-mds@HOST_NAME
sudo systemctl disable ceph-mds@HOST_NAME
Copy to Clipboard Copied! 데몬을 비활성화하려면 HOST_NAME 을 호스트의 짧은 이름으로 교체합니다.
예제
sudo systemctl disable ceph-mds@node02
[admin@node02 ~]$ sudo systemctl disable ceph-mds@node02
Copy to Clipboard Copied! MDS 노드의
/var/lib/ceph/mds/ceph-MDS_ID
디렉터리를 삭제합니다.구문
sudo rm -fr /var/lib/ceph/mds/ceph-MDS_ID
sudo rm -fr /var/lib/ceph/mds/ceph-MDS_ID
Copy to Clipboard Copied! MDS_ID 를 MDS 데몬을 삭제하려는 MDS 노드의 ID로 바꿉니다.
예제
sudo rm -fr /var/lib/ceph/mds/ceph-node02
[admin@node02 ~]$ sudo rm -fr /var/lib/ceph/mds/ceph-node02
Copy to Clipboard Copied!
검증
MDS 데몬 상태를 확인합니다.
구문
ceph fs dump
ceph fs dump
Copy to Clipboard Copied! 예제
ceph fs dump
[ansible@admin ceph-ansible]$ ceph fs dump [mds.node01 {0:115304} state up:active seq 5 addr [v2:172.25.250.10:6800/695510951,v1:172.25.250.10:6801/695510951]] Standby daemons: [mds.node03 {-1:144437} state up:standby seq 2 addr [v2:172.25.250.11:6800/172950087,v1:172.25.250.11:6801/172950087]]
Copy to Clipboard Copied!
6.1.4. Ansible을 사용하여 Ceph MDS 추가
Ansible 플레이북을 사용하여 Ceph MDS(메타데이터 서버)를 추가합니다.
사전 요구 사항
- Ansible에서 배포한 Red Hat Ceph Storage 클러스터 실행.
-
Ansible 관리 노드에 대한
root
또는sudo
액세스. - MDS 노드로 프로비저닝할 수 있는 신규 또는 기존 서버.
절차
- Ansible 관리 노드에 로그인합니다.
/usr/share/ceph-ansible
디렉터리로 변경합니다.예제
cd /usr/share/ceph-ansible
[ansible@admin ~]$ cd /usr/share/ceph-ansible
Copy to Clipboard Copied! root
또는sudo
액세스로/usr/share/ceph-ansible/hosts
인벤토리 파일을 열고 편집하고[mds]
섹션에 MDS 노드를 추가합니다.구문
[mdss] MDS_NODE_NAME NEW_MDS_NODE_NAME
[mdss] MDS_NODE_NAME NEW_MDS_NODE_NAME
Copy to Clipboard Copied! NEW_MDS_NODE_NAME 을 MDS 서버를 설치할 노드의 호스트 이름으로 교체합니다.
또는
[osds]
및[mds]
섹션에 동일한 노드를 추가하여 한 노드에서 OSD 데몬을 사용하여 MDS 데몬을 배치할 수 있습니다.예제
[mdss] node01 node03
[mdss] node01 node03
Copy to Clipboard Copied! ansible
사용자로 Ansible 플레이북을 실행하여 MDS 노드를 프로비저닝합니다.베어 메탈 배포:
ansible-playbook site.yml --limit mdss -i hosts
[ansible@admin ceph-ansible]$ ansible-playbook site.yml --limit mdss -i hosts
Copy to Clipboard Copied! 컨테이너 배포:
ansible-playbook site-container.yml --limit mdss -i hosts
[ansible@admin ceph-ansible]$ ansible-playbook site-container.yml --limit mdss -i hosts
Copy to Clipboard Copied! Ansible 플레이북 실행을 완료하면 새로운 Ceph MDS 노드가 스토리지 클러스터에 나타납니다.
검증
MDS 데몬 상태를 확인합니다.
구문
ceph fs dump
ceph fs dump
Copy to Clipboard Copied! 예제
ceph fs dump
[ansible@admin ceph-ansible]$ ceph fs dump [mds.node01 {0:115304} state up:active seq 5 addr [v2:172.25.250.10:6800/695510951,v1:172.25.250.10:6801/695510951]] Standby daemons: [mds.node03 {-1:144437} state up:standby seq 2 addr [v2:172.25.250.11:6800/172950087,v1:172.25.250.11:6801/172950087]]
Copy to Clipboard Copied! 또는
ceph mds stat
명령을 사용하여 MDS가 활성 상태인지 확인할 수 있습니다.구문
ceph mds stat
ceph mds stat
Copy to Clipboard Copied! 예제
ceph mds stat
[ansible@admin ceph-ansible]$ ceph mds stat cephfs:1 {0=node01=up:active} 1 up:standby
Copy to Clipboard Copied!
6.1.5. 명령줄 인터페이스를 사용하여 Ceph MDS 추가
명령줄 인터페이스를 사용하여 수동으로 Ceph 메타데이터 서버(MDS)를 추가할 수 있습니다.
사전 요구 사항
-
ceph-common
패키지가 설치되어 있습니다. - 실행 중인 Red Hat Ceph Storage 클러스터.
-
MDS 노드에 대한
root
또는sudo
액세스 - MDS 노드로 프로비저닝할 수 있는 신규 또는 기존 서버.
절차
노드에 로그인하고 MDS 마운트 지점을 생성하여 새 MDS 노드를 추가합니다.
구문
sudo mkdir /var/lib/ceph/mds/ceph-MDS_ID
sudo mkdir /var/lib/ceph/mds/ceph-MDS_ID
Copy to Clipboard Copied! MDS_ID 를 MDS 데몬을 추가할 MDS 노드의 ID로 바꿉니다.
예제
sudo mkdir /var/lib/ceph/mds/ceph-node03
[admin@node03 ~]$ sudo mkdir /var/lib/ceph/mds/ceph-node03
Copy to Clipboard Copied! Cephx 인증을 사용하는 경우 새 MDS 노드인 경우 인증 키를 생성합니다.
구문
sudo ceph auth get-or-create mds.MDS_ID mon 'profile mds' mgr 'profile mds' mds 'allow *' osd 'allow *' > /var/lib/ceph/mds/ceph-MDS_ID/keyring
sudo ceph auth get-or-create mds.MDS_ID mon 'profile mds' mgr 'profile mds' mds 'allow *' osd 'allow *' > /var/lib/ceph/mds/ceph-MDS_ID/keyring
Copy to Clipboard Copied! MDS 데몬을 배포할 MDS 노드의 ID로 MDS_ID 를 교체합니다.
예제
sudo ceph auth get-or-create mds.node03 mon 'profile mds' mgr 'profile mds' mds 'allow *' osd 'allow *' > /var/lib/ceph/mds/ceph-node03/keyring
[admin@node03 ~]$ sudo ceph auth get-or-create mds.node03 mon 'profile mds' mgr 'profile mds' mds 'allow *' osd 'allow *' > /var/lib/ceph/mds/ceph-node03/keyring
Copy to Clipboard Copied! 참고cephx 인증은 기본적으로 활성화되어 있습니다. Cephx 인증에 대한 자세한 내용은 추가 리소스 섹션의 Cephx 인증 링크를 참조하십시오.
MDS 데몬을 시작합니다.
구문
sudo systemctl start ceph-mds@HOST_NAME
sudo systemctl start ceph-mds@HOST_NAME
Copy to Clipboard Copied! HOST_NAME 을 데몬을 시작할 호스트의 짧은 이름으로 교체합니다.
예제
sudo systemctl start ceph-mds@node03
[admin@node03 ~]$ sudo systemctl start ceph-mds@node03
Copy to Clipboard Copied! MDS 서비스를 활성화합니다.
구문
systemctl enable ceph-mds@HOST_NAME
systemctl enable ceph-mds@HOST_NAME
Copy to Clipboard Copied! 서비스를 활성화하려면 HOST_NAME 을 호스트의 짧은 이름으로 교체합니다.
예제
sudo systemctl enable ceph-mds@node03
[admin@node03 ~]$ sudo systemctl enable ceph-mds@node03
Copy to Clipboard Copied!
검증
MDS 데몬 상태를 확인합니다.
구문
ceph fs dump
ceph fs dump
Copy to Clipboard Copied! 예제
ceph fs dump
[admin@mon]$ ceph fs dump [mds.node01 {0:115304} state up:active seq 5 addr [v2:172.25.250.10:6800/695510951,v1:172.25.250.10:6801/695510951]] Standby daemons: [mds.node03 {-1:144437} state up:standby seq 2 addr [v2:172.25.250.11:6800/172950087,v1:172.25.250.11:6801/172950087]]
Copy to Clipboard Copied! 또는
ceph mds stat
명령을 사용하여 MDS가 활성 상태인지 확인할 수 있습니다.구문
ceph mds stat
ceph mds stat
Copy to Clipboard Copied! 예제
ceph mds stat
[ansible@admin ceph-ansible]$ ceph mds stat cephfs:1 {0=node01=up:active} 1 up:standby
Copy to Clipboard Copied!