CEPH Yönetimi

BulutWiki sitesinden
Şuraya atla: kullan, ara

İçindekiler

Ceph Yazılımının Güncellenmesi

Mevcut Sürüm Bilgisinin Öğrenilmesi

İşletim Sistemi Güncelleştirmelerinin Yapılması

Monitör Sunucusu Güncellenmesi

Depolama Sunucuları Güncellenmesi

İstemcilerin Güncellenmesi

Monitör Sunucusu

Monitör Sunucusu Restart Etme

root@cephm:~# restart ceph-mon id=cephm

Monitör İstatistikleri

root@cephm:~# ceph mon stat
e1: 1 mons at {cephm=172.16.3.14:6789/0}, election epoch 1, quorum 0 ceph

Quorum Statüsü

oot@cephm:~# ceph quorum_status
{ "election_epoch":1,"quorum":[0],"quorum_names":["cephm"],"quorum_leader_n

OSD İşlemleri

OSD Görüntüleme

Komut ile hangi OSD’lerin çalıştığını hangilerinde problem olduğunu görebilirsiniz. Aşağıdaki komutun çıktısından görüldüğü üzere ceph5 sunucusundaki osd’ler şu anda çalışmıyor durumdalar.

root@cephn:/home/ceph# ceph osd tree
# id    weight  type name       up/down reweight
-1      9       root default
-9      0               rack rack03
-8      0               rack rack02
-7      0               rack rack01
-4      1.8             host ceph3
8       0.45                    osd.8   up      1
9       0.45                    osd.9   up      1
10      0.45                    osd.10  up      1
11      0.45                    osd.11  up      1
-2      1.8             host ceph1
0       0.45                    osd.0   up      1
1       0.45                    osd.1   up      1
2       0.45                    osd.2   up      1
3       0.45                    osd.3   up      1
-3      1.8             host ceph2
4       0.45                    osd.4   up      1
5       0.45                    osd.5   up      1
6       0.45                    osd.6   up      1
7       0.45                    osd.7   up      1
-5      1.8             host ceph4
12      0.45                    osd.12  up      1
13      0.45                    osd.13  up      1
14      0.45                    osd.14  up      1
15      0.45                    osd.15  up      1
-6      1.8             host ceph5
20      0.45                    osd.20  down    1
21      0.45                    osd.21  down    1
22      0.45                    osd.22  down    1
23      0.45                    osd.23  down    1

OSD Dump

ceph osd dump komutu ile osd’ler hakkında ayrıntılı bilgiye sahip olabilirsiniz.

root@ceph3:/home/ceph# ceph osd dump  | head -12
epoch 2094
fsid c33eca63-f5b5-4689-9fc5-636782f66f5c
created 2015-04-01 13:37:43.305444
modified 2015-04-16 06:54:46.154680
flags noout
pool 0 'rbd' replicated size 3 min_size 2 crush_ruleset 0 object_hash rjenkins pg_num 666 pgp_num 666 last_change 1547 flags 
hashpspool stripe_width 0
pool 1 'tank' replicated size 3 min_size 2 crush_ruleset 0 object_hash rjenkins pg_num 666 pgp_num 666 last_change 1552 flags 
hashpspool stripe_width 0
max_osd 24

OSD Başlatma

Başlatma (osd.16 için)

start ceph-osd id=16

Durdurma

stop ceph-osd id=16

OSD Silme

Silmek istediğimiz OSD’mizin osd.16 olduğunu kabul edelim.İlk olarak osd’yi kapatıyoruz. Daha  osd’nin bulunduğu sunucuda dizini umount ediyoruz. Sonra sırası ile crush, auth ‘tan çıkarıp  en son olarak rm komutu ile siliyoruz. (Bu komutlar osd.16’nın olduğu sunucuda çalıştırılacak)

ceph osd out osd.16
stop ceph-osd id=16
umount /var/lib/ceph/osd/ceph-16
ceph osd crush remove osd.16
ceph auth del osd.17
ceph osd rm osd.16

OSD Config Bilgisini Görüntüleme

OSD’lerin herbirini farklı yapılandırmaya sahip olabililr. Tek bir osd’ye ait olan yapılandırma bilgisini görüntülemek için config show komutunu kullanıyoruz. (Örn osd.16)

ceph@ceph1: ceph daemon osd.16 config show
{ "name": "osd.16",
 "cluster": "ceph",
 "debug_none": "0\/5",
 "debug_lockdep": "0\/1",
 "debug_context": "0\/1",
 "debug_crush": "1\/1",
 "debug_mds": "1\/5",
 "debug_mds_balancer": "1\/5"

OSD Benchmark

OSD’ler üzerinde sonra basit olarak bir benchmark yapmak isterseniz:

ceph tell osd.N bench [Obje_Sayısı] [Bir seferde yazılacak Byte]

Komutunu kullanabilirsiniz. Herhangi bir parametre kullanmazsanız ceph 1Gbyte dosyayı 4MByte’lık obje büyüklüğü ile yazıp sonucu size iletiyor. Yine osd.16’ya test yapmak istersek:

root@cephm:/home/ceph# ceph  tell  osd.16 bench
{ "bytes_written": 1073741824,
 "blocksize": 4194304,
 "bytes_per_sec": "179173531.000000"}

Tüm OSD’lere test yapmak için osd.* yazabilirsiniz.

Tek Bir OSD’ye ait Değerleri Değiştirme

OSD’de yapılandırmasında tek bir değişkenin değerini değiştirkem için injectargs argümanını kullanıyoruz. Örneğin osd.16’da  yazma işlemlerinde bir sıkıntı var ve bunun nedenin öğrenmek için debug seviyesini arttırmak istediğinizi düşünelim. İlk olarak mevcut değere bakalım.

root@ceph1:/home/ceph# ceph daemon osd.16 config show | grep debug_osd
"debug_osd": "0\/0",

Değeri arttırmak için:

ceph tell osd.16 injectargs '--debug-osd 0/5'

POOL İşlemleri

Pool Yaratma

Deneme ismi altinda 4096 PG’den oluşan bir pool yaratalım.

root@ceph1:/home/ceph# ceph osd pool create deneme 4096
pool 'deneme' created

Poll’ları Listeleme

Yarattığımız deneme pool’u ile birlikte var olan diğer pool’ları listeleyelim

root@ceph1:/home/ceph# ceph osd lspools
0 rbd,1 tank,3 deneme,

pool bilgilerini biraz daha ayrıntı olarak öğrenmek istersek osd dump komutunu kullanıyoruz.

ceph@cephm:~$ ceph osd dump | grep 'pool'
pool 0 'rbd' replicated size 3 min_size 1 crush_ruleset 0 object_hash rjenkins pg_num 666 pgp_num 666 last_change 1009 flags 
hashpspool stripe_width 0
pool 1 'tank' replicated size 3 min_size 1 crush_ruleset 0 object_hash rjenkins pg_num 666 pgp_num 666 last_change 998 flags 
hashpspool stripe_width 0

Bu komut ile iki adet pool’umuz olduğunu replica ve min_size değerlerini, pg ve pgp_num değerlerinin öğrenmiş oluyoruz.

Pool Silme

deneme ismindeki pool’u silmek için:

root@cephm:/home/ceph# ceph osd pool delete deneme deneme --yes-i-really-really-mean-it
pool 'deneme' removed

Pool İçindeki Objelerin Listelenmesi

Deneme pool’u içindeki objelerin listesini almak için:

root@cephm: rados -p deneme ls |  more
benchmark_data_lufer106_30012_object403
benchmark_data_lufer106_30012_object331
benchmark_data_lufer106_30012_object367
benchmark_data_lufer106_30012_object206
benchmark_data_lufer106_30012_object372
benchmark_data_lufer106_30012_object495
benchmark_data_lufer106_30012_object440
benchmark_data_lufer106_30012_object365
benchmark_data_lufer106_30012_object2
benchmark_data_lufer106_30012_object320
benchmark_data_lufer106_30012_object286
benchmark_data_lufer106_30012_object487
benchmark_data_lufer106_30012_object469
benchmark_data_lufer106_30012_object301
benchmark_data_lufer106_30012_object349

Pool İçindeki Objelerin Silinmesi

Pool içindeki objeleri isimleri ile silmek için rm komutunu kullanıyoruz. benchmark_data_lufer106_30012_object403 objesinin silmek istediğimizde.

rados -p deneme rm benchmark_data_lufer106_30012_object403 

Peki birden fazla obje silmek istersek ? for döngüsünü kullanmak en kolay yöntem gibi gözüküyor. deneme pool’u altında bench ile başlayan objeleri silmek için:

for i in `rados -p deneme ls | awk '/^bench/ {print $1}'` ;do  echo $i ;  rados -p deneme rm $i ; done

Bu komutu çalıştırırsanız işlem sıralı olarak ilerleyecektir. Çok sayıda objeniz var ve paralel şekilde silmek isterseniz silinecek objelerin ismini bir dosyaya yazdırıp (obje_sil) parallel komutu ile aynı anda birden fazla silme işleminin yapılmasını sağlayabilirsiniz.

for i in `rados -p deneme ls | awk '/^bench/ {print $1}'` ;do  echo $i ; done > obje_sil
cat objesil |  parallel  rados -p deneme  rm {}


Pool Min_size Değerinin Değiştirilmesi

Pool min_size değeri ceph’in bir obje üzerinde okuma yazma işlemi yapması için o objeden kaç adet olması gerektiğini belirliyor. Örneğin replica adediniz 3 ise ve min_size değeriniz 2 ise, ceph her objeden üç adet adet tutuyor ve bu objelerden birine erişilememesi durumda dahi okuma yazma işlemini yapıyor. Eğer 3 replikadan 2 sini kaybeder ve hala okuma yazma işlemi yapmak isterseniz min_size değerini aşağıdaki komut ile 1’e indirebilirsiniz. (Özellikle recovery durumda kullanılabilir)

ceph osd pool set rbd  min_size 1

Cluster Sağlığı

Cluster Sağlığı Görüntüleme

Cluster sağlığını izlemek için temel komut:

root@ceph1:/home/ceph# ceph health
HEALTH_WARN 168 pgs stuck inactive; 168 pgs stuck unclean; 1 requests are blocked > 32 sec

Bu örnekte cluster pek sağlıklı olmadığı belli, biraz daha detaylı bir bilgi almak için:

root@ceph1:/home/ceph# ceph health detail | more
HEALTH_WARN 168 pgs stuck inactive; 168 pgs stuck unclean; 1 requests are blocked > 32 sec; 1 osds have slow requests
pg 1.f0 is stuck inactive since forever, current state creating, last acting []
pg 1.27f is stuck inactive since forever, current state creating, last acting []
pg 1.f1 is stuck inactive since forever, current state creating, last acting []
pg 1.1b5 is stuck inactive since forever, current state creating, last acting []
pg 1.ec is stuck inactive since forever, current state creating, last acting [

stuck olan pg’ler’n bir kısmını görmüş olduk. Herşey yolunda ise cluster durumunuz.

root@cephm:/home/ceph# ceph health detail
HEALTH_OK

olarak gözükecektir.

Cluster Üzerinde Yapılan I/O Görüntüleme

ceph -w komutu cluster üzerindeki yapılan işlemler sonucu oluşan I/O miktarı ile birlikte cluster sağlığı ile ilgili bilgileride görüntülemek için kullanılabilir:

root@cephm:/home/ceph# ceph -w
   cluster c33eca63-f5b5-4689-9fc5-636782f66f5c
    health HEALTH_OK
    monmap e1: 1 mons at {cephm=172.16.3.14:6789/0}, election epoch 1, quorum 0 cephm
    osdmap e9744: 20 osds: 20 up, 20 in
     pgmap v200822: 666 pgs, 1 pools, 29608 MB data, 7404 objects
           93976 MB used, 9208 GB / 9300 GB avail
                666 active+clean

Cluster Kapasite Kullanımı Görüntüleme

Ne kadar disk kapasitesi kullandığınızı görmek için:

root@cephm:/home/ceph# ceph df detail
GLOBAL:
   SIZE      AVAIL     RAW USED     %RAW USED     OBJECTS 
   9300G     8994G         305G          3.29        7404 
POOLS:
   NAME     ID     CATEGORY     USED       %USED     MAX AVAIL     OBJECTS     DIRTY     READ     WRITE 
   rbd      0      -            29608M      0.31         2938G        7404      7404       65     87925 

Depolama Birimi Üzerindeki Disk Yapılandırmasını Görüntüleme

root@ceph5:/etc/ceph# ceph-disk list
/dev/sda :
 /dev/sda1 other, ext4, mounted on /
 /dev/sda2 other, 0x5
 /dev/sda5 swap, swap
/dev/sdb :
 /dev/sdb1 ceph data, active, cluster ceph, osd.20, journal /dev/sde1
/dev/sdc :
 /dev/sdc1 ceph data, active, cluster ceph, osd.21, journal /dev/sde2
/dev/sdd :
 /dev/sdd1 ceph data, active, cluster ceph, osd.22, journal /dev/sde3
/dev/sde :
 /dev/sde1 ceph journal, for /dev/sdb1
 /dev/sde2 ceph journal, for /dev/sdc1
 /dev/sde3 ceph journal, for /dev/sdd1
 /dev/sde4 ceph journal, for /dev/sdf1
/dev/sdf :
 /dev/sdf1 ceph data, active, cluster ceph, osd.23, journal /dev/sde4
 /dev/sdg other, unknown
 /dev/sdh other, unknown
 /dev/sr0 other, unknown
 /dev/sr1 other, unknown

Depolama Birimi Üzerindeki Journal Yapılandırmasını Görüntüleme

Journal için kullandığımız diskin sde olması durumunda, ilk partition bilgilerini görüntülemek için:

root@ceph5:/home/ceph# sgdisk  --info 1  /dev/sde
Partition GUID code: 45B0969E-9B03-4F30-B4C6-B4B80CEFF106 (Unknown)
Partition unique GUID: FA983B70-C559-4D57-8B33-474538891F1D
First sector: 2048 (at 1024.0 KiB)
Last sector: 51202047 (at 24.4 GiB)
Partition size: 51200000 sectors (24.4 GiB)
Attribute flags: 0000000000000000
Partition name: 'ceph journal

Ceph Değişkenlerinin Görüntülenmesi/Değiştirilmesi

Cluster Bakım Modları

Cluster bakım modları listesi:

pause|noup|nodown|noout|noin|nobackfill|norecover|noscrub|nodeep-scrub|notieragent

ceph clusterınızı bu modlardan herhangi birine sokmak için:

ceph osd set [mod ismi]

yazmanız yeterli, moddan geri çıkarmak için:

ceph osd unset [mod ismi]

yazmalısınız.

NOIN

Açılıp normal olarak ceph cluster’ına dahil olacak (in) OSD’lerin açıldıkları halde dahil olmamalarını sağlar. Bu modda dikkat edilmesi gereken nokta  OSD’leri in olarak işaretlendikten sonra sisteme girmeleri için ayrıca restart edilmelerinin unutulmamamsıdır.

root@cephm:/home/ceph# ceph osd set noin
root@cephm:/home/ceph# ceph health
HEALTH_WARN noin flag(s) set
cephm:/home/ceph# ceph osd unset noin

NOOUT

OSD’lerin herhangi bir nedenle (erişilememeleri, kapanmaları) durumunda cluster dışına atılmalarını (out) engeller.

NOUP

OSD’lerin monitörler tarafından up olarak işaretlenmesini ekler. Sürekli up/down olan bir OSD’niz var ise durumunu incelemek için kullanabilirsiniz.

NODOWN

OSD’lerin monitörler tarafından down olarak işaretlenmesini ekler. Sürekli up/down olan bir OSD’niz var ise durumunu incelemek için kullanabilirsiniz

PAUSE

Cluster üzerine yapılan I/O işlemlerinin durdurur

NOSCRUB

Cluster üzerindeki OSD’lerde otomatik olarak  yapılacan olan scrub işleminin yapılmasının engeller.

Ceph Scrub Yapılandırması

Ceph objeler halinde tuttuğu verinin bütünlüğünün korunması amacı ile belirli zamanlarda scrub işlemini gerçekleştiriyor. Bu işlem sırasından objelerdeki bozulan verilerin onarılması amaçlanıyor. Tüm objelerde bu işlemin yapılmasına “deep scrub” deniyor. Atanmış değeri osd deep scrub interval değişkeni ile tanımlanıyor ve süresi haftada bir.Tanımlanabilecek olan scrub değişkenleri:

osd max scrubs: Ceph OSD tarafından yapılacak olan maksiumu operasyon sayısı (1) osd scrub thread timeout: Scrub timeout (Saniye,60) osd scrub load threshold: load avarage değeri bu değerden büyük olursa scrub yapılmıyor (0.5) osd scrub min interval: Scrub işlemini yapmak için maksimum saniye (Günde bir kez, 60*60*24) osd scrub max interval: Yük durumu ne olursa olsun scrub çalıştırmak için gerken maksimum süre. (Haftada bir, 7*60*60*24) osd deep scrub interval: deep scrub yapmak için gerekli olan maksimum süre (Haftada bir, 60*60*24*7) osd deep scrub stride: Scrub yaparken kullanılanacak okuma büyüklüğü (524288, 512KB) Peki elle scrub çalıştırmamız gerektiğinde ne yapacağız. Bunun için:

ceph osd scrub {osd-numarası}

yazmak yeterli. Osd numarasını görmek için

ceph osd dump

Ceph PG Durumları

Kurduğunuz ceph cluster’ın sağlığı PG grupların durumları ile oldukça ilişkili olduğundan ceph pg stat veya  ceph –s

root@cephm:/home/ceph# ceph pg stat
v34874: 1332 pgs: 1332 active+clean; 280 GB data, 844 GB used, 8455 GB / 9300 GB avail 
root@cepm:/home/ceph# ceph -s
cluster c33eca63-f5b5-4689-9fc5-636782f66f5c
health HEALTH_OK
monmap e1: 1 mons at {cephm=172.16.3.14:6789/0}, election epoch 1, quorum 0 cephm
osdmap e1673: 20 osds: 20 up, 20 in
pgmap v34874: 1332 pgs, 2 pools, 280 GB data, 81114 objects
844 GB used, 8455 GB / 9300 GB avail
1332 active+clean

komutu ile durumlarını göreceğiniz PG’lerinin durumlarının ne anlama geldiğini bilmek oldukça önemli.

Peering

PG’ler kendi aralarında tutulan objelerin ve metadata bilgilerinin durumu hakkında haberleşiyorlar. Bu durum bittikten sonra (obje ve metadataların durumu konusunda karara varıldıktan sonra) Active, Clean, Degraged vb duruma geçiş yapılıyor.

Active

Peerin sonrası herşeyin yolunda gittiği kararı alındı ise PG active duruma geçer, bu durumda veri ana PG’de ve replicalarda I/O operasyonuna yapmak için hazır durumdadır.

Clean

Birincil (primary) ve ikincil (secondary) OSD’lerin peeringinde bir sorun yok ise, PG’lerin konumunda herhangi bir değişikliğe gidilmeyecekse (crush map’te değişim sonrası örneğin),objelerin replikasyon sayılarında bir sorun yok ise (örneğin replica count 3 ise 3 kopyada da düzgün şekilde yazılmış ise ) clean durumuna geçilir.

Degraded

Herhangi bir OSD’ye erişilemediğinde, OSD’de bulunan PG’lerin durumu degraded olarak değiştirilir. OSD’ye erişilenememe durumu 300sn boyunca sürerse Ceph recovery işlemini başlatır ve diğer replikalardan obje başka bir OSD’de tekrar oluşturulur.  300sn’den önce OSD geri gelir ise diğer OSD’ler ile peering işlemini başlatır.

Recovering

OSD erişilemez duruma düştüğünde tekrar erişilebilir hale gelirse peering işleminden sonra objelerin güncel halinin diğer OSD’lerden alınması için recovery durumuna geçilir.

Backfilling

Ceph küme’sine yeni bir OSD eklendiğinde, Ceph var diğer OSD’lerde var olan verinin bir kısmını yeni OSD’ye taşıma işlemini başlatır. Bu işleme backfilling denir. Backfiling operasyonu tamamlandığında OSD I/O operasyonlarını yapmak için hazır hale gelmiş olur. Ceph kümesinde yeni bir OSD eklendiğinde ağırlık değerinin (weigh) düşük tutularak azar azar arttırılarak kümeye backfilling operasyonları ile dahil edilmesi önerilmektedir.

Remapped

Belirli bir PG’nin replicalarının bulunması gerken OSD’lere acting set ismi verilmektedir. Acting set’te bir değişikli olduğu zaman eski OSD’lerde ki verinin yeni OSD’lere taşınması gerekmektedir. Bu süre boyunca I/O isteklerine eski acting set’teki OSD’ler cevap verir. Verinin taşınması tamamlanınca, I/O operasyonlarına cevap verme görevini yeni OSD’ler üstlenir. Bu süreç içindeki PG’ler remapped durumda görülür.

Stale

Ceph OSD istatistklerini her 0.5 saniyede monitör sunucusuna iletir. Acting set’teki birincil OSD durumununu monitöre belirmediği anda monitör PG’nin durumuna stale olarak değiştirir.

CEPH Performans Optimizasyonu için Ayarlanabilecek Değişken Listesi

Genel

  • Kernel pid max:  Linux çekirdeği tarafından kullanılacak olan makimum işlemci numarası (Proccess id). OSD sayısının fazla olduğu sistemlerde thread sayısıda göz önüne alındığının da bu değerin arttırılması gerekebilir. Bu değeri yükseltmek için /proc/sys/kernel/pid_max değeri arttırılabilir.
  • max open files: Ceph tarafından kullanacak olan dosyaların maksimum sayısı.
  • filestore min sync interval,filestore max sync interval: Bu değerlen verinin journal’dan hangi sıklıkla diske aktarılacağını belirliyor (saniye olarak). SSD diskiniz büyükse ve değerleri az tutarsanız SSD diskinizi yeterince kullanmamış olursunuz.
  • Jumbo Frames: anahtarlama cihazı ve işletim sisteminde mtu değeri 9000 olarak ayarlanması performansı arttıracaktır.
  • Disk read_ahead:Disklerden okuma sırasında okunan verilerin tampon belleğe aktarılması istemcilerin(prefetch) disk erişimini hızlandıracaktır. Diske ait mevcut değer (sde diski için)
cat /sys/block/sde/vda/queue/read_ahead_kb

komutu ile görülebilir. Değer echo ile değiştirilebilir.

Filestore Kuyruğu

  • filestore queue max ops: filestore’un kuyruğa yeni bir I/O operasyonu için maksimum sayısı
  • filestore queue max bytes:I/O operasyonlarının maksimum byte değeri
  • filestore queue committing max ops: Bir seferde yapılacak olan I/O operasyonların maksimum sayısı
  • filestore queue committing max bytes: Bir seferde yapılacak olan I/O operasyonların maksimum byte değeri
  • filestore op threads: Dosya sisteminde yapılacak olan operasyonları için paralel olarak çalıştırılacak thread değeri

OSD

  • osd max write size:OSD tarafından bir seferde yazılabilecek olan veri miktarı (MByte)
  • osd client message size cap: İstemciye ait verinin bellek tutulacak kısmına ait olan maksimum değler (MByte)
  • osd deep scrub stride: Scrub operasyonları sırasında okunacak veri miktarı (Byte)
  • osd op threads: Ceph OSD programı tarafından kullanılan thread sayısı
  • osd disk threads: Ceph OSD programı tarafından disk işlemlerinde kullanılacak olan thread sayısı

OSD Journal

  • journal max write bytes: Journal’a bir seferde yazılabilecek maksimum byte miktarı
  • journal max write entries: Journal’a bir seferde yapılabilecek yazma sayısı
  • journal queue max ops: Journal kuyruğunda tek seferde yapılabilecek olan maksimum operasyon sayısı
  • journal queue max bytes: Journal kuyruğunda tek seferde yapılabilecek olan maksimum byte sayısı

OSD Kurtarma Operastonarlı (Recovery)

  • osd recovery op priority: OSD kurtarma işleminin önceliği, rakam azaldıkça önceliği artıyor.
  • osd recovery op priority: Aktif kurtarma işlemlerinin maksimum sayısı, sayı arttıkça kurtarma süresi azalıyor, sistemin genel performansı azalıyor.
  • osd max backfills: Backfill operasyonlarının maksimum sayısı.

İstemci

  • rbd cache: İstemci taraınfa rdb cache özeliğinini açmak için (true)
  • rbd cache size: İstemici tarafında rdb cache değeri (Byte)
  • bd cache max dirty: İstemci tarafında tampon bellekte tutulan maksimum veri miktarı. Bu değere erişildiğinde tampon bellekteki veriler flush ediliyor. Bu değer 0 olarak ayarlanır ise tampon bellek write-through olarak yapılandırılır. Atanmış değer write-back.
  • rbd cache max dirty age: Saniye olarak bellekteki bilgilerin disklere flush edilme süresi

Blok Depolama İşlemleri - RBD (Rados Block Device)

RBD Yaratma

Deneme pool’u içinde 3.000.000 MByte’lık bir rbd oluşturalım.

rbd create data --size 3000 000 --pool deneme

RBD Bilgi Alma (RBD info)

Pool içindeki rbd’ları görmek için rbd ls komutunu kullanıyoruz:

root@cephm:/home/ceph# rbd  ls deneme
data

Daha ayrıntılı bir bilgi almak isterseniz:

root@cephm:/home/ceph# rbd --image data -p deneme info
rbd image 'data':
    size 2929 GB in 750000 objects
    order 22 (4096 kB objects)
    block_name_prefix: rb.0.99d69.2ae8944a
    format: 1

RBD İstemcilere MAP Edilmesi

Deneme altında yarattığımız data rbd’ı kullanmadan önce istemciye map etmemiz gerekiyor bunun için:

root@client:~# rbd map data --pool deneme --name client.admin
/dev/rbd1

İstemcilere MAP edilen RBD’lerin Görüntülenmesi

Map edilen rbd’lerin görüntülenmesi için rbd showmapped komutu kullanabilir.

root@client:~# rbd showmapped
id pool   image snap device    
1  deneme data  -    /dev/rbd1

İstemcilere MAP edilen RBD’lerin Unmap Edilmesi

İlk olarak map ettiğiniz rbd mount edilmiş ise umount etmelisiniz. Ardından rbd unmapped komut ile map edilen rbd’yi kaldırabilirsiniz.

root@client:~# rbd unmap /dev/rbd1

RBD Silinmesi

RBD silmek için rbd’nin herhangi bir istemci tarafından map edilmediğine emin olun. Herhangi bir istemciye map edilmiş bir rbd’yi silmek isterseniz aşağıdaki hatayı alırsınız.

root@cephm:~# rbd rm deneme/data
2015-04-27 15:25:42.573852 7f2a9ac5f840 -1 librbd: image has watchers - not removing
Removing image: 0% complete...failed.
rbd: error: image still has watchers
This means the image is still open or the client using it crashed. Try again after closing/unmapping it or waiting 30s for the 
crashed client to timeout.

Bu durumda silmei için ilk olarak hangi istemcinin rbd’yi map ettiğine bakalım.

root@cephm:/home/ceph# rados listwatchers --pool deneme data.rbd
watcher=172.16.2.106:0/3585843564 client.630175 cookie=1

İstemciden rbd’yi unmap ettikten sonra komutu tekrar çalıştırırsak:

root@cephm:/home/ceph# rbd rm deneme/data
Removing image: 100% complete...done.