CEPH Sorunları Çözme
İçindekiler
Pool üzerinde herhangi bir uygulamanın aktifleştirilmemesi
Özellikle yeni bir pool oluşturulduğunda bu pool üzerinde rbd, rgw ve benzeri hiçbir uygulama etkin hale getirilmediyse bu sorun ortaya çıkıyor. Hata mesajı aşağıda verilmiştir.
ceph -w cluster: id: b49d69c7-e017-4f9f-b69b-57d3efe7987b health: HEALTH_WARN application not enabled on 1 pool(s)
ceph health detail komutu ile hatanın detayına bakılabilir.
HEALTH_WARN application not enabled on 1 pool(s) POOL_APP_NOT_ENABLED application not enabled on 1 pool(s) application not enabled on pool 'rbdtest' use 'ceph osd pool application enable <pool-name> <app-name>', where <app-name> is 'cephfs', 'rbd', 'rgw', or freeform for custom applications.
aşağıdaki komut ile de sorun çözülür.
ceph osd pool application enable rbdtest rbd
Crash Tunable Hatası
Pool üzerinde bir image oluşturmak ve bu imaj ile rbd map ile linux cihazı olarak bağlamak için tunables legacy olarak ayarlanması gerekebiliyor. Bu durumda ceph kümesinin durumuna bakıldığında aşağıdaki hata gözlemlenir.
ceph -s cluster: id: b49d69c7-e017-4f9f-b69b-57d3efe7987b health: HEALTH_WARN crush map has straw_calc_version=0
Sorunu çözmek için tekrar tunables set edilir.
ceph osd crush tunables optimal
MON Servisi ayakta ancak quourum olarak eklenemiyorsa
ceph -s komutu ile monitörlerin durumu izlenebilir, bu monitörlerin tamamı ayakta ve quorum statüsünde olması gerekir. Yeni bir monitör ceph kümesine eklendiğinde de sayı bir artırılarak gösterilmesi gerekmektedir. Ancak bazen aşağıdaki komut çalıştırıldığında hata alınabilir.
komut:
ceph-deploy mon create-initial
hata mesajı:
ceph_deploy.mon][WARNIN] mon.zula210 monitor is not yet in quorum, tries left: 5 [ceph_deploy.mon][WARNIN] waiting 5 seconds before retrying
ilgili sunucunun monitör servisinin log dosyasında:
2018-06-20 08:10:39.307 7fb71d1d4700 0 mon.zula210@0(probing) e0 ms_verify_authorizer bad authorizer from mon 192.168.56.212:6789/0 2018-06-20 08:10:39.307 7fb71d1d4700 0 -- 192.168.56.210:6789/0 >> 192.168.56.212:6789/0 conn(0x5580ac1f0a00 :6789 s=STATE_ACCEPTING_WAIT_CONNECT_MSG_AUTH pgs=0 cs=0 l=0).handle_connect_msg: got bad authorizer 2018-06-20 08:10:39.307 7fb71d1d4700 0 cephx: verify_authorizer could not decrypt ticket info: error: bad magic in decode_decrypt, 173658197698476996 != 18374858748799134293
bu durumda /var/lib/ceph/mon/ceph-zula210/keyring dosyasi kontrol edilir. Diger tum mon servisleri calisip bu calismiyorsa diger dosyalardan farkli key'e sahiptir. Digerleri ile ayni yapildiktan sonra artik komut calisabilir. Ayrica /etc/ceph/ceph.client.admin.keyring dosyasi da kontrol edilmelidir.
OSD Disk çıkartıp tekrar eklemek için
Hali hazırda ekli olan durumu (down) olması veya başka bir nedenle çıkarılması gereken osd diskler için aşağıda ki işlemler yapılır. Özellikle ceph-deploy komutu ile osd disk eklendiğinde ve süreçte sorunla karşılaşıldığında her ne kadar geriye sarım yapılmaya çalışılsa da maalesef bu işlem düzgün yapılamamaktadır. Neticesinde tekrar komutu çalıştırdığınızda farklı ancak hep aynı hata alınabilmektedir. disk silindikten sonra bile ona ait lvm volume oluşturulması veya dmsetup ta kaydın tutulması tekrar eklemeye mani olacak durumlardır. Detaylı bilgiler için aşağıdaki linklere göz gezdirilebilir.
- https://forum.proxmox.com/threads/ceph-cluster-reinstallation-osds-down.42385/
- http://docs.ceph.com/docs/mimic/rados/operations/add-or-rm-osds/#removing-osds-manual
- https://www.thegeekdiary.com/lvm-error-cant-open-devsdx-exclusively-mounted-filesystem/
Normalde takip edilmesi gereken komutlar:
ceph osd out 12 systemctl stop ceph-osd@12 ceph osd purge 12 --yes-i-really-mean-it pvscan vgremove ceph-e7f8edfa-f6bc-4dee-a93d-e18dbbb8d0dd ceph osd tree
Toplu silmek için:
for i in `seq 12 23`; do ceph osd out $i; echo $i; done for i in `seq 12 23`; do systemctl stop ceph-osd@$i; echo $i; done for i in `seq 12 23`; do ceph osd purge $i --yes-i-really-mean-it; echo $i; done for i in `pvscan |grep ceph|awk {'print $4'}`; do vgremove $i; echo $i; done for i in `pvscan|grep dev|awk {'print $2'}`; do dd if=/dev/zero of=$i bs=1024 count=1; done
Tüm bu komutlara rağmen hala hata mesajı alınıyorsa bu durumda Mimic versiyonu öncesinde silmek için çalıştırılan komutlar takip edilebilir. Örnek osd.27'yi çıkarmak için:
ceph osd out 27 service ceph stop osd.27 ceph osd crush remove osd.27 ceph auth del osd.27 ceph osd rm 27 ceph-disk zap /dev/sde dd if=/dev/zero of=/dev/sde bs=1024 count=1 umount /var/lib/ceph/osd/ceph-27 rm -rf /var/lib/ceph/osd/ceph-27/
Son olarak hala çıkartılamamışsa aşağıdaki komutlarla eski kayıt kalınmış mı bakılır.
dmsetup info -C dmsetup remove ceph--12d0f05f--c185--42c2--9db7--ed28a6a0c926-osd--block--4c3fd1bf--7aec--4b44--8fbf--0da4b23e18b7
toplu silmek için:
for i in `dmsetup info -C|grep ceph|awk {'print $1'}`; do dmsetup remove $i; done
Böylece artık aşağıdaki komutla yeni bir osd disk eklenebilir.
ceph-deploy --overwrite-conf osd create zula211 --data /dev/sde