YUMSERV
Published 2021. 1. 31. 18:51
CEPH OSD OS재설치 BlockStorage(Ceph)
반응형

* 상황은 아래와 같습니다.

ceph osd os 디스크 쪽 i/o에러로 인해 디스크를 교체할 상황이 있었으며,

ceph data는 추가디스크 쪽에 남아 있기 때문에 데이터에는 문제가 없었으나 ceph를 새로 설치해야 되는 상황이었습니다.

레이드 쪽 데이터가 문제가 있었을 경우, osd를 제거 후 다시 추가해야 되겠지만, 데이터에는 문제가 없는 상황이라 기존에 있는 keyring을 갖고와서 마운트 해주는 방식으로 해주었습니다.

아래는 해당 절차입니다.

* ceph 는 nautilus 버전이며, os는 centos7 버전입니다.

* 교체된 OSD는 2번 입니다.



1. 기본 절차

os 디스크 교체하기 전 CEPH쪽에 PG를 분산시키지 않게 설정해줍니다.

# ceph osd set nobackfill

# ceph osd set noout

# ceph osd set norecover

# ceph osd set norebalance


교체 이후에는 초기 셋팅을 진행하며,

mgmt에서 ceph-deploy로 osd를 설치해줍니다.

# ceph-deploy install osd2



2. 추가디스크 마운트 진행

아래 사항은 osd2번에서 진행해줍니다.

[root@osd2 ~]# mount -t tmpfs tmpfs /var/lib/ceph/osd/ceph-2

[root@osd2 ~]# df -Th

Filesystem     Type      Size  Used Avail Use% Mounted on

devtmpfs       devtmpfs  895M     0  895M   0% /dev

tmpfs          tmpfs     919M     0  919M   0% /dev/shm

tmpfs          tmpfs     919M  8.5M  911M   1% /run

tmpfs          tmpfs     919M     0  919M   0% /sys/fs/cgroup

/dev/vda1      xfs        25G  2.4G   23G  10% /

tmpfs          tmpfs     184M     0  184M   0% /run/user/0

tmpfs          tmpfs     919M     0  919M   0% /var/lib/ceph/osd/ceph-2


기존에 있는 osd-2번에 대한 keyring을 갖고와야 합니다.

mgmt에서 키링값을 확인 후 파일을 생성해줍니다.

[root@mgmt ~]# ceph auth list

installed auth entries:


mds.mgmt

key: AQAnRhVg6g06BRAAuOkMjwIfwAFPzG2l0W/HGA==

caps: [mds] allow

caps: [mon] allow profile mds

caps: [osd] allow rwx

osd.0

key: AQBxRhVgR+YWJBAAo+CkvFiESr+tSckIFt8O3A==

caps: [mgr] allow profile osd

caps: [mon] allow profile osd

caps: [osd] allow *

osd.1

key: AQCkRxVgaRMhOxAAv+eUuhZdfr5CiGm98/Bj4w==

caps: [mgr] allow profile osd

caps: [mon] allow profile osd

caps: [osd] allow *

osd.2

key: AQC6RxVgoNroFxAAJmpj+D3yo1l2xZnUiXGsNg==

caps: [mgr] allow profile osd

caps: [mon] allow profile osd

caps: [osd] allow *

client.admin

key: AQDhRRVgXmmPAxAAShPLwboTts/LAgXZb2baPQ==

caps: [mds] allow *

caps: [mgr] allow *

caps: [mon] allow *

caps: [osd] allow *

client.bootstrap-mds

key: AQDhRRVg2KaPAxAAb29UnddrjcA2qN721WIv7Q==

caps: [mon] allow profile bootstrap-mds

client.bootstrap-mgr

key: AQDhRRVgLdaPAxAARgLoCdGVP/BFJlUl1mVriA==

caps: [mon] allow profile bootstrap-mgr

client.bootstrap-osd

key: AQDhRRVg5wOQAxAAW+tu8TXJ+u41uV2CRKEiHA==

caps: [mon] allow profile bootstrap-osd

client.bootstrap-rbd

key: AQDhRRVgCTKQAxAA6be6xAxLteEBgry0ZZXPew==

caps: [mon] allow profile bootstrap-rbd

client.bootstrap-rbd-mirror

key: AQDhRRVgkGSQAxAAKKKP4KaaYC3uCHLcsPsPfw==

caps: [mon] allow profile bootstrap-rbd-mirror

client.bootstrap-rgw

key: AQDhRRVgTpSQAxAAXikaa+I6/Rrut9sadjZK7Q==

caps: [mon] allow profile bootstrap-rgw

mgr.mgmt

key: AQCCSBVgWUtDIhAA0tU6Qlz4gwjVM26sByoO0w==

caps: [mds] allow *

caps: [mon] allow profile mgr

caps: [osd] allow *



[root@osd2 ceph-2]# cat /var/lib/ceph/osd/ceph-2/keyring 

[osd.2]

key = AQC6RxVgoNroFxAAJmpj+D3yo1l2xZnUiXGsNg==


[root@osd2 ceph-2]# chown -R ceph:ceph /var/lib/ceph/osd/ceph-2
[root@osd2 ceph-2]# ceph-bluestore-tool --cluster=ceph prime-osd-dir --dev /dev/ceph-3a60174c-50de-456c-8eea-19fbd9467e1c/osd-block-84c07129-44f2-497b-9629-a409104304cd --path /var/lib/ceph/osd/ceph-2 --no-mon-config
[root@osd2 ceph-2]# ln -snf /dev/ceph-3a60174c-50de-456c-8eea-19fbd9467e1c/osd-block-84c07129-44f2-497b-9629-a409104304cd /var/lib/ceph/osd/ceph-2/block
[root@osd2 ceph-2]# chown -h ceph:ceph /var/lib/ceph/osd/ceph-2/block 
[root@osd2 ceph-2]# chown -R ceph:ceph /dev/dm-0 
[root@osd2 ceph-2]# chown -R ceph:ceph /var/lib/ceph/osd/ceph-2


[root@osd2 ceph-2]# systemctl restart ceph-osd@2

[root@osd2 ceph-2]# netstat -nltp

Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    

tcp        0      0 0.0.0.0:6800            0.0.0.0:*               LISTEN      7681/ceph-osd       

tcp        0      0 0.0.0.0:6801            0.0.0.0:*               LISTEN      7681/ceph-osd       

tcp        0      0 0.0.0.0:6802            0.0.0.0:*               LISTEN      7681/ceph-osd       

tcp        0      0 0.0.0.0:6803            0.0.0.0:*               LISTEN      7681/ceph-osd       

tcp        0      0 0.0.0.0:6804            0.0.0.0:*               LISTEN      7681/ceph-osd       

tcp        0      0 0.0.0.0:6805            0.0.0.0:*               LISTEN      7681/ceph-osd       

tcp        0      0 0.0.0.0:6806            0.0.0.0:*               LISTEN      7681/ceph-osd       

tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1066/sshd           

tcp        0      0 0.0.0.0:6807            0.0.0.0:*               LISTEN      7681/ceph-osd       

tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1071/master         

tcp6       0      0 :::22                   :::*                    LISTEN      1066/sshd           

tcp6       0      0 ::1:25                  :::*                    LISTEN      1071/master      


위와 같은 절차대로 mount 진행하고, 권한 설정하면 정상적으로 OSD 데몬이 올라오게 됩니다.


[root@mgmt ~]# ceph -s

  cluster:

    id:     188536a8-fc10-4dbd-9a16-694358d6eedb

    health: HEALTH_OK

 

  services:

    mon: 2 daemons, quorum mgmt,mon (age 12m)

    mgr: mgmt(active, since 12m)

    mds:  1 up:standby

    osd: 3 osds: 3 up (since 7s), 3 in (since 7s)

 

[root@mgmt ~]# ceph osd tree

ID CLASS WEIGHT  TYPE NAME     STATUS REWEIGHT PRI-AFF 

-1       0.02939 root default                          

-3       0.00980     host osd0                         

 0   hdd 0.00980         osd.0     up  1.00000 1.00000 

-5       0.00980     host osd1                         

 1   hdd 0.00980         osd.1     up  1.00000 1.00000 

-7       0.00980     host osd2                         

 2   hdd 0.00980         osd.2     up  1.00000 1.00000 




3. ERROR

ceph-bluestore 하는 과정에서 /dev/ceph 파일이 없을 경우, lvm이 정상적으로 보이지 않을 수 있습니다.

테스트로 mount를 진행하였으나, 아래과 같이 뜨고 있던 상황이었습니다.

[root@osd2 ceph-2]# mount /dev/vdb /mnt/temp-osd

mount: unknown filesystem type 'LVM2_member'


해결방법은 아래와 같습니다. 이 방법을 쓴다음 다시 시도할 경우 정상적으로 됩니다.

# yum install lvm2

# modprobe dm-mod

# vgscan

  Reading volume groups from cache.

  Found volume group "ceph-3a60174c-50de-456c-8eea-19fbd9467e1c" using metadata type lvm2


반응형
profile

YUMSERV

@lena04301

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!