* 상황은 아래와 같습니다.
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]# 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
'BlockStorage(Ceph)' 카테고리의 다른 글
python-rados 연동 (0) | 2021.04.16 |
---|---|
ceph 1 daemons have recently crashed (0) | 2021.02.20 |
[ERROR] ceph application not enabled on 1 pool(s) (0) | 2021.01.30 |
[ERROR] RuntimeError: Unable to create a new OSD id (0) | 2021.01.25 |
[ERROR] missing required protocol features (0) | 2021.01.15 |