9.3. Red Hat Ceph Storage MDS를 기존 클러스터 내의 새 노드로 마이그레이션
cephfs-native 또는 ceph-nfs 백엔드와 함께 배포된 Shared File Systems 서비스(manila)가 오버클라우드 배포의 일부인 경우 MDS 데몬을 마이그레이션할 수 있습니다. MDS 마이그레이션은 cephadm 에서 수행하며 호스트 기반 접근 방식에서 레이블 기반 접근 방식으로 데몬 배치를 이동합니다. 이렇게 하면 ceph orch host 명령을 사용하여 클러스터의 상태와 데몬이 배치되는 위치를 시각화할 수 있습니다. Red Hat Knowledgebase 문서 Red Hat Ceph Storage: 지원 구성에 설명된 대로 지정된 호스트 내에 데몬이 공동 배치되는 방법에 대한 일반 보기도 있습니다.
사전 요구 사항
- Red Hat OpenStack Platform 17.1 환경의 작업을 완료합니다. 자세한 내용은 Red Hat Ceph Storage 사전 요구 사항을 참조하십시오.
프로세스
Red Hat Ceph Storage 클러스터가 정상인지 확인하고 MDS 상태를 확인합니다.
$ sudo cephadm shell -- ceph fs ls name: cephfs, metadata pool: manila_metadata, data pools: [manila_data ] $ sudo cephadm shell -- ceph mds stat cephfs:1 {0=mds.controller-2.oebubl=up:active} 2 up:standby $ sudo cephadm shell -- ceph fs status cephfs cephfs - 0 clients ====== RANK STATE MDS ACTIVITY DNS INOS DIRS CAPS 0 active mds.controller-2.oebubl Reqs: 0 /s 696 196 173 0 POOL TYPE USED AVAIL manila_metadata metadata 152M 141G manila_data data 3072M 141G STANDBY MDS mds.controller-0.anwiwd mds.controller-1.cwzhogCeph 파일 시스템(CephFS) MDS 상태에 대한 자세한 정보를 검색합니다.
$ sudo cephadm shell -- ceph fs dump e8 enable_multiple, ever_enabled_multiple: 1,1 default compat: compat={},rocompat={},incompat={1=base v0.20,2=client writeable ranges,3=default file layouts on dirs,4=dir inode in separate object,5=mds uses versioned encoding,6=dirfrag is stored in omap,8=no anchor table,9=file layout v2,10=snaprealm v2} legacy client fscid: 1 Filesystem 'cephfs' (1) fs_name cephfs epoch 5 flags 12 joinable allow_snaps allow_multimds_snaps created 2024-01-18T19:04:01.633820+0000 modified 2024-01-18T19:04:05.393046+0000 tableserver 0 root 0 session_timeout 60 session_autoclose 300 max_file_size 1099511627776 required_client_features {} last_failure 0 last_failure_osd_epoch 0 compat compat={},rocompat={},incompat={1=base v0.20,2=client writeable ranges,3=default file layouts on dirs,4=dir inode in separate object,5=mds uses versioned encoding,6=dirfrag is stored in omap,7=mds uses inline data,8=no anchor table,9=file layout v2,10=snaprealm v2} max_mds 1 in 0 up {0=24553} failed damaged stopped data_pools [7] metadata_pool 9 inline_data disabled balancer standby_count_wanted 1 [mds.mds.controller-2.oebubl{0:24553} state up:active seq 2 addr [v2:172.17.3.114:6800/680266012,v1:172.17.3.114:6801/680266012] compat {c=[1],r=[1],i=[7ff]}] Standby daemons: [mds.mds.controller-0.anwiwd{-1:14715} state up:standby seq 1 addr [v2:172.17.3.20:6802/3969145800,v1:172.17.3.20:6803/3969145800] compat {c=[1],r=[1],i=[7ff]}] [mds.mds.controller-1.cwzhog{-1:24566} state up:standby seq 1 addr [v2:172.17.3.43:6800/2227381308,v1:172.17.3.43:6801/2227381308] compat {c=[1],r=[1],i=[7ff]}] dumped fsmap epoch 8OSD 블록 목록을 확인하고 클라이언트 목록을 정리합니다.
$ sudo cephadm shell -- ceph osd blocklist ls $ for item in $(sudo cephadm shell -- ceph osd blocklist ls | awk '{print $1}'); do > sudo cephadm shell -- ceph osd blocklist rm $item; > done참고파일 시스템 클라이언트가 응답하지 않거나 잘못 작동하는 경우 파일 시스템에 대한 액세스가 강제로 종료될 수 있습니다. 이 프로세스를 제거라고 합니다. CephFS 클라이언트를 제거하면 MDS 데몬 및 OSD 데몬과 추가로 통신할 수 없습니다.
일반적으로 차단 목록에 있는 클라이언트는 서버에 다시 연결할 수 없습니다. 클라이언트를 마운트 해제한 다음 다시 마운트해야 합니다. 그러나 다시 연결을 시도하는 클라이언트를 허용하는 것이 유용할 수 있습니다. CephFS는 RADOS OSD 블록 목록을 사용하여 클라이언트 제거를 제어하므로, 블록 목록에서 CephFS 클라이언트를 제거하여 다시 연결할 수 있습니다.
현재 Red Hat Ceph Storage 클러스터에 속하는 호스트를 가져옵니다.
[ceph: root@controller-0 /]# ceph orch host ls HOST ADDR LABELS STATUS cephstorage-0.redhat.local 192.168.24.25 osd cephstorage-1.redhat.local 192.168.24.50 osd cephstorage-2.redhat.local 192.168.24.47 osd controller-0.redhat.local 192.168.24.24 _admin mgr mon controller-1.redhat.local 192.168.24.42 mgr _admin mon controller-2.redhat.local 192.168.24.37 mgr _admin mon 6 hosts in clusterMDS 레이블을 대상 노드에 적용합니다.
for item in $(sudo cephadm shell -- ceph orch host ls --format json | jq -r '.[].hostname'); do sudo cephadm shell -- ceph orch host label add $item mds; done모든 호스트에 MDS 레이블이 있는지 확인합니다.
$ sudo cephadm shell -- ceph orch host ls HOST ADDR LABELS cephstorage-0.redhat.local 192.168.24.11 osd mds cephstorage-1.redhat.local 192.168.24.12 osd mds cephstorage-2.redhat.local 192.168.24.47 osd mds controller-0.redhat.local 192.168.24.35 _admin mon mgr mds controller-1.redhat.local 192.168.24.53 mon _admin mgr mds controller-2.redhat.local 192.168.24.10 mon _admin mgr mds현재 MDS 사양을 덤프합니다.
$ SPEC_DIR=${SPEC_DIR:-"$PWD/ceph_specs"} $ mkdir -p ${SPEC_DIR} $ sudo cephadm shell -- ceph orch ls --export mds > ${SPEC_DIR}/mds검색된 사양을 편집하고
placement.hosts섹션을placement.label:으로 바꿉니다.service_type: mds service_id: mds service_name: mds.mds placement: label: mdsceph 오케스트레이터를 사용하여 새 MDS 사양을 적용합니다.$ SPEC_DIR=${SPEC_DIR:-"$PWD/ceph_specs"} $ sudo cephadm shell -m ${SPEC_DIR}/mds -- ceph orch apply -i /mnt/mds Scheduling new mds deployment ...이로 인해 MDS 데몬 수가 증가합니다.
CephFS에 임시로 추가되는 새 대기 데몬을 확인합니다.
$ sudo cephadm shell -- ceph fs dump Active standby_count_wanted 1 [mds.mds.controller-0.awzplm{0:463158} state up:active seq 307 join_fscid=1 addr [v2:172.17.3.20:6802/51565420,v1:172.17.3.20:6803/51565420] compat {c=[1],r=[1],i=[7ff]}] Standby daemons: [mds.mds.cephstorage-1.jkvomp{-1:463800} state up:standby seq 1 join_fscid=1 addr [v2:172.17.3.135:6820/2075903648,v1:172.17.3.135:6821/2075903648] compat {c=[1],r=[1],i=[7ff]}] [mds.mds.controller-2.gfrqvc{-1:475945} state up:standby seq 1 addr [v2:172.17.3.114:6800/2452517189,v1:172.17.3.114:6801/2452517189] compat {c=[1],r=[1],i=[7ff]}] [mds.mds.cephstorage-0.fqcshx{-1:476503} state up:standby seq 1 join_fscid=1 addr [v2:172.17.3.92:6820/4120523799,v1:172.17.3.92:6821/4120523799] compat {c=[1],r=[1],i=[7ff]}] [mds.mds.cephstorage-2.gnfhfe{-1:499067} state up:standby seq 1 addr [v2:172.17.3.79:6820/2448613348,v1:172.17.3.79:6821/2448613348] compat {c=[1],r=[1],i=[7ff]}] [mds.mds.controller-1.tyiziq{-1:499136} state up:standby seq 1 addr [v2:172.17.3.43:6800/3615018301,v1:172.17.3.43:6801/3615018301] compat {c=[1],r=[1],i=[7ff]}]MDS를 대상 노드로 마이그레이션하려면 MDS 장애 조치를 관리하는 MDS 선호도를 설정합니다.
참고특정 파일 시스템에 대해 전용 MDS를 "활성"으로 선택할 수 있습니다. 이 기본 설정을 구성하기 위해
CephFS는mds_join_fs라는 MDS에 대한 구성 옵션을 제공하여 이 선호도를 적용합니다. MDS 데몬을 통해 오류가 발생하면 클러스터 모니터에서 파일 시스템 이름과 같은mds_join_fs가 실패한 대기 데몬을 선호합니다. 파일 시스템 이름과 동일한mds_join_fs를 사용하여 대기 상태가 없는 경우 교체로 정규화되지 않은 대기 시간을 선택합니다.$ sudo cephadm shell -- ceph config set mds.mds.cephstorage-0.fqcshx mds_join_fs cephfs-
mds.mds.cephstorage-0.fqcshx를 이전 단계에서 검색된cephstorage-0에 배포된 데몬으로 바꿉니다.
-
컨트롤러 노드에서 레이블을 제거하고 대상 노드로 MDS 페일오버를 강제 적용합니다.
$ for i in 0 1 2; do sudo cephadm shell -- ceph orch host label rm "controller-$i.redhat.local" mds; done Removed label mds from host controller-0.redhat.local Removed label mds from host controller-1.redhat.local Removed label mds from host controller-2.redhat.local대상 노드로의 전환은 백그라운드에서 수행됩니다. 새로운 활성 MDS는
mds_join_fs명령을 사용하여 설정한 MDS입니다.장애 조치 및 새 배포된 데몬의 결과를 확인합니다.
$ sudo cephadm shell -- ceph fs dump … … standby_count_wanted 1 [mds.mds.cephstorage-0.fqcshx{0:476503} state up:active seq 168 join_fscid=1 addr [v2:172.17.3.92:6820/4120523799,v1:172.17.3.92:6821/4120523799] compat {c=[1],r=[1],i=[7ff]}] Standby daemons: [mds.mds.cephstorage-2.gnfhfe{-1:499067} state up:standby seq 1 addr [v2:172.17.3.79:6820/2448613348,v1:172.17.3.79:6821/2448613348] compat {c=[1],r=[1],i=[7ff]}] [mds.mds.cephstorage-1.jkvomp{-1:499760} state up:standby seq 1 join_fscid=1 addr [v2:172.17.3.135:6820/452139733,v1:172.17.3.135:6821/452139733] compat {c=[1],r=[1],i=[7ff]}] $ sudo cephadm shell -- ceph orch ls NAME PORTS RUNNING REFRESHED AGE PLACEMENT crash 6/6 10m ago 10d * mds.mds 3/3 10m ago 32m label:mds $ sudo cephadm shell -- ceph orch ps | grep mds mds.mds.cephstorage-0.fqcshx cephstorage-0.redhat.local running (79m) 3m ago 79m 27.2M - 17.2.6-100.el9cp 1af7b794f353 2a2dc5ba6d57 mds.mds.cephstorage-1.jkvomp cephstorage-1.redhat.local running (79m) 3m ago 79m 21.5M - 17.2.6-100.el9cp 1af7b794f353 7198b87104c8 mds.mds.cephstorage-2.gnfhfe cephstorage-2.redhat.local running (79m) 3m ago 79m 24.2M - 17.2.6-100.el9cp 1af7b794f353 f3cb859e2a15