http://bulutwiki.ulakbim.gov.tr/index.php?title=%C3%96zel:YeniSayfalar&feed=atom&hideredirs=1&limit=50&offset=&namespace=0&username=&tagfilter=&size-mode=max&size=0
BulutWiki - Yeni sayfalar [tr]
2024-03-29T12:31:45Z
BulutWiki sitesinden
MediaWiki 1.30.0
http://bulutwiki.ulakbim.gov.tr/index.php/Kaynaklar
Kaynaklar
2018-11-22T07:28:33Z
<p>Admin: </p>
<hr />
<div>[[Dosya:Huawei_CloudEngine_8800&7800&6800&5800_Series_VXLAN_Technology_White_Paper.pdf]]</div>
Admin
http://bulutwiki.ulakbim.gov.tr/index.php/CEPH_SSD_Tamponlama_-_Cache_Tiering
CEPH SSD Tamponlama - Cache Tiering
2018-09-20T12:40:06Z
<p>Admin: </p>
<hr />
<div>=== CEPH CACHE TIERING ===<br />
write-back mode icin anlatilmistir.<br />
nvme ssd disklerden olusturulan rbdssd pool'u cache olarak sata disk pooldan olusan rbdperftest poolu onune koymak icin Mimic versiyonunda yapilmasi gereken islemler<br />
<br />
#cache tiering<br />
#cache pool: rbdssd<br />
#cool pool: rbdperftest<br />
<br />
* rbdperftest icerisinde kaln objeleri silmek icin:<br />
for i in `rados -p rbdperftest ls`; do rados -p rbdperftest rm $i; echo $i; done<br />
<br />
* tier yapida rbdssd'yi cache'lemek icin<br />
ceph osd tier add rbdperftest rbdssd<br />
<br />
* degisen dosyalar oldugundan modu write-back olarak ayarlandi.<br />
ceph osd tier cache-mode rbdssd writeback<br />
<br />
* tum veri trafiginin rbdssd cache uzerinden aktarilabilmesi icin yapildi. Dilernirse eger veri cache'te yok ise bu durumda dogrudan hdd uzerinden de okunabilir. (read-proxy mode)<br />
ceph osd tier set-overlay rbdperftest rbdssd<br />
<br />
* durum kontrol edilir.<br />
ceph osd pool ls detail<br />
<br />
* Cache'te yer alan degisen objeler pool kapasitesinin yuzde 40 oldugunda hdd'ye flush etmeye basla.<br />
ceph osd pool set rbdssd cache_target_dirty_ratio 0.4<br />
<br />
* Degisen objeler toplam kapasitenin yuzde 60'ina ulastiginda agresif bir flush'lamaya basla.<br />
ceph osd pool set rbdssd cache_target_dirty_high_ratio 0.6<br />
<br />
* Sabit kalan objeler kapasitenin yuzde sekseni oldugunda bu objeleri flush etmeye basla.<br />
ceph osd pool set rbdssd cache_target_full_ratio 0.8<br />
<br />
* Obje degistikten 10dk sonra flush et.<br />
ceph osd pool set rbdssd cache_min_flush_age 600<br />
<br />
* Cache'te yer alan ve 30 dk dir erisilmeyen objeleri cikar. (evict)<br />
ceph osd pool set rbdssd cache_min_evict_age 1800<br />
<br />
* 1 cache pools are missing hit_sets hatasini onlemek icin<br />
ceph osd pool set OpenstackCachedRBD hit_set_type bloom<br />
<br />
=== KALDIRMAK icin ===<br />
uzerindeki verileri flush etmek icin;<br />
ceph osd tier cache-mode rbdssd forward --yes-i-really-mean-it<br />
<br />
ne kadar obje olduguna bakilir,<br />
rados -p rbdssd ls<br />
<br />
hala cok sayida var ise elle flush edilir.<br />
rados -p rbdssd cache-flush-evict-all<br />
<br />
ceph df komutu ile o pool'da yer alan obje sayisina bakilir. Surekli azalmasi gereklidir.<br />
ceph osd tier remove-overlay rbdperftest<br />
ceph osd tier remove rbdperftest rbdssd</div>
Admin
http://bulutwiki.ulakbim.gov.tr/index.php/RADOSGW_Storage_Pool_Yapilandirma,_Optimizasyon_ve_Testi
RADOSGW Storage Pool Yapilandirma, Optimizasyon ve Testi
2018-09-20T12:19:47Z
<p>Admin: </p>
<hr />
<div>== Obje Depolama Pool Ayarlari - Depolama Politikasi ==<br />
<br />
Örnek parola olarak "blabla" kullanılmıştır. Kendi kurulumunuzuzda belirleyeceğiniz parolayı kullanınız.<br />
<br />
Herhangi bir yapilandirma yapilmadiginda radosgw uzerinden kullanici tarafinda atilan obje veya bucketlar default yer olan default.rgw.buckets.data adinda pool uzerinde tutulmaktadir. Bunun index bilgileri ise default.rgw.buckets.index pool uzerinde tutulmaktadir. Kullanici vb meta verileri, log'lar ise ayri yapilandirilmis default.rgw.meta ve default.rgw.log pool'lari uzerinde tutulmaktadir.<br />
<br />
Asagidaki komutla default olusturulan pool ve detaylari bulunabilir.<br />
<br />
# ceph osd pool ls detail<br />
pool 1 '.rgw.root' replicated size 3 min_size 3 crush_rule 0 object_hash rjenkins pg_num 256 pgp_num 256 last_change 195 owner 18446744073709551615 flags hashpspool stripe_width 0 application rgw<br />
pool 2 'default.rgw.control' replicated size 3 min_size 3 crush_rule 0 object_hash rjenkins pg_num 256 pgp_num 256 last_change 199 owner 18446744073709551615 flags hashpspool stripe_width 0 application rgw<br />
pool 3 'default.rgw.meta' replicated size 3 min_size 3 crush_rule 0 object_hash rjenkins pg_num 256 pgp_num 256 last_change 201 owner 18446744073709551615 flags hashpspool stripe_width 0 application rgw<br />
pool 4 'default.rgw.log' replicated size 3 min_size 3 crush_rule 0 object_hash rjenkins pg_num 256 pgp_num 256 last_change 203 owner 18446744073709551615 flags hashpspool stripe_width 0 application rgw <br />
pool 5 'default.rgw.buckets.index' replicated size 3 min_size 3 crush_rule 0 object_hash rjenkins pg_num 256 pgp_num 256 last_change 206 owner 18446744073709551615 flags hashpspool stripe_width 0 application rgw<br />
pool 6 'default.rgw.buckets.data' replicated size 3 min_size 3 crush_rule 0 object_hash rjenkins pg_num 256 pgp_num 256 last_change 209 owner 18446744073709551615 flags hashpspool stripe_width 0 application rgw<br />
<br />
Bune gore default olarak ayarlanan her bir pool 3 replikasi ve her birinin 256 pg sayisi bulunmaktadir. (CEPH kurulumu yapilirken ceph.conf icerisinde default pg sayisi 256 set edildiginde bu pool'lar bu sekilde yapilandirilmistir)<br />
<br />
Bu nedenle farkli kullanicilar uzerinden gelecek veriler ayni ozellikte ki pool uzerinde kaydedilecektir, Ornegin B3LAB projesi icin olusturulan kullanicinin verileri de kendimiz icin olsuturulacak GLANCE ve NextCloud projeleri icin olusturulacak kullanicilar da ayni pool uzerinde verileri tutacaklardir. Bu pek istenen bir durum degildir, cunku degisen kapasiteye ve kullanima bagli ozel olusturulmus pool uzerinde verilerini tutmasi daha dogru bir yaklasim olacaktir. index, metadata ve log'lar default pool uzerinde tutulabilir, ancak veriler icin ayri bir data pool tutmak icin bu dokuman hazirlanmistir.<br />
<br />
NOT: Her bir objeye ait veriler indexlenmektedir. Eger tum objeleri listeleme gibi bir gereksinim bulunmuyorsa bu durumda her bir objeye ait index bilgisini tutmak gereksizdir. Bunun icin asagidaki baslik izlenebilir.<br />
https://access.redhat.com/documentation/en-us/red_hat_ceph_storage/3/html-single/object_gateway_guide_for_red_hat_enterprise_linux/#indexless_buckets<br />
<br />
Ayrica; eger milyonlarca obje olacakse ve surekli listeleme gibi isler yapilacaksa bu durumda index'in yer aldigi pool aysi SSD'lerden olusan bir pool uzerine kurgulanabilir. Bucket index sharding islemi ile de oldukca performans kazanci elde edilebilir.<br />
https://access.redhat.com/documentation/en-us/red_hat_ceph_storage/3/html-single/object_gateway_guide_for_red_hat_enterprise_linux/#bucket_sharding<br />
<br />
AMAC:<br />
1- Dosyalarin daha performansli listelenebilmesi icin SSD'ler uzerinde yer alan index pool ve objelerin tutulacagi yuksek pg sayili, 3 replikali data pool olusturmak.<br />
index pool: .rgw.buckets.ssd_index, 256 pg, 3 replika, 512GB kota<br />
data pool: .rgw.buckets.sharedfile_data, 1024 pg, 3 replika, 30TB kota<br />
2- Ayni ozellikte isterleri olan farkli iki proje icin (SAFIR ve NextCloud) ayri kullanici olusturup bu pool'lar uzerinde islem yapabilmesini saglamak<br />
3- Her bir kullaniciya ayri kotalar tanimlamak<br />
<br />
=== POOL OLUSTURMA ===<br />
Onceden hazirlanmis 2 farkli crush rule var, bunlardan biri sadece nVme ssd disklerin yer aldigi fast, digeri ise sadece SATA Hdd'lerin yer aldigi replicated_rule. Pool'lar bu chrush liste gore olusturuldu.<br />
# ceph osd crush rule list<br />
replicated_rule<br />
fast<br />
<br />
# ceph osd crush class ls-osd ssd<br />
48<br />
49<br />
50<br />
51<br />
<br />
ceph osd pool create .rgw.buckets.ssd_index 256 256<br />
ceph osd pool set .rgw.buckets.ssd_index crush_rule fast<br />
ceph osd pool set-quota .rgw.buckets.ssd_index max_bytes 512GB<br />
ceph osd pool application enable .rgw.buckets.ssd_index rgw<br />
<br />
ceph osd pool create .rgw.buckets.sharedfile_data 1024 1024<br />
ceph osd pool set .rgw.buckets.sharedfile_data crush_rule replicated_rule<br />
ceph osd pool set-quota .rgw.buckets.sharedfile_data max_bytes 30TB<br />
ceph osd pool application enable .rgw.buckets.sharedfile_data rgw<br />
<br />
ceph osd pool ls detail<br />
.... <br />
....<br />
pool 8 '.rgw.buckets.ssd_index' replicated size 3 min_size 3 crush_rule 1 object_hash rjenkins pg_num 256 pgp_num 256 last_change 268 flags hashpspool stripe_width 0<br />
pool 9 '.rgw.buckets.sharedfile_data' replicated size 3 min_size 3 crush_rule 0 object_hash rjenkins pg_num 1024 pgp_num 1024 last_change 271 flags hashpspool stripe_width 0<br />
<br />
<br />
=== Placement Target ===<br />
CEPH Object Gateway, kullanicinin verisini tutarken iliskilendirilmis placement target bilgisine bakar, herhangi bir ayar yapilmadiysa default olan zone altinda yer alan default-placement bilgisine gore de islem yapar. Az once olusturdugumuz sekilde pool'lar uzerinde spesifik islem yapabilmek icin ayni zone altinda yeni bir placement grup olusturup pool bilgilerini ayri ayri burada set etmemiz gerekecektir.<br />
<br />
# radosgw-admin zonegroup --rgw-zonegroup=default get<br />
{<br />
"id": "f252a88f-d3b2-4566-815a-",<br />
"name": "default",<br />
"api_name": "",<br />
"is_master": "true",<br />
"endpoints": [],<br />
"hostnames": [],<br />
"hostnames_s3website": [],<br />
"master_zone": "813cf61b-a412-4130-8eb4-",<br />
"zones": [<br />
{<br />
"id": "813cf61b-a412-4130-8eb4-",<br />
"name": "default",<br />
"endpoints": [],<br />
"log_meta": "false",<br />
"log_data": "false",<br />
"bucket_index_max_shards": 0,<br />
"read_only": "false",<br />
"tier_type": "",<br />
"sync_from_all": "true",<br />
"sync_from": [],<br />
"redirect_zone": ""<br />
}<br />
],<br />
"placement_targets": [<br />
{<br />
"name": "default-placement",<br />
"tags": []<br />
}<br />
],<br />
"default_placement": "default-placement",<br />
"realm_id": ""<br />
}<br />
<br />
sharedfile-placement adinda yeni bir placement target olusturmak icin zonegroup.json dosyasi asagidaki sekilde guncellenip calistirilir.<br />
<br />
{<br />
"id": "f252a88f-d3b2-4566-815a-",<br />
"name": "default",<br />
"api_name": "",<br />
"is_master": "true",<br />
"endpoints": [],<br />
"hostnames": [],<br />
"hostnames_s3website": [],<br />
"master_zone": "813cf61b-a412-4130-8eb4-",<br />
"zones": [<br />
{<br />
"id": "813cf61b-a412-4130-8eb4-",<br />
"name": "default",<br />
"endpoints": [],<br />
"log_meta": "false",<br />
"log_data": "false",<br />
"bucket_index_max_shards": 0,<br />
"read_only": "false",<br />
"tier_type": "",<br />
"sync_from_all": "true",<br />
"sync_from": [],<br />
"redirect_zone": ""<br />
}<br />
],<br />
"placement_targets": [<br />
{<br />
"name": "default-placement",<br />
"tags": []<br />
},<br />
{<br />
"name": "sharedfile-placement",<br />
"tags": []<br />
}<br />
],<br />
"default_placement": "default-placement",<br />
"realm_id": ""<br />
}<br />
<br />
# radosgw-admin zonegroup set < zonegroup.json<br />
<br />
Daha sonra zone yapilandirma dosyasini alip data ve index icin olusturulan bu pool'lar set edilecek sekilde placement target guncellenir.<br />
<br />
# sudo radosgw-admin zone get<br />
{<br />
"id": "813cf61b-a412-4130-8eb4-",<br />
"name": "default",<br />
"domain_root": "default.rgw.meta:root",<br />
"control_pool": "default.rgw.control",<br />
"gc_pool": "default.rgw.log:gc",<br />
"lc_pool": "default.rgw.log:lc",<br />
"log_pool": "default.rgw.log",<br />
"intent_log_pool": "default.rgw.log:intent",<br />
"usage_log_pool": "default.rgw.log:usage",<br />
"reshard_pool": "default.rgw.log:reshard",<br />
"user_keys_pool": "default.rgw.meta:users.keys",<br />
"user_email_pool": "default.rgw.meta:users.email",<br />
"user_swift_pool": "default.rgw.meta:users.swift",<br />
"user_uid_pool": "default.rgw.meta:users.uid",<br />
"otp_pool": "default.rgw.otp",<br />
"system_key": {<br />
"access_key": "",<br />
"secret_key": ""<br />
},<br />
"placement_pools": [<br />
{<br />
"key": "default-placement",<br />
"val": {<br />
"index_pool": "default.rgw.buckets.index",<br />
"data_pool": "default.rgw.buckets.data",<br />
"data_extra_pool": "default.rgw.buckets.non-ec",<br />
"index_type": 0,<br />
"compression": ""<br />
}<br />
}<br />
],<br />
"metadata_heap": "",<br />
"realm_id": ""<br />
}<br />
<br />
sudo radosgw-admin zone get > zone.json<br />
sudo vi zone.json<br />
{<br />
"id": "813cf61b-a412-4130-8eb4-",<br />
"name": "default",<br />
"domain_root": "default.rgw.meta:root",<br />
"control_pool": "default.rgw.control",<br />
"gc_pool": "default.rgw.log:gc",<br />
"lc_pool": "default.rgw.log:lc",<br />
"log_pool": "default.rgw.log",<br />
"intent_log_pool": "default.rgw.log:intent",<br />
"usage_log_pool": "default.rgw.log:usage",<br />
"reshard_pool": "default.rgw.log:reshard",<br />
"user_keys_pool": "default.rgw.meta:users.keys",<br />
"user_email_pool": "default.rgw.meta:users.email",<br />
"user_swift_pool": "default.rgw.meta:users.swift",<br />
"user_uid_pool": "default.rgw.meta:users.uid",<br />
"otp_pool": "default.rgw.otp",<br />
"system_key": {<br />
"access_key": "",<br />
"secret_key": ""<br />
},<br />
"placement_pools": [<br />
{<br />
"key": "default-placement",<br />
"val": {<br />
"index_pool": "default.rgw.buckets.index",<br />
"data_pool": "default.rgw.buckets.data",<br />
"data_extra_pool": "default.rgw.buckets.non-ec",<br />
"index_type": 0,<br />
"compression": ""<br />
}<br />
},<br />
{<br />
"key": "sharedfile-placement",<br />
"val": {<br />
"index_pool": ".rgw.buckets.ssd_index",<br />
"data_pool": ".rgw.buckets.sharedfile_data",<br />
"data_extra_pool": ".rgw.buckets.sharedfile_data.non-ec",<br />
"index_type": 0,<br />
"compression": ""<br />
}<br />
}<br />
],<br />
"metadata_heap": "",<br />
"realm_id": ""<br />
}<br />
<br />
radosgw-admin zone set < zone.json<br />
radosgw-admin period update --commit<br />
<br />
=== Bucket Optimizasyon ===<br />
Pool uzerinde kayitli bucket uzerinde tutulan tum objelerin index bilgisi SSD disk uzerinde tutacak sekilde yapilandirilan .rgw.buckets.ssd_index poolu uzerinde durmaktadir. Buna ek olarak performansi artirmak icin bucket sharding denilen her bir bucket icin tutulacak maksimim obje sayisini belirleyen bir ayar girilmesi gerekmektedir. Tek bir bucket uzerinde milyonlarca kayit tutmak performansi cok dusurecektir.<br />
<br />
rgw_override_bucket_index_max_shards parametresi bucket basina tutulacak en fazla shard bilgisini gostermektedir. Default ayari 0'dir, yani bucket uzerinde sinirsiz sayida obje tutacak sekildedir. Bu sayinin belirlenmesi icin asagidaki formul onerilmektedir.<br />
<br />
number of objects expected in a bucket / 100,000<br />
<br />
Biz olusturdugumuz pool icin 10.000 kullanici ve her birinin 100 dosyasi olacak sekilde on gordugumuzde toplam obje sayisi 1 milyon olmakta, bu durumda bu sayi ise 10 olacaktir.<br />
ceph.conf dosyasina asagidaki satir eklenir, ve radosgw servisi restart edilir.<br />
<br />
rgw_override_bucket_index_max_shards = 10<br />
<br />
systemctl restart ceph-radosgw.service<br />
<br />
=== Kullanici Olusturma ve Yetkilendirme ===<br />
Son olarak RADOSGW uzerinde ayarlari yapilmis bu pool'lar uzerinde veri tutacak kullanicilarin olusturulmasinda. RadosGW, hem S3 uyumlu (user) hem de swift api uyumlu (subuser) kullanici olusturmaya izin veriyor. Dolayisiyla S3 arayuzu icin access ve secret key gerekirken swift arayuzu icin secret key yeterli olabilmektedir. Burada swift api uyumlu subuser olusturulup yetkilendirilecektir. Kullanicilar full yetkiye sahip olacak sekilde olusturulacaktir. (Alternatifer; read, write, readwrite)<br />
<br />
SAFIR kullanicisi icin:<br />
radosgw-admin user create --uid="safir" --display-name="B3LAB SAFIR Grubu"<br />
radosgw-admin subuser create --uid=safir --subuser=safir:swift --access=full<br />
<br />
NextCloud kullanicisi icin:<br />
radosgw-admin user create --uid="nextcloud" --display-name="ULAKBIM NextCloud Servisi"<br />
radosgw-admin subuser create --uid=nextcloud --subuser=nextcloud:swift --access=full<br />
<br />
# radosgw-admin user info --uid=nextcloud<br />
{<br />
"user_id": "nextcloud",<br />
"display_name": "ULAKBIM NextCloud Servisi",<br />
"email": "",<br />
"suspended": 0,<br />
"max_buckets": 1000,<br />
"auid": 0,<br />
"subusers": [<br />
{<br />
"id": "nextcloud:swift",<br />
"permissions": "full-control"<br />
}<br />
],<br />
"keys": [<br />
{<br />
"user": "nextcloud",<br />
"access_key": "blabla",<br />
"secret_key": "blabla"<br />
}<br />
],<br />
"swift_keys": [<br />
{<br />
"user": "nextcloud:swift",<br />
"secret_key": "blabla"<br />
}<br />
],<br />
"caps": [],<br />
"op_mask": "read, write, delete",<br />
"default_placement": "",<br />
"placement_tags": [],<br />
"bucket_quota": {<br />
"enabled": false,<br />
"check_on_raw": false,<br />
"max_size": -1,<br />
"max_size_kb": 0,<br />
"max_objects": -1<br />
},<br />
"user_quota": {<br />
"enabled": false,<br />
"check_on_raw": false,<br />
"max_size": -1,<br />
"max_size_kb": 0,<br />
"max_objects": -1<br />
},<br />
"temp_url_keys": [],<br />
"type": "rgw",<br />
"mfa_ids": []<br />
}<br />
<br />
<br />
komutu ile kullaniciya ait bilgiler gelmektedir. Bu kullanicilar, hem S3 ile hem de Swift arayuzu ile konusabilecek key'lere sahiptirler.<br />
<br />
Dilenirse bu kullanicilar bir sure kullanima kapatilip tekrar asagidaki komutla acilabilir.<br />
# radosgw-admin user suspend --uid=nextcloud<br />
# radosgw-admin user enable --uid=nextcloud<br />
<br />
Kullanici bilgilerine bakildiginda herhangi bir kota bulunmamaktadir. Her ne kadar pool bazinda bir kota tanimlamasi yapildiysa da kullanici bazinda da bir kota tanimlamasi yapilmasi gerekmektedir. CEPH uzerinde kota tanimlamasi kullanici veya kullanicinin sahip oldugu bucket bazinda yapilabilmektedir. Default'ta her ikisi disable durumundadir. Burada kullanici bazli bir kota tanimlanacaktir.<br />
<br />
# radosgw-admin quota set --quota-scope=user --uid=safir --max-objects=1000000 --max-size=30TB<br />
# radosgw-admin quota set --quota-scope=user --uid=nextcloud --max-objects=100000 --max-size=3TB<br />
<br />
son olarak kullanici bazli kota tanimlamayi etkinlestirmek gerekmektedir.<br />
<br />
# radosgw-admin quota enable --quota-scope=user --uid=nextcloud<br />
# radosgw-admin quota enable --quota-scope=user --uid=safir<br />
<br />
"bucket_quota": {<br />
"enabled": false,<br />
"check_on_raw": false,<br />
"max_size": -1,<br />
"max_size_kb": 0,<br />
"max_objects": -1<br />
},<br />
"user_quota": {<br />
"enabled": true,<br />
"check_on_raw": false,<br />
"max_size": 32985348833280,<br />
"max_size_kb": 32212254720,<br />
"max_objects": 1000000<br />
},<br />
<br />
<br />
=== Kullanici ile Iliskilendirme ===<br />
<br />
Olusturulan bu kullanicilarin sadece yeni olusturdugumuz placement_target dolayisiyla pool uzerinde default islem yapabilmeleri icin metadata verilerinde guncelleme yapmak gerekir. Kullanici bilgisine baktigimizda default_placement bos gelmektedir. Bunu sharedfile_placement ile guncellemek icin:<br />
<br />
# radosgw-admin metadata get user:nextcloud > user.json<br />
user.json dosyasinda default_placement karsisina sharedfile-placement eklenir.<br />
"default_placement": "sharedfile-placement",<br />
<br />
# radosgw-admin metadata put user:nextcloud < user.json ile metadata guncellenir.<br />
<br />
Benzer islem diger kullanici icinde yapilir.<br />
# radosgw-admin metadata get user:safir > user.json<br />
# radosgw-admin metadata put user:safir < user.json<br />
<br />
<br />
<br />
=== TEST islemleri ===<br />
Pek cok farkli yontemle bucket olusturulup icerisine dosya atilabilir. Bunlardan birkaci ile asagida ornek olmasi acisindan komutlar verilmistir.<br />
<br />
S3 arayuzu uzerinden python boto kutuphanesi kullanilarak o kullanicinin access ve secret keyleri ile bucket olusturulabilir. Ornegin;<br />
<br />
# cat cephtestv2.py<br />
import boto<br />
import boto.s3.connection<br />
access_key = 'blabla'<br />
secret_key = 'blabla'<br />
conn = boto.connect_s3(<br />
aws_access_key_id = access_key,<br />
aws_secret_access_key = secret_key,<br />
host = 'gwmon', port =7480,is_secure=False, calling_format = boto.s3.connection.OrdinaryCallingFormat(),)<br />
<br />
bucket = conn.create_bucket('test-bucket')<br />
for bucket in conn.get_all_buckets():<br />
print "{name} {created}".format(name = bucket.name,created = bucket.creation_date,)<br />
<br />
Boylece test-bucket adinda bir bucket olusturulmus olunur. Bu bucket altina dosya atmak icinse SWIFT arayuzu uzerinden secret_key ile dosya gonderilebilir.<br />
# swift -A http://gwmon:7480/auth/1.0 -U nextcloud:swift -K blabla upload test-bucket cephtest.py<br />
<br />
Bu bucket altindaki dosyalari listelemek icinse<br />
# swift -A http://gwmon:7480/auth/1.0 -U nextcloud:swift -K blabla list test-bucket komutu kullanilir.<br />
<br />
Bucket ve dosyanin nereye yazildigi onemlidir. Bucket adi verilerek kullanimina ve hangi placement target kullandigina bakilabilir. Ornegin;<br />
<br />
# radosgw-admin bucket stats --bucket test-bucket<br />
{<br />
"bucket": "test-bucket",<br />
"zonegroup": "f252a88f-d3b2-4566-815a-c975ab4e2d65",<br />
"placement_rule": "sharedfile-placement",<br />
"explicit_placement": {<br />
"data_pool": "",<br />
"data_extra_pool": "",<br />
"index_pool": ""<br />
},<br />
"id": "813cf61b-a412-4130-8eb4-bc8bacb0f752.494548.2",<br />
"marker": "813cf61b-a412-4130-8eb4-bc8bacb0f752.494548.2",<br />
"index_type": "Normal",<br />
"owner": "nextcloud",<br />
"ver": "0#2,1#1,2#1,3#2,4#1,5#1,6#1,7#1,8#1,9#1",<br />
"master_ver": "0#0,1#0,2#0,3#0,4#0,5#0,6#0,7#0,8#0,9#0",<br />
"mtime": "2018-09-17 15:51:55.909340",<br />
"max_marker": "0#,1#,2#,3#,4#,5#,6#,7#,8#,9#",<br />
"usage": {<br />
"rgw.main": {<br />
"size": 1102,<br />
"size_actual": 8192,<br />
"size_utilized": 1102,<br />
"size_kb": 2,<br />
"size_kb_actual": 8,<br />
"size_kb_utilized": 2,<br />
"num_objects": 2<br />
}<br />
},<br />
"bucket_quota": {<br />
"enabled": false,<br />
"check_on_raw": true,<br />
"max_size": -1,<br />
"max_size_kb": 0,<br />
"max_objects": -1<br />
}<br />
}<br />
<br />
placement_rule bizim set etmis oldugumuz yerde olusturulmustur. Icerisinde ise 2 obje bulunmaktadir. Diger taraftan garanti olmasi acisindan her bir pool kullanimina bakilirsa 2 objenin yeni olusturmus oldugumuz pool uzerinde oldugu gozlemlenir.<br />
<br />
#sudo ceph df detail<br />
GLOBAL:<br />
SIZE AVAIL RAW USED %RAW USED OBJECTS<br />
351 TiB 351 TiB 54 GiB 0.01 257 <br />
POOLS:<br />
NAME ID QUOTA OBJECTS QUOTA BYTES USED %USED MAX AVAIL OBJECTS DIRTY READ WRITE RAW USED<br />
.rgw.root 1 N/A N/A 1.3 KiB 0 111 TiB 4 4 1.8 KiB 10 B 4.0 KiB<br />
default.rgw.control 2 N/A N/A 0 B 0 111 TiB 8 8 0 B 0 B 0 B<br />
default.rgw.meta 3 N/A N/A 3.9 KiB 0 111 TiB 21 21 522 B 153 B 12 KiB<br />
default.rgw.log 4 N/A N/A 0 B 0 111 TiB 207 207 2.1 MiB 1.4 MiB 0 B<br />
default.rgw.buckets.index 5 N/A N/A 0 B 0 111 TiB 4 4 79 B 33 B 0 B<br />
default.rgw.buckets.data 6 N/A N/A 516 B 0 111 TiB 1 1 0 B 10 B 1.5 KiB<br />
.rgw.buckets.ssd_index 8 N/A 512 GiB 0 B 0 471 GiB 10 10 214 B 56 B 0 B<br />
.rgw.buckets.sharedfile_data 9 N/A 30 TiB 1.1 KiB 0 111 TiB 2 2 0 B 20 B 3.2 KiB</div>
Admin
http://bulutwiki.ulakbim.gov.tr/index.php/CEPH_Paketleri_Kurlum_%C3%96ncesi_Yap%C4%B1lmas%C4%B1_Gerekenler
CEPH Paketleri Kurlum Öncesi Yapılması Gerekenler
2018-09-20T12:17:53Z
<p>Admin: /* = Disk Hata Kontrolü */</p>
<hr />
<div><br />
== Donanımların Kontrolü==<br />
=== Donanım Marka/Model Kontrolü===<br />
İhale kapsamında aldığımız donanımların kontrolü için aşağıdaki betik kullanıldı, bu sayede disk,bellek ve diğer bilşenlerin istenilen özelliklere sahip olup olmadıkları kontrol edildi<br />
<br />
<br />
root@zula201:~/ulakceph# more sysinfo.sh <br />
#!/bin/bash<br />
INFOFILE="sysinfo.txt"<br />
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games<br />
echo "---------------------------------------------------------------------------------------------\n" >> $INFOFILE<br />
RAM=`free | grep Mem | awk '{print $2}'`<br />
echo "RAM: ${RAM}" > $INFOFILE<br />
lshw -class memory | egrep 'vendor:|product:|size:|clock: ' | grep -v "NO DIMM" | egrep -v 'MiB|KiB' >> $INFOFILE<br />
echo "---------------------------------------------------------------------------------------------\n" >> $INFOFILE<br />
num_CPU=`cat /proc/cpuinfo | grep -i "model name" | awk -F: '{print $2}' | wc -l`<br />
echo "CPU Count: ${num_CPU}" >> $INFOFILE<br />
cat /proc/cpuinfo | grep -i "model name" | awk -F: '{print $2}' >> $INFOFILE<br />
num_CPU=`cat /proc/cpuinfo | grep -i "model name" | awk -F: '{print $2}' | wc -l`<br />
echo "---------------------------------------------------------------------------------------------\n" >> $INFOFILE<br />
lsblk -a >> $INFOFILE<br />
for i in sdb sdc sdd sde sdf sdg sdh sdi sdj sdk sdl sdm<br />
do<br />
echo "Disk ${i}" >> $INFOFILE<br />
smartctl -a /dev/${i} | egrep 'Product|Revision:|Manufactured in|Accumulated start-stop cycles' >> $INFOFILE<br />
echo >> $INFOFILE<br />
done<br />
<br />
=== Disk Hata Kontrolü===<br />
badblocks programı kullanılarak sabit disklerde kurulum öncesi bad block olup olmadığının kontrolü yapıldı. İlgiki Betik.<br />
<br />
root@zula201:~/ulakceph# more systest.sh <br />
#!/bin/bash<br />
for disk in `lsblk | grep -i 7.3 | awk '{print $1}'` <br />
do badblocks -b4096 -w -o ${disk}.badblock.txt /dev/${disk} &<br />
done<br />
<br />
== Driver ve Firmware Güncellemleri==<br />
=== 10G Intel Ethernet Kartı Driver Güncellemesi===<br />
Linux çekirdeği ile gelen driver yerine Intel web sayfasından 10G ethernet kartının güncel driver'larının indirilerek kurulması daha az sorun ve daha yüksek performans almanızı sağlayacaktır.<br />
<br />
root@zula201:~/calisma/ixgbe-5.3.6/src# modinfo ixgbe <br />
filename: /lib/modules/4.4.0-124-generic/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko<br />
version: 4.2.1-k<br />
<br />
<br />
apt-get -y install gcc make<br />
<br />
root@zula201:~/calisma/ixgbe-5.3.6/src# make<br />
root@zula201:~/calisma/ixgbe-5.3.6/src# make install<br />
root@zula201:~/calisma/ixgbe-5.3.6/src# modinfo ixgbe<br />
filename: /lib/modules/4.4.0-124-generic/updates/drivers/net/ethernet/intel/ixgbe/ixgbe.ko<br />
version: 5.3.6<br />
<br />
===40G Mellanox Connectx 4 Driver ve Firmware güncellemesi===<br />
root@zula202:~# lsmod | grep -i mlx5_core<br />
mlx5_core 208896 0<br />
root@zula202:~# modinfo mlx5_core<br />
filename: /lib/modules/4.4.0-124-generic/kernel/drivers/net/ethernet/mellanox/mlx5/core/mlx5_core.ko<br />
version: 3.0-1<br />
license: Dual BSD/GPL<br />
description: Mellanox Connect-IB, ConnectX-4 core driver<br />
author: Eli Cohen <eli@mellanox.com><br />
srcversion: B033A1086EAE3BE4103F5B2<br />
<br />
<br />
root@zula201:~/calisma/mlnx-en-4.3-1.0.1.0-ubuntu16.04-x86_64# ./install <br />
Logs dir: /tmp/mlnx-en.9519.logs<br />
General log file: /tmp/mlnx-en.9519.logs/general.log<br />
<br />
Below is the list of mlnx-en packages that you have chosen<br />
(some may have been added by the installer due to package dependencies):<br />
ofed-scripts<br />
mlnx-en-utils<br />
mlnx-en-dkms<br />
mstflint<br />
This program will install the mlnx-en package on your machine.<br />
Note that all other Mellanox, OEM, OFED, RDMA or Distribution IB packages will be removed.<br />
Those packages are removed due to conflicts with mlnx-en, do not reinstall them.<br />
Do you want to continue?[y/N]:y<br />
Attempting to perform Firmware update...<br />
Querying Mellanox devices firmware ...<br />
<br />
Device #1:<br />
----------<br />
Device Type: ConnectX4<br />
Part Number: MCX414A-BCA_Ax<br />
Description: ConnectX-4 EN network interface card; 40GbE dual-port QSFP28; PCIe3.0 x8; ROHS R6<br />
PSID: MT_2130110027<br />
PCI Device Name: 83:00.0<br />
Base GUID: ec0d9a0300d9ca62<br />
Base MAC: ec0d9ad9ca62<br />
Versions: Current Available <br />
FW 12.18.1000 12.22.1002 <br />
PXE 3.5.0109 3.5.0403 <br />
UEFI N/A 14.15.0019 <br />
<br />
Status: Update required<br />
<br />
<br />
root@zula201:~/calisma/mlnx-en-4.3-1.0.1.0-ubuntu16.04-x86_64# /etc/init.d/mlnx-en.d restart<br />
modinfo mlx5_core<br />
<br />
root@zula201:~/calisma/mlnx-en-4.3-1.0.1.0-ubuntu16.04-x86_64# modinfo mlx5_core<br />
filename: /lib/modules/4.4.0-124-generic/updates/dkms/mlx5_core.ko<br />
version: 4.3-1.0.1<br />
license: Dual BSD/GPL</div>
Admin
http://bulutwiki.ulakbim.gov.tr/index.php/FILESTORE_KURULUMU
FILESTORE KURULUMU
2018-09-20T11:48:55Z
<p>Admin: </p>
<hr />
<div>== Test Sistemi Donanım Bilgileri ==<br />
6 Adet Dell R815 Sunucu, 5 Adedi data düğümü bir adedi monitör olarak kullanıldı. Data sunucularının özellikleri:<br />
* 4 x AMD Opteron(tm) Processor 6174 İşlemci<br />
* 128GByte Bellek<br />
* 5x500GByte 7200RPM SAS Disk, 1 Adet 240G SSD Disk<br />
<br />
root@ceph1:/home/ubuntu# lshw -short -C disk<br />
H/W path Device Class Description<br />
============================================================<br />
/0/100/4/0/0/0/2.0.0 /dev/sda disk 499GB PERC H700<br />
/0/100/4/0/0/0/2.1.0 /dev/sdb disk 499GB PERC H700<br />
/0/100/4/0/0/0/2.2.0 /dev/sdc disk 499GB PERC H700<br />
/0/100/4/0/0/0/2.3.0 /dev/sdd disk 499GB PERC H700<br />
/0/100/4/0/0/0/2.4.0 /dev/sde disk 239GB PERC H700<br />
/0/100/4/0/0/0/2.5.0 /dev/sdf disk 499GB PERC H700<br />
<br />
* 4 Adet 1Gbps Ethernet kartı<br />
<br />
root@ceph1:/home/ubuntu# lshw -short -C network<br />
H/W path Device Class Description<br />
============================================================<br />
/0/100/2/0 em1 network NetXtreme II BCM5709 Gigabit Ethernet<br />
/0/100/2/0.1 em2 network NetXtreme II BCM5709 Gigabit Ethernet <br />
/0/100/3/0 em3 network NetXtreme II BCM5709 Gigabit Ethernet<br />
/0/100/3/0.1 em4 network NetXtreme II BCM5709 Gigabit Ethernet<br />
<br />
Sunucu bağlantıları için ilk olarak 1Gbps arayüz ile Juniper EX4300 Anaharalama cihaz ile yapıldı. Daha sonra Intel 82599 chiptetli 10Gbps ethernet kartları takılarak Cluster ağı 10Gbps olarak bağlandı.<br />
<br />
== Test Sistemi Bağlantı Şeması ==<br />
[[Dosya:Network_conf.png|büyükresim]]<br />
<br />
== İşletim Sistemi Yapılandırması ==<br />
=== İşletim Sistemi Sürümü ===<br />
İşletim sistemi olarak ubuntu MAAS aracılığı ile ubuntu-14.04 kuruldu. Ubuntu 14.04 ile gelen 3.13.0-48 çekirdeği 3.15 ve üzeri çekirdekler ile gelen xfs dosya sistemindeki değişikleri (boş olan inode’latın takibi için btree desteği) içermediğinden işletim sistemi çekirdeği<br />
<br />
apt-get -y install linux-image-generic-lts-utopic<br />
<br />
komutu ile 3.16.0-33 olarak güncellendi.<br />
<br />
=== /etc/hosts Dosyasının Düzenlenmesi ===<br />
Sunucuların birbirinden haberdar olması için /etc/hosts dosyasına sunucu bilgileri eklendi.<br />
<br />
172.16.3.3 ceph1<br />
172.16.3.10 ceph2<br />
172.16.3.11 ceph3<br />
172.16.3.12 ceph4<br />
172.16.3.13 ceph5<br />
172.16.3.14 cephm<br />
<br />
=== NTP ile Saat Senkronizasyonu ===<br />
Sunucuların saatlerinin senkronize edilmesi için sisteme ntp sunucu kurup gerekli yapılandırma gerçekleştirildi.<br />
<br />
=== /etc/security/limits.conf Dosyası Dosya Açma Limitlerinin Arttırılması ===<br />
Kullanıcıların açabileceği maksimum dosya tanımlayıcısı (file descriptor) sayısını /etc/security/limits.conf dosyasına aşağıdaki satırları ekleyerek arttırıyoruz.<br />
<br />
soft nofile 65000<br />
hard nofile 65000<br />
<br />
=== SSD Diskler İçin I/0 Scheduler ve Rotation Değerlerinin Değiştirilmesi ===<br />
SSD disklerin scheduler’i atanmış değerinden SSD diskler için daha uygun olan noop’a değiştirmek için: (SSD disk sde)<br />
<br />
echo noop > /sys/block/sde/queue/scheduler<br />
<br />
yazmak yeterli. SSD diskler klasik diskler gibi dönen hareketli parçalardan oluşmadığı için SSD diskleri kullanan işletim sistemlerinin I/O operasyonlarını bu durumu göz önüne alarak gerçekleştirmeleri gerekiyor. Bu nedenle SSD disklerin rotation değeri 0 olmalı. Mevcut durumu görmek için:<br />
<br />
root@ceph1:/home/ceph# cat /sys/block/sde/queue/rotational<br />
1<br />
<br />
komutunu kullandığımızda değerin 1 olduğunu görüyoruz. Normalde işletim sisteminin diskin SSD olduğunu anlayıp bu değer 0 yapmasını bekliyoruz. Manüel olarak 0 yapmak için:<br />
<br />
echo "1" > /sys/block/sde/queue/rotational<br />
<br />
=== Disk read_ahead değerinin Arttırılması ===<br />
Disklerin atanmış değerleri olan 128, 2048 olarak değiştirildi. Mevcut değeri görmek için:<br />
root@ceph1:/home/ceph# cat /sys/block/sde/queue/read_ahead_kb<br />
128<br />
<br />
Yeni değerin atanması:<br />
<br />
root@ceph1:/home/ceph# echo 2084 > /sys/block/sde/queue/read_ahead_kb<br />
root@ceph1:/home/ceph# cat /sys/block/sde/queue/read_ahead_kb<br />
2084<br />
<br />
OSD diskleri için değerleri açılışta geçerli kılmak için aşağıdaki satırları /etc/rc.local dosyasına ekleyebilirsiniz.<br />
<br />
echo 2084 > /sys/block/sdb/queue/read_ahead_kb<br />
echo 2084 > /sys/block/sdc/queue/read_ahead_kb<br />
echo 2084 > /sys/block/sdd/queue/read_ahead_kb<br />
echo 2084 > /sys/block/sde/queue/read_ahead_kb<br />
echo 2084 > /sys/block/sdf/queue/read_ahead_kb<br />
<br />
read_ahead_kb değerinin arttırılması sıralı okuma (sequential read) performansınızı arttıracaktır. I/O örüntünüze göre bu değeri daha arttırarak performans kazanımı sağlayabilirsiniz. Bu değerin arttırılması hafıza kullanımının artmasına neden olacağı için bellek kullanımı üzerinde bir baskı oluşturabilir.<br />
<br />
yazmak yeterli. Açılışta geçerli olması için echo ile başlayan komutları satırı /etc/rc.local’a ekleyebilirsiniz.<br />
<br />
=== Apparmor Yazılımının Kapatılması===<br />
invoke-rc.d apparmor kill<br />
update-rc.d -f apparmor remove<br />
<br />
== XFS Dosya Sistemi Yapılandırması ==<br />
=== Ceph XFS Dosya Sistemi Yapılandırması ===<br />
Ceph’te ext4,btrfs ve xfs dosya sistemi olarak kullanılabiliyor. Btrfs’in henüz production için kullanımı önerilmiyor. Ceph belgelerinde production sistemler için xfs kullanımı önerildiği için kurulumu xfs üzerinden gerçekleştiriyoruz.<br />
Dosya sisteminin ne olacağı, mkfs ve mount opsiyonları ceph.conf dosyasında tanımlanıyor.<br />
<br />
===Dosya Sistemi Yaratılması ===<br />
Disklerin dosya sistemini yaratırken mkfs.xfs programında ilk olarak size=2048 argümanını kullanıyoruz. Bunun nedeni ceph tarafından kullanılan Extended Attributes (XATTRs) daha fazla alan açmak. Size argümanı inode büyüklüğü tanımlamak için kullanılıyor. Atanmış değeri (default) 256 ki buda 256Byte’a karşılık geliyor. 512 Byte inode kullanımında ortalama 350 Byte’lık bir alan xattr kullanımına kalıyor. Bu değeri 2048 yaptığımızda yaklaşık1900 Byte alanı xattr için ayırmış oluyoruz.<br />
<br />
mkfs.xfs programına argüman olarak kullandığımız opsiyonlardan bir diğeri finobt=1. Bu argüman xfs’in boş inode’ların takibini btree algoritması ile yapılmasını sağlıyor. Bu özelliği kullanmak için çekirdek sürümünüzün 3.15 xfsprogs sürümünüzün 3.2 ve üzeri olması gerekiyor.<br />
<br />
Ubuntu 14.04 ile xfsprogs sürümü 3.1.9 olarak geliyor. xfsprogs 3.2 ve üzerinde gelen finobt argümanının kullanabilmek için xfsprogs paketini aşağıdaki komutları kullanarak güncelliyoruz.<br />
<br />
wget -c http://mirrors.kernel.org/ubuntu/pool/main/x/xfsprogs/xfsprogs_3.2.1ubuntu1_amd64.deb<br />
dpkg -i xfsprogs_3.2.1ubuntu1_amd64.deb<br />
<br />
mkfs.xfs programında kullandığımız üçüncü argüman crc=1. Bu argüman xfs’in metadatadaki bozulmaları karcı CRC32 algoritmasını kullanarak denetlemesini sağlıyor. Hepsi bir arada komut sdb diski için dosya sistemi yaratmak istersek:<br />
<br />
mkfs.xfs -m crc=1,finobt=1 -f -i size=2048 /dev/sdb<br />
halini alıyor.<br />
<br />
=== Dosya Sistemi Mount Opsiyonları ===<br />
Örnek olarak verdiğimizi sdb diskinin fstab’a eklemek için:<br />
<br />
/dev/sdb /disk1 xfs rw,noatime,inode64,logbsize=256k,delaylog 0 1<br />
<br />
Kullandığımız mount opsiyonları açıklamaları:<br />
noatime: Dosya sisteminin en son erişim zamanı bilgisini tutmaması için<br />
inode64: 1TByte üzeri disklerde kullanılması önerilen ve inode’ların 64 bit olarak tanımlanması<br />
logbsize=256k : Çok fazla okuma yazma yapan dosya sistemleri için artırılması öneriliyor. Atanmış değeri 32k<br />
delaylog: Metadata bilgisinin bellekte mümkün olduğunca tutulup yapılan I/O miktarını azaltan bir opsiyon.<br />
Ceph’te dosya sistemini yaratılırken hangi opsiyonların kullanılacağını ceph.conf’ta [osd] başlığı altında tanımlıyoruz. Elle mkfs yapmanıza yada mount etmenize gerek yok.<br />
<br />
[osd]<br />
osd mkfs type = xfs<br />
osd mkfs options xfs = -m crc=1,finobt=1 -f -i size=2048<br />
osd mount options xfs = rw,noatime,inode64,logbsize=256k,delaylog<br />
<br />
== Ceph Yazılımı Kurulumu ==<br />
İlk olarak tüm sunucularda ceph kullanıcısını açıyoruz.<br />
<br />
root# useradd -d /home/ceph -m ceph<br />
root# apt-get install sudo<br />
root# echo "ceph ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/ceph<br />
root# chmod 0440 /etc/sudoers.d/ceph<br />
<br />
Ceph monitor sunucusunda (cephm) ssh anahtarlarını yaratıyoruz:<br />
<br />
ceph@cephm: ssh-keygen -t dsa<br />
<br />
Yarattığımız ssh anahtarlarını ceph depolama sunucularına (ceph1,ceph2,ceph3,ceph4,ceph5) kopyalıyoruz:<br />
<br />
ceph@cephm: ssh-copy-id -i .ssh/id_dsa.pub ceph@ceph1<br />
ceph@cephm: ssh-copy-id -i .ssh/id_dsa.pub ceph@ceph2<br />
ceph@cephm: ssh-copy-id -i .ssh/id_dsa.pub ceph@ceph3<br />
ceph@cephm: ssh-copy-id -i .ssh/id_dsa.pub ceph@ceph4<br />
ceph@cephm: ssh-copy-id -i .ssh/id_dsa.pub ceph@ceph5<br />
<br />
Tüm sunucularda Ceph reposunu ekleyip ceph’i kuruyoruz:<br />
<br />
root# wget -q -O- 'https://ceph.com/git/?p=ceph.git;a=blob_plain;f=keys/release.asc' | sudo apt-key add -<br />
root# echo deb http://ceph.com/debian-giant/trusty main | sudo tee /etc/apt/sources.list.d/ceph.list<br />
root# apt-get update<br />
root# apt-get install ceph-deploy<br />
<br />
Cephm sunucusunda ceph kullanıcısı ile aşağıdaki komutları çalıştırıyoruz. İlk olarak config isimli bir dizin yaratıp yaptığımız yapılandırmalarının bu dizin altında yer almasını sağlayalım.<br />
<br />
mkdir config<br />
cd config<br />
<br />
ceph-deploy ile ilk sunucumuz olan monitor sunucusunu tanımlayalım.<br />
<br />
ceph-deploy new cephm<br />
<br />
Bu komuttan sonra bulunduğunuz dizinin içinde ceph.mon.keyring dosyası ile ceph.conf dosyasının oluşmuş olması gerekiyor. ceph.conf dosyasına [global] tanımı altına aşağıdaki satırları ekliyoruz:<br />
<br />
#20 disk x 100 / 3 replica = 666<br />
osd pool default pg num = 666<br />
osd pool default pgp num = 666<br />
osd pool default size = 3<br />
public network = 172.16.3.0/16<br />
cluster network = 10.10.10.0/24<br />
<br />
[osd] kısmı altında xfs dosya sistemi yaratılırken ve mount edilirken geçerli olacak argümanları tanımlıyoruz.<br />
<br />
osd mkfs type = xfs<br />
osd mkfs options xfs = -m crc=1,finobt=1 -f -i size=2048<br />
osd mount options xfs = rw,noatime,inode64,logbsize=256k,delaylog<br />
<br />
ceph.conf dosyamızın son hali aşağıdaki şekilde:<br />
<br />
[global]<br />
fsid = 12bee812-a843-4103-9321-febe8c5108e6<br />
mon_initial_members = cephm<br />
mon_host = 172.16.3.14<br />
auth_cluster_required = cephx<br />
auth_service_required = cephx<br />
auth_client_required = cephx<br />
filestore_xattr_use_omap = true<br />
#20 disk x 100 / 3 replica = 666<br />
osd pool default pg num = 666<br />
osd pool default pgp num = 666<br />
osd pool default size = 3<br />
public network = 172.16.3.0/16<br />
cluster network = 10.10.10.0/24<br />
[osd]<br />
osd mkfs type = xfs<br />
osd mkfs options xfs = -m crc=1,finobt=1 -f -i size=2048<br />
osd mount options xfs = rw,noatime,inode64,logbsize=256k,delaylog<br />
<br />
Bu aşamdan sonra ceph-deploy ile sunucuların kurulumlarını ve monitör sunucusu tanımlarını yapıyoruz:<br />
<br />
ceph-deploy install cephm ceph1 ceph2 ceph3 ceph4 ceph5<br />
ceph-deploy mon create-initial<br />
<br />
Bundan sonraki aşamada sunucular üzerinde osd için kullanacağımız diskleri hazırlıyoruz. Zap kumutu disklerde bulunan partition vs bilgisini siliyor. osd prepare’ ile disklerin ceph için hazırlanma işlemleri gerçekleştiriliyor. /dev/sde diski journal için kullanılacak olan SSD diski. Bu nedenle osd prepare komutunda hazırlancak diskten sonra araya : koyararak ekliyoruz.<br />
<br />
ceph-deploy disk zap ceph1:sdb ceph1:sdc ceph1:sdd ceph1:sde ceph1:sdf<br />
ceph-deploy osd prepare ceph1:sdb:/dev/sde<br />
ceph-deploy osd prepare ceph1:sdc:/dev/sde<br />
ceph-deploy osd prepare ceph1:sdd:/dev/sde<br />
ceph-deploy osd prepare ceph1:sdf:/dev/sde<br />
<br />
ceph-deploy disk zap ceph2:sdb ceph2:sdc ceph2:sdd ceph2:sde ceph2:sdf<br />
ceph-deploy osd prepare ceph2:sdb:/dev/sde<br />
ceph-deploy osd prepare ceph2:sdc:/dev/sde<br />
ceph-deploy osd prepare ceph2:sdd:/dev/sde<br />
ceph-deploy osd prepare ceph2:sdf:/dev/sde<br />
<br />
ceph-deploy disk zap ceph3:sdb ceph3:sdc ceph3:sdd ceph3:sde ceph3:sdf<br />
ceph-deploy osd prepare ceph3:sdb:/dev/sde<br />
ceph-deploy osd prepare ceph3:sdc:/dev/sde<br />
ceph-deploy osd prepare ceph3:sdd:/dev/sde<br />
ceph-deploy osd prepare ceph3:sdf:/dev/sde<br />
<br />
ceph-deploy disk zap ceph4:sdb ceph4:sdc ceph4:sdd ceph4:sde ceph4:sdf<br />
ceph-deploy osd prepare ceph4:sdb:/dev/sde<br />
ceph-deploy osd prepare ceph4:sdc:/dev/sde<br />
ceph-deploy osd prepare ceph4:sdd:/dev/sde<br />
ceph-deploy osd prepare ceph4:sdf:/dev/sde<br />
<br />
ceph-deploy disk zap ceph5:sdb ceph5:sdc ceph5:sdd ceph5:sde ceph5:sdf<br />
ceph-deploy osd prepare ceph5:sdb:/dev/sde<br />
ceph-deploy osd prepare ceph5:sdc:/dev/sde<br />
ceph-deploy osd prepare ceph5:sdd:/dev/sde<br />
ceph-deploy osd prepare ceph5:sdf:/dev/sde<br />
<br />
Son olarak admin nodu’u tanımı:<br />
<br />
ceph-deploy admin cephm ceph1 ceph2 ceph3 ceph4 ceph5<br />
sudo chmod +r /etc/ceph/ceph.client.admin.keyring<br />
<br />
Her şey yolunda giderse:<br />
<br />
ceph health<br />
<br />
komutun çıktısı aşağıdaki şekilde olmalı:<br />
HEALTH_OK<br />
<br />
Aşağıdaki hatayı almanız pgs sayısını arttırmanız gerektiği anlamına geliyor:<br />
<br />
HEALTH_WARN too few pgs per osd (3 < min 20)<br />
<br />
Sayıyı arttırmak için aşağıdaki komutu kullanabilirsiniz.<br />
<br />
ceph osd pool set rbd pgp_num 666<br />
ceph osd pool set rbd pg_num 666<br />
<br />
== Ceph Calamari GUI Kurulumu ==<br />
Calamari Intank tarafınfan ceph’in izlenmesi için geliştirilen bir gui uygulaması. Orjinal kurulum belgesi oldukça karışık, İnternette arama yaparken bulduğum belge üzerinde Ubuntu 14.04 üzerinden calamari kurulumu gerçekleştirdim. Yazıldığı şekilde çalışmadığı için bir kaç ekleme yapmak gerekti. Kurulum için ilk olarak gerekli olan deb paketlerini hazırlamanız gerekiyor. <br />
<br />
=== Calamari Kurulum için Gerekli Paketler ===<br />
echo "deb http://ppa.launchpad.net/saltstack/salt/ubuntu trusty main"<br />
> /etc/apt/sources.list.d/saltstack.list<br />
<br />
wget -q -O- "http://keyserver.ubuntu.com:11371/pks/lookup?op=get&<br />
search=0x4759FA960E27C0A6" | sudo apt-key add -<br />
<br />
apt-get update<br />
apt-get install salt-master salt-minion salt-syndic<br />
<br />
echo "deb http://apt.postgresql.org/pub/repos/apt/ trusty-pgdg main" <br />
> /etc/apt/sources.list.d/pgdg.list<br />
<br />
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc<br />
| sudo apt-key add -<br />
<br />
apt-get update && sudo apt-get upgrade<br />
apt-get install -y curl build-essential openssl libssl-dev apache2 <br />
libapache2-mod-wsgi libcairo2 supervisor python-cairo libpq5 <br />
postgresql python-m2crypto python-virtualenv git python-dev swig<br />
libzmq-dev g++ postgresql-9.1 postgresql-server-dev-9.1 libcairo2-dev<br />
python-pip libpq-dev ruby debhelper python-mock python-configobj <br />
cdbs gem ruby1.9.1 ruby1.9.1-dev make devscripts <br />
software-properties-common python-support<br />
<br />
cd ~<br />
git clone https://github.com/joyent/node.git<br />
cd node<br />
git checkout v0.10.10<br />
./configure<br />
make -j4<br />
make install<br />
<br />
mkdir ~/npm<br />
cd ~/npm<br />
wget --no-check-certificate https://npmjs.org/install.sh<br />
sh install.sh<br />
<br />
npm install -g bower<br />
npm install -g coffee-script<br />
npm install -g grunt-cli<br />
npm install -g grunt-legacy-util<br />
npm install -g grunt-legacy-log<br />
npm install -g dateformat<br />
npm install -g eventemitter2<br />
npm install -g glob<br />
npm install -g minimatch<br />
npm install -g findup-sync<br />
npm install -g js-yaml<br />
npm install -g rimraf<br />
npm install -g iconv-lite<br />
npm install -g nopt<br />
npm install -g grunt-lib-contrib<br />
npm install -g uglify-js<br />
npm install -g filesize<br />
npm install -g optipng-bin<br />
npm install -g jpegtran-bin<br />
gem install compass<br />
gem install sass<br />
<br />
=== Calamari Server Kurulumu Paketi Hazırlanması ===<br />
<br />
cd ~<br />
git clone https://github.com/ceph/calamari.git<br />
cd calimari<br />
cd debian<br />
mv source source.old<br />
cd ..<br />
dpkg-buildpackage<br />
<br />
Bu işlemlerden sonra bir alt dizinde aşağıdaki dosyalar oluşacak:<br />
<br />
calamari-server_1.0.0-1_amd64.deb calamari_1.0.0-1.tar.gz<br />
<br />
=== Diamond Kurulumu Paketi Hazırlanması ===<br />
git clone https://github.com/ceph/Diamond.git<br />
cd Diamond<br />
git checkout calamari<br />
dpkg-buildpackage<br />
cd ..<br />
ls diam*<br />
diamond_3.1.0_all.deb diamond_3.1.0_amd64.changes diamond_3.1.0.dsc <br />
diamond_3.1.0.tar.gz<br />
<br />
Tüm işlemler bitinde yaratılan tüm dosyaları bir dizin altına toplayın. Buraya kadar olan derleme kısmı sonunda elinizde bulunması gereken dosyalar:<br />
<br />
ceph@cephm:~/CEPH$ ls -al<br />
total 40176<br />
drwxrwxr-x 2 ceph ceph 4096 Apr 3 07:06 .<br />
drwxr-xr-x 15 ceph ceph 4096 Apr 6 09:20 ..<br />
-rwxr-xr-x 1 root root 23263443 Apr 2 09:14 calamari_1.0.0-1.tar.gz<br />
-rwxr-xr-x 1 root root 319104 Apr 2 14:45 calamari-admin.tar.gz<br />
-rwxr-xr-x 1 root root 563767 Apr 2 14:45 calamari-dashboard.tar.gz<br />
-rwxr-xr-x 1 root root 338871 Apr 2 14:45 calamari-login.tar.gz<br />
-rwxr-xr-x 1 root root 491400 Apr 2 14:45 calamari-manage.tar.gz<br />
-rwxr-xr-x 1 root root 11027912 Apr 2 09:21 calamari-server_1.0.0-1_amd64.deb<br />
-rwxr-xr-x 1 ceph ceph 231674 Apr 2 14:46 diamond_3.1.0_all.deb<br />
-rwxr-xr-x 1 ceph ceph 1123 Apr 2 14:46 diamond_3.1.0_amd64.changes<br />
-rwxr-xr-x 1 ceph ceph 711 Apr 2 14:46 diamond_3.1.0.dsc<br />
-rwxr-xr-x 1 ceph ceph 4874357 Apr 2 14:46 diamond_3.1.0.tar.gz<br />
<br />
=== CALAMARİ Sunucusu Kurulumu ===<br />
Kurulumu cephm sunucusunda yapım. Kurulum için gerekli olan dosyaları /home/ceph/CEPH dizini altında.<br />
<br />
mkdir -p /opt/calamari/webapp/content<br />
cd /opt/calamari/webapp/content/<br />
mkdir dashboard<br />
cd dashboard/<br />
tar -xzvf /home/ceph/CEPH/calamari-dashboard.tar.gz<br />
cd ..<br />
mkdir login<br />
mkdir manage<br />
mkdir admin<br />
cd login<br />
tar -xzvf /home/ceph/CEPH/calamari-login.tar.gz<br />
cd ..<br />
cd manage<br />
tar -xzvf /home/ceph/CEPH/calamari-manage.tar.gz<br />
cd ..<br />
cd admin<br />
tar -xzvf /home/ceph/CEPH/calamari-admin.tar.gz<br />
cd ..<br />
cd /home/ceph/CEPH<br />
<br />
aptitute install python-twisted python-txamqp python-greenlet <br />
python-sqlalchemy python-gevent<br />
<br />
dpkg -i ./calamari-server_1.0.0-1_amd64.deb<br />
<br />
En son komutun çıktısı:<br />
<br />
root@cephm:/home/ceph/CEPH# dpkg -i ./calamari-server_1.0.0-1_amd64.deb<br />
(Reading database ... 100135 files and directories currently installed.)<br />
Preparing to unpack .../calamari-server_1.0.0-1_amd64.deb ...<br />
Unpacking calamari-server (1.0.0-1) over (1.0.0-1) ...<br />
Setting up calamari-server (1.0.0-1) ...<br />
ERROR: Module version does not exist!<br />
salt-master stop/waiting<br />
salt-master: no process found<br />
salt-master start/running, process 52801<br />
Stopping supervisor: supervisord.<br />
Starting supervisor: supervisord.<br />
* Stopping web server apache2 *<br />
* Starting web server apache2 *<br />
Thank you for installing Calamari.<br />
<br />
Please run 'sudo calamari-ctl initialize' to complete the installation.<br />
<br />
Diamond paketini de kuruyoruz:<br />
<br />
dpkg -i ./diamond_3.1.0_all.deb<br />
<br />
Salt Minion paketini kurup gerekli ayarları yapıyoruz:<br />
<br />
apt-get install salt-minion<br />
<br />
/etc/salt/minion dosyasında master ile başlayan tanıma sunucu kurulumunun yaptığımız sunucunun ismini yazıyoruz:<br />
<br />
master: cephm<br />
<br />
diamond ve salt-minion servislerini restart ediyoruz.<br />
<br />
service diamond restart<br />
service salt-minion restart<br />
<br />
En son olarak sunucu tarafından calamari programının başlatılması için gerekli komutu yazıyoruz. Bu aşamada size web arayüzü için kullanıcı adı ve parola soracak.<br />
<br />
calamari-ctl initialize<br />
<br />
=== CALAMARİ İstemcileri Kurulumu ===<br />
ceph1,ceph2,ceph3,ceph4,ceph5 sunucularına istemci kurulumlarını yapıyoruz.<br />
<br />
<br />
aptitude install python-support<br />
dpkg -i ./diamond_3.1.0_all.deb<br />
cd /etc/diamond/<br />
cp diamond.conf.example diamond.conf<br />
apt-get -y install salt-minion<br />
<br />
/etc/salt/minion dosyasında master ile başlayan tanıma sunucu kurulumunun yaptığımız sunucunun ismini yazıyoruz.<br />
<br />
master: cephm<br />
<br />
diamond ve salt-minion servislerini restart ediyoruz.<br />
<br />
service diamond restart<br />
service salt-minion restart<br />
<br />
İstemcilerde salt-minion’u restart ettikten 30sn-1dk içinde sunucu web arayüzünde istemci adı ile birlikte calamari için register edilmeye hazır olarak gözüküyorlar. Ekran görüntüsünü aşağıda:<br />
[[Dosya:Calamari_installation.png|büyükresim]]</div>
Admin
http://bulutwiki.ulakbim.gov.tr/index.php/Donan%C4%B1m_Altyap%C4%B1s%C4%B1
Donanım Altyapısı
2018-09-20T11:30:22Z
<p>Admin: </p>
<hr />
<div>=Sunucular=<br />
==2 adet Intel(R) Xeon(R) CPU E5-2630 v4 @ 2.20GHz İşlemci==<br />
==Bellek (128G)==<br />
RAM: 131920300<br />
vendor: American Megatrends Inc.<br />
product: HMA84GR7AFR4N-UH<br />
vendor: SK Hynix<br />
size: 31GiB<br />
clock: 2400MHz (0.4ns)<br />
product: HMA84GR7AFR4N-UH<br />
vendor: SK Hynix<br />
size: 31GiB<br />
clock: 2400MHz (0.4ns)<br />
product: HMA84GR7AFR4N-UH<br />
vendor: SK Hynix<br />
size: 31GiB<br />
clock: 2400MHz (0.4ns)<br />
product: HMA84GR7AFR4N-UH<br />
vendor: SK Hynix<br />
size: 31GiB<br />
clock: 2400MHz (0.4ns)<br />
== 1 Adet Raid Denetleyici MR 9260-8i (İşletim Sistemi Disklerini RAID-1 yapılandırması için) == <br />
== 1 Adet SAS Denetleyicisi (12 Adet Depolama disklerinin yapılandırması için)==<br />
product: SAS3008 PCI-Express Fusion-MPT SAS-3<br />
vendor: LSI Logic / Symbios Logic<br />
<br />
== 12 Adet 8TByte NLSAS Disk ==<br />
Product: ST8000NM0075<br />
Revision: E003<br />
<br />
==2 Adet 120G SSD Disk (İşletim Sistemi Kurlumu için)==<br />
==NVMe Disk (1 Adet 400G Intel PC3700)==<br />
Node SN Model Namespace Usage Format FW Rev <br />
---------------- -------------------- ---------------------------------------- --------- -------------------------- ---------------- --------<br />
/dev/nvme0n1 CVFT738300PT400BGN INTEL SSDPEDMD400G4 1 400.09 GB / 400.09 GB 512 B + 0 B 8DV10171<br />
== 1 Adet 2 Portlu Intel X520 Ethernet Kartı (SFP+) ==<br />
description: Ethernet interface<br />
product: Ethernet 10G 2P X520 Adapter<br />
vendor: Intel Corporation<br />
<br />
== 2 Adet 10G Intel X540 On Board Ethernet Portu (10GBase-T) ==<br />
description: Ethernet interface<br />
product: Ethernet Controller 10-Gigabit X540-AT2<br />
vendor: Intel Corporation<br />
<br />
==1 Adet 2 Portlu Mellanox ConnectX4 40GbpsEthernet Kartı==<br />
description: Ethernet interface<br />
product: MT27700 Family [ConnectX-4]<br />
vendor: Mellanox Technologies</div>
Admin
http://bulutwiki.ulakbim.gov.tr/index.php/%C4%B0hale_%C5%9Eartnamesi
İhale Şartnamesi
2018-09-20T11:07:16Z
<p>Admin: </p>
<hr />
<div>2017 yılında alımı tamamlanan ve daha çok FileStore mimari için tasarımı yapılan şartname ektedir.<br />
*[[File:CephSartame2017.pdf]]</div>
Admin
http://bulutwiki.ulakbim.gov.tr/index.php/CEPH_Performans_Optimizasyonu
CEPH Performans Optimizasyonu
2018-08-07T09:18:16Z
<p>Admin: </p>
<hr />
<div>==Sürücülerin Güncellemesi==<br />
==Anahtarlama Cihazı Jumbo frame açılması ve flow control kapatılması ==<br />
==Miniumum Rezerve Bellek Değerinin Değiştirilmesi==<br />
/etc/sysctl.conf altına OSD'lerin anlık bellek ihtiyacının karşılanması için yeterli bellek bırakılması için gerekli yapılandırma.<br />
128G bellek için değer:<br />
<br />
vm.min_free_kbytes = 2097152<br />
https://access.redhat.com/documentation/en-us/red_hat_ceph_storage/2/html/ceph_object_gateway_for_production/deploying_a_cluster<br />
<br />
<br />
==TCMalloc Değerinin Değiştirilmesi==<br />
<br />
ceph.conf<br />
Increasing the TCMalloc thread cache to 128M can improve performance 4-5x. It would be great to have a way of setting the TCMalloc thread cache to 128M, instead of the default 32M. <br />
<br />
TCMALLOC_MAX_TOTAL_THREAD_CACHE_BYTES=134217728<br />
ceph-deploy --overwrite-conf admin zula209 zula210 zula211 zula212 <br />
ceph tell osd.* heap stats<br />
ceph tell osd.* heap release<br />
<br />
==OSD lern CPU core map Edilmesi==<br />
root@zula201:~# numactl --hardware<br />
available: 2 nodes (0-1)<br />
node 0 cpus: 0 1 2 3 4 5 6 7 8 9 20 21 22 23 24 25 26 27 28 29<br />
node 0 size: 64320 MB<br />
node 0 free: 63198 MB<br />
node 1 cpus: 10 11 12 13 14 15 16 17 18 19 30 31 32 33 34 35 36 37 38 39<br />
node 1 size: 64508 MB<br />
node 1 free: 62399 MB<br />
node distances:<br />
node 0 1 <br />
0: 10 21 <br />
1: 21 10 <br />
<br />
===Nvme SSD ===<br />
84:00.0 Non-Volatile memory controller: Intel Corporation PCIe Data Center SSD (rev 01) (prog-if 02 [NVM Express])<br />
Subsystem: Intel Corporation DC P3700 SSD<br />
Physical Slot: 2<br />
Flags: bus master, fast devsel, latency 0, IRQ 47<br />
Memory at fbd10000 (64-bit, non-prefetchable) [size=16K]<br />
Expansion ROM at fbd00000 [disabled] [size=64K]<br />
<br />
root@zula201:/sys/devices/pci0000:80/0000:80:02.2/0000:84:00.0# cat numa_node <br />
'''1'''<br />
===10G Ethernet===<br />
86:00.0 Ethernet controller: Intel Corporation Ethernet 10G 2P X520 Adapter (rev 01)<br />
Subsystem: Intel Corporation 10GbE 2P X520 Adapter<br />
Physical Slot: 4<br />
Flags: bus master, fast devsel, latency 0, IRQ 208<br />
Memory at fb980000 (64-bit, non-prefetchable) [size=512K]<br />
I/O ports at e020 [size=32]<br />
Memory at fba04000 (64-bit, non-prefetchable) [size=16K]<br />
<br />
root@zula201:/sys/devices/pci0000:80/0000:80:03.2/0000:86:00.0# cat numa_node <br />
'''1'''<br />
<br />
86:00.1 Ethernet controller: Intel Corporation Ethernet 10G 2P X520 Adapter (rev 01)<br />
Subsystem: Intel Corporation 10GbE 2P X520 Adapter<br />
Physical Slot: 4<br />
Flags: bus master, fast devsel, latency 0, IRQ 250<br />
Memory at fb880000 (64-bit, non-prefetchable) [size=512K]<br />
<br />
root@zula201:/sys/devices/pci0000:80/0000:80:03.2/0000:86:00.1# cat numa_node <br />
'''1'''<br />
<br />
===40G Ethernet===<br />
83:00.0 Ethernet controller: Mellanox Technologies MT27700 Family [ConnectX-4]<br />
Subsystem: Mellanox Technologies MT27700 Family [ConnectX-4]<br />
Physical Slot: 1-1<br />
Flags: bus master, fast devsel, latency 0, IRQ 40<br />
Memory at ca000000 (64-bit, prefetchable) [size=32M]<br />
Expansion ROM at fbc00000 [disabled] [size=1M]<br />
<br />
root@zula201:/sys/devices/pci0000:80/0000:80:02.0/0000:83:00.0# cat numa_node <br />
'''1'''<br />
<br />
83:00.1 Ethernet controller: Mellanox Technologies MT27700 Family [ConnectX-4]<br />
Subsystem: Mellanox Technologies MT27700 Family [ConnectX-4]<br />
Physical Slot: 1-1<br />
Flags: bus master, fast devsel, latency 0, IRQ 295<br />
Memory at cc000000 (64-bit, prefetchable) [size=32M]<br />
Expansion ROM at fbb00000 [disabled] [size=1M]<br />
root@zula201:/sys/devices/pci0000:80/0000:80:02.0/0000:83:00.1# cat numa_node <br />
'''1'''<br />
<br />
===Root Disk Controller===<br />
82:00.0 RAID bus controller: LSI Logic / Symbios Logic MegaRAID SAS 2108 [Liberator] (rev 05)<br />
Subsystem: LSI Logic / Symbios Logic MegaRAID SAS 9260-8i<br />
Physical Slot: 1<br />
Flags: bus master, fast devsel, latency 0, IRQ 38<br />
I/O ports at f000 [size=256]<br />
Memory at fbe60000 (64-bit, non-prefetchable) [size=16K]<br />
Memory at fbe00000 (64-bit, non-prefetchable) [size=256K]<br />
root@zula201:/sys/devices/pci0000:80/0000:80:02.0# cat numa_node <br />
'''1'''<br />
<br />
===Veri Disk Denetleyicisi===<br />
03:00.0 Serial Attached SCSI controller: LSI Logic / Symbios Logic SAS3008 PCI-Express Fusion-MPT SAS-3 (rev 02)<br />
Subsystem: Super Micro Computer Inc SAS3008 PCI-Express Fusion-MPT SAS-3<br />
Physical Slot: 3<br />
Flags: bus master, fast devsel, latency 0, IRQ 52<br />
I/O ports at 2000 [size=256]<br />
Memory at c7240000 (64-bit, non-prefetchable) [size=64K]<br />
Memory at c7200000 (64-bit, non-prefetchable) [size=256K]<br />
Expansion ROM at c7100000 [disabled] [size=1M]<br />
<br />
root@zula201:/sys/devices/pci0000:00/0000:00:03.0# cat numa_node <br />
'''0'''<br />
<br />
root@zula201:~# lspci -s 03:00.0<br />
03:00.0 Serial Attached SCSI controller: LSI Logic / Symbios Logic SAS3008 PCI-Express Fusion-MPT SAS-3 (rev 02)<br />
<br />
<br />
<br />
<br />
Ref:<br />
*Designing for High Performance Ceph at Scale https://www.youtube.com/watch?v=P6SCdZXpM2Q<br />
*https://access.redhat.com/documentation/en-us/red_hat_ceph_storage/3/pdf/configuration_guide/Red_Hat_Ceph_Storage-3-Configuration_Guide-en-US.pdf<br />
*https://access.redhat.com/documentation/en-us/red_hat_ceph_storage/3/pdf/installation_guide_for_red_hat_enterprise_linux/Red_Hat_Ceph_Storage-3-Installation_Guide_for_Red_Hat_Enterprise_Linux-en-US.pdf<br />
<br />
*https://events.static.linuxfound.org/sites/events/files/eeus13_shelton.pdf<br />
*http://www.ksingh.co.in/blog/2016/09/08/working-with-numa-cpu-pinning/</div>
Admin
http://bulutwiki.ulakbim.gov.tr/index.php/HDD_ve_SSD_%C3%BCzerinde_ayr%C4%B1_pool_olu%C5%9Fturma
HDD ve SSD üzerinde ayrı pool oluşturma
2018-06-26T13:42:43Z
<p>Admin: "nvme ve hdd diskleri, CRUSH map ile siniflara ayrilarak farkli bir pool olusturulabilir. Once diger cihazlarda oldugu gibi disk cihazlarini olusturmak gerekir..." içeriğiyle yeni sayfa oluşturdu</p>
<hr />
<div>nvme ve hdd diskleri, CRUSH map ile siniflara ayrilarak farkli bir pool olusturulabilir. Once diger cihazlarda oldugu gibi disk cihazlarini olusturmak gerekir.<br />
<br />
ceph-deploy --overwrite-conf osd create zula209 --data /dev/nvme0n1<br />
ceph-deploy --overwrite-conf osd create zula210 --data /dev/nvme0n1<br />
ceph-deploy --overwrite-conf osd create zula211 --data /dev/nvme0n1<br />
ceph-deploy --overwrite-conf osd create zula212 --data /dev/nvme0n1<br />
<br />
ceph osd tree ile osd'lere baktigimizda linux kernel tarafindan otomatik olarak hdd ve ssd olarak 2'ye ayrilmis durumdadir. Eger otomatik siniflari duzgun sekilde yapilmadiysa bu durumda asagidaki komutlar kullanilabilir.<br />
<br />
ceph osd crush rm-device-class osd.48 osd.49 osd.50 osd.51<br />
ceph osd crush set-device-class ssd osd.48 osd.49 osd.50 osd.51<br />
<br />
ID CLASS WEIGHT TYPE NAME STATUS REWEIGHT PRI-AFF <br />
-1 350.77026 root default <br />
.....<br />
.....<br />
-9 87.69257 host zula212 <br />
36 hdd 7.27739 osd.36 up 1.00000 1.00000 <br />
37 hdd 7.27739 osd.37 up 1.00000 1.00000 <br />
....<br />
....<br />
51 ssd 0.36389 osd.51 up 1.00000 1.00000 <br />
<br />
Benzer sekilde asagidaki komutlarla da osd'lerin ait oldugu siniflar kontrol edilebilir.<br />
<br />
ceph osd crush class ls<br />
[<br />
"hdd",<br />
"ssd"<br />
]<br />
<br />
ceph osd crush class ls-osd ssd<br />
48<br />
49<br />
50<br />
51<br />
<br />
SSD disklerle yuksek performans alabilecegimiz ayri bir pool olusturmak icin CRUSH rule olusturmamiz gerekmektedir. Bunun icin asagidaki komut kullanilabilir.Erasure code kurallari bundan farkli sekilde tanimlanir.<br />
ceph osd crush rule create-replicated fast default host ssd<br />
<br />
block depolama icin iki tane rbd pool olusturulur.<br />
ceph osd pool create rbdssd 128 128<br />
ceph osd pool create rbdhdd 128 128<br />
<br />
Son asamada bu pool'lar crush rule ile map edilerek sadece o osd'lerin kullanilmasi saglanir.<br />
ceph osd crush rule list<br />
replicated_rule<br />
fast<br />
<br />
fast kurali ssd diskler icin olusturulmustu, replicated_rule ise hali hazirda default kurulumda ayarlanmis kural seti idi. ssd pool icin fast kural seti ayarlanir. <br />
ceph osd pool set rbdssd crush_rule fast<br />
ceph osd pool set rbdhdd crush_rule replicated_rule<br />
<br />
Böylece rbdssd olarak ayarlanan pool üzerindeki işlemler her bir osd host üzerinde yer alan nmve ssd ler üzerinde yapılacaktır. rbdhdd pool üzerinde yapılan işlemler ise her bir sunucuda yer alan 12 adet SATA disk üzerinde yapılacaktır. Dolayısıyla her birinin performansı birbirinden farklı olarak çıkacaktır. Bu pool lar üzerinde provizyonlama farklı projelerin ihtiyaçları doğrultusunda artık yapılabilir. Ayrıca her bir pool üzerinde replika sayısı vb işlemlerde problem domaine göre ayarlanıp farklı servisler sunulabilir.</div>
Admin
http://bulutwiki.ulakbim.gov.tr/index.php/Y%C3%B6netim_Dashboard_(OpenAttic)
Yönetim Dashboard (OpenAttic)
2018-06-26T13:36:46Z
<p>Admin: </p>
<hr />
<div>openATTIC tabanli CEPH Dashboard kurulumu icin asagidaki link takip edilir. <br />
<br />
http://docs.ceph.com/docs/mimic/mgr/dashboard/<br />
<br />
[[Dosya:Openattic dashboard.png|büyükresim]]<br />
<br />
Ozetle sunlar calistirilir.<br />
<br />
* ceph.conf dosyasi sonuna eklenir.<br />
[mon]<br />
mgr initial modules = dashboard<br />
<br />
* ceph-deploy --overwrite-conf admin zula209 komutu calistirilir. Böylece zula209 hostu üzerinde gerekli yetkilendirme işlemi yapılmış olur.<br />
<br />
* Sırasıyla aşağıdaki komutlar çalıştırılır.<br />
ceph mgr module enable dashboard<br />
<br />
# sertifika işlemleri için<br />
ceph dashboard create-self-signed-cert<br />
openssl req -new -nodes -x509 -subj "/O=TR/CN=ceph-mgr-dashboard" -days 365 -keyout dashboard.key -out dashboard.crt -extensions v3_ca<br />
ceph config-key set mgr mgr/dashboard/crt -i dashboard.crt<br />
ceph config-key set mgr mgr/dashboard/key -i dashboard.key<br />
ceph config-key set mgr/dashboard/zula209/crt -i dashboard.crt<br />
ceph config-key set mgr/dashboard/zula209/key -i dashboard.key<br />
<br />
* servisler yeniden başlatılır.<br />
ceph mgr module disable dashboard<br />
ceph mgr module enable dashboard<br />
<br />
* Disaridan erisebilmek icin dashboard arayuzu 172'li ip ye tasindi. Bunun icin<br />
ceph config set mgr mgr/dashboard/server_addr 172.16.2.209<br />
ceph config set mgr mgr/dashboard/server_port 8443<br />
<br />
ceph config set mgr mgr/dashboard/zula209/server_addr 172.16.2.209<br />
ceph config set mgr mgr/dashboard/zula209/server_port 8443<br />
<br />
* kullanici adi ve sifre olusturmak icin<br />
ceph dashboard set-login-credentials admin <password><br />
<br />
'''netstat -tnap|grep LISTEN|grep ceph-mgr''' komutu ile hangi ip, hangi port uzerinde calistigi gorulur. Son olarak object gateway uzerinden sistem bilgilerini okuyabilmesi icin system tagi ile kullanici olusturulur.<br />
<br />
* dashboard üzerinden rados gw gibi işlemlerin yönetimi ve takibi için kullanıcı oluşturulur, access_key ve secret_key not edilir.<br />
radosgw-admin user create --uid=sysgw --display-name='Object Gateway' --system<br />
<br />
ceph dashboard set-rgw-api-access-key <access_key><br />
ceph dashboard set-rgw-api-secret-key <secret_key><br />
<br />
https://172.16.2.209:8443 url i ile dashboard artik erisilebilir.</div>
Admin
http://bulutwiki.ulakbim.gov.tr/index.php/CEPH_Sorunlar%C4%B1_%C3%87%C3%B6zme
CEPH Sorunları Çözme
2018-06-26T12:50:34Z
<p>Admin: </p>
<hr />
<div>===Pool üzerinde herhangi bir uygulamanın aktifleştirilmemesi===<br />
Ö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.<br />
<br />
ceph -w<br />
cluster:<br />
id: b49d69c7-e017-4f9f-b69b-57d3efe7987b<br />
health: HEALTH_WARN<br />
application not enabled on 1 pool(s)<br />
<br />
''' ceph health detail''' komutu ile hatanın detayına bakılabilir.<br />
<br />
HEALTH_WARN application not enabled on 1 pool(s)<br />
POOL_APP_NOT_ENABLED application not enabled on 1 pool(s)<br />
application not enabled on pool 'rbdtest'<br />
use 'ceph osd pool application enable <pool-name> <app-name>', where <app-name> is 'cephfs', 'rbd', 'rgw', or freeform for custom applications.<br />
<br />
aşağıdaki komut ile de sorun çözülür.<br />
ceph osd pool application enable rbdtest rbd<br />
<br />
===Crash Tunable Hatası===<br />
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.<br />
<br />
ceph -s<br />
cluster:<br />
id: b49d69c7-e017-4f9f-b69b-57d3efe7987b<br />
health: HEALTH_WARN<br />
crush map has straw_calc_version=0<br />
<br />
Sorunu çözmek için tekrar tunables set edilir. <br />
<br />
ceph osd crush tunables optimal<br />
===MON Servisi ayakta ancak quourum olarak eklenemiyorsa===<br />
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.<br />
<br />
komut:<br />
ceph-deploy mon create-initial<br />
<br />
hata mesajı:<br />
ceph_deploy.mon][WARNIN] mon.zula210 monitor is not yet in quorum, tries left: 5<br />
[ceph_deploy.mon][WARNIN] waiting 5 seconds before retrying<br />
<br />
ilgili sunucunun monitör servisinin log dosyasında:<br />
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<br />
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<br />
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<br />
<br />
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.<br />
<br />
===OSD Disk çıkartıp tekrar eklemek için===<br />
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.<br />
* https://forum.proxmox.com/threads/ceph-cluster-reinstallation-osds-down.42385/<br />
* http://docs.ceph.com/docs/mimic/rados/operations/add-or-rm-osds/#removing-osds-manual<br />
* https://www.thegeekdiary.com/lvm-error-cant-open-devsdx-exclusively-mounted-filesystem/<br />
<br />
Normalde takip edilmesi gereken komutlar:<br />
ceph osd out 12<br />
systemctl stop ceph-osd@12<br />
ceph osd purge 12 --yes-i-really-mean-it<br />
pvscan<br />
vgremove ceph-e7f8edfa-f6bc-4dee-a93d-e18dbbb8d0dd<br />
ceph osd tree<br />
<br />
Toplu silmek için:<br />
for i in `seq 12 23`; do ceph osd out $i; echo $i; done<br />
for i in `seq 12 23`; do systemctl stop ceph-osd@$i; echo $i; done<br />
for i in `seq 12 23`; do ceph osd purge $i --yes-i-really-mean-it; echo $i; done<br />
for i in `pvscan |grep ceph|awk {'print $4'}`; do vgremove $i; echo $i; done<br />
for i in `pvscan|grep dev|awk {'print $2'}`; do dd if=/dev/zero of=$i bs=1024 count=1; done<br />
<br />
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:<br />
ceph osd out 27<br />
service ceph stop osd.27<br />
ceph osd crush remove osd.27<br />
ceph auth del osd.27<br />
ceph osd rm 27<br />
ceph-disk zap /dev/sde<br />
dd if=/dev/zero of=/dev/sde bs=1024 count=1<br />
umount /var/lib/ceph/osd/ceph-27<br />
rm -rf /var/lib/ceph/osd/ceph-27/<br />
<br />
Son olarak hala çıkartılamamışsa aşağıdaki komutlarla eski kayıt kalınmış mı bakılır.<br />
dmsetup info -C<br />
dmsetup remove ceph--12d0f05f--c185--42c2--9db7--ed28a6a0c926-osd--block--4c3fd1bf--7aec--4b44--8fbf--0da4b23e18b7<br />
toplu silmek için:<br />
for i in `dmsetup info -C|grep ceph|awk {'print $1'}`; do dmsetup remove $i; done<br />
<br />
Böylece artık aşağıdaki komutla yeni bir osd disk eklenebilir.<br />
ceph-deploy --overwrite-conf osd create zula211 --data /dev/sde</div>
Admin