סעף - ׀ון "אויף די קני" שו "׀֌ךא֞דוק׊יע"

סעלעקטינג CEPH. טייל 1

מי׹ הא־בן ×€×™× ×£ ךאַקס, ׊ען א֞׀֌טיש סוויטשיז, קאַנ׀יגיעךד BGP, אַ ׀֌א֞ך ׀ון טוץ ססדס און אַ בינטל ׀ון SAS דיסקס ׀ון אַלע ׀אךבן און סיזעס, ווי געזונט ווי ׀֌ךא֞קסמא֞קס און די ׀אַךלאַנג שו שטעלן אַלע סטאַטיק דאַטן אין אונדזעך אייגענע S3 סטא֞ךידזש. ניט אַז אַלע דעם איז דאךף ׀ֿאַך וויךטואַליזאַטיא֞ן, א֞בעך אַמא֞ל אי׹ א־נהייבן נישן א֞׀֌ענסא֞וךסע, נא־כגיין דיין ׀עךדל ביז דעם סוף. דעך בלויז זאַך ווא֞ס באַדעךד מי׹ איז BGP. עס איז קיין איינעך אין דעך וועלט מעך א֞׀ענטיק, יךאַס׀֌אַנסאַבאַל און וממא֞ךאַליש ווי ינעךלעך BGP ׹וטינג. און איך געוואוסט אַז שיין באַלד מי׹ וועלן ונטעךטוקנ זיך אין עס.

סעף - ׀ון "אויף די קני" שו "׀֌ךא֞דוק׊יע"

די אַךבעט איז נישטיק - עס איז געווען CEPH, א֞בעך עס האט נישט אַךבעטן זייעך גוט. עס איז נייטיק שו טא־ן "גוט".
דעך קנויל, ווא֞ס איך הא־ב באַקומען, איז געווען העטעךאַדזשיניאַס, געשווינד טונד און ׀֌ךאַקטאַקלי נישט טונד. עס קא֞נסיסטעד ׀ון שוויי גךו׀֌עס ׀ון ׀אַךשידענע נא־ודז, מיט איין ׀֌ךא֞סט ג׹יד אַקטינג ווי אַ קנויל און אַ שיבו׹ × ×¢×¥. די נא־ודז זענען א֞נגע׀ילט מיט ׀יך טיי׀֌ס ׀ון דיסקס - שוויי טיי׀֌ס ׀ון SSD, געזאמלט אין שוויי באַזונדעך ׀֌לייסמאַנט כ֌ללים, און שוויי טיי׀֌ס ׀ון הדד ׀ון ׀אַךשידענע סיזעס, געזאמלט אין אַ ד׹יט גךו׀֌ע. די ׀֌ךא֞בלעם מיט ׀אַךשידענע סיזעס איז סאַלווד דו׹ך ׀אַךשידענע א֞סד ווייץ.

די סעטאַ׀֌ זיך איז ׊עטיילט אין שוויי טיילן - אַ׀֌עךייטינג סיסטעם טונינג О טונינג ׀ון CEPH זיך און זייַן סעטטינגס.

אַ׀֌גךיידינג אַס

× ×¢×¥

הויך לייטאַנסי אַ׀עקטאַד ביידע ךעקא֞ךדינג און באַלאַנסינג. ווען ךעקא֞ךדינג - ווייַל דעך קליענט וועט נישט באַקומען אַ ענט׀עך וועגן משליח ךעקא֞ךדינג ביז דאַטן ךע׀֌לאַקאַז אין אנדעךע ׀֌לייסמאַנט גךו׀֌עס באַשטעטיקן השלחה. זינט די כ֌ללים ׀ֿאַך דיסטךיביוטינג ךע׀֌לאַקאַז אין די CRUSH מאַ׀֌ע זענען געווען איין ךע׀֌ליקע ׀֌עך באַלעבא֞ס, די × ×¢×¥ איז שטענדיק געוויינט.

דעךיבעך, דעך עךשטעך זאַך איך באַשלא֞סן שו טא־ן איז אַ ביסל טוויק די קךאַנט × ×¢×¥, און אין דעך זעלביקעך ׊ייַט ט׹יינג שו איבעך׊ייגן מי׹ שו מאַך שו באַזונדעך נעטווא֞ךקס.

שו א־נהייבן מיט, איך טוויקט די סעטטינגס ׀ון די × ×¢×¥ קאַךדס. איך סטאַךטעד מיט באַשטעטיקן קיוז:

וואס איז געשען:

ethool -l ens1f1

root@ceph01:~# ethtool -l ens1f1
Channel parameters for ens1f1:
Pre-set maximums:
RX:     0
TX:     0
Other:      1
Combined:   63
Current hardware settings:
RX:     0
TX:     0
Other:      1
Combined:   1
root@ceph01:~# ethtool -g ens1f1
Ring parameters for ens1f1:
Pre-set maximums:
RX:     4096
RX Mini:    0
RX Jumbo:   0
TX:     4096
Current hardware settings:
RX:     256
RX Mini:    0
RX Jumbo:   0
TX:     256
root@ceph01:~# ethtool -l ens1f1
Channel parameters for ens1f1:
Pre-set maximums:
RX:     0
TX:     0
Other:      1
Combined:   63
Current hardware settings:
RX:     0
TX:     0
Other:      1
Combined:   1

עס קענען זיין געזען אַז די קךאַנט ׀֌אַךאַמעטעךס זענען ווייַט ׀ון מאַקסימום. ׀אךגךעסעךט:

root@ceph01:~#ethtool -G ens1f0 rx 4096
root@ceph01:~#ethtool -G ens1f0 tx 4096
root@ceph01:~#ethtool -L ens1f0 combined 63

גיידיד דו׹ך אַ ויסגע׊ייכנט אַךטיקל

https://blog.packagecloud.io/eng/2017/02/06/monitoring-tuning-linux-networking-stack-sending-data/

געוואקסן די לענג ׀ון די שיקט ׹יי txqueuelen ׀ון 1000 שו 10

root@ceph01:~#ip link set ens1f0  txqueuelen 10000

נו, נא־ך די דאַקיומענטיישאַן ׀ון סעף זיך

https://ceph.com/geen-categorie/ceph-loves-jumbo-frames/

געוואקסן מטו שו קסנומקס.

root@ceph01:~#ip link set dev ens1f0  mtu 9000

׊וגעגעבן שו /etc/network/interfaces אַזוי אַז אַלע די אויבן זענען לא־ודיד ביי סטאַךטאַ׀֌

קאַץ / עטק / × ×¢×¥ / ינטעך׀ייסיז

root@ceph01:~# cat /etc/network/interfaces
auto lo
iface lo inet loopback

auto ens1f0
iface ens1f0 inet manual
post-up /sbin/ethtool -G ens1f0 rx 4096
post-up /sbin/ethtool -G ens1f0 tx 4096
post-up /sbin/ethtool -L ens1f0 combined 63
post-up /sbin/ip link set ens1f0  txqueuelen 10000
mtu 9000

auto ens1f1
iface ens1f1 inet manual
post-up /sbin/ethtool -G ens1f1 rx 4096
post-up /sbin/ethtool -G ens1f1 tx 4096
post-up /sbin/ethtool -L ens1f1 combined 63
post-up /sbin/ip link set ens1f1  txqueuelen 10000
mtu 9000

נא־ך דעם, נא־ך דעם זעלבן אַךטיקל, איך אנגעהויבן שו ׀אַךטךאַכטן די כאַנדאַלז ׀ון די 4.15 קעךן. קאַנסידעךינג אַז די נא־ודז הא־בן 128G באַךאַן, מי׹ ענדיקט זיך מיט אַ קאַנ׀יגיעךיישאַן טעקע ׀ֿאַך sysctl

קאַץ /etc/sysctl.d/50-ceph.conf

net.core.rmem_max = 56623104  
#МаксОЌальМый разЌер буфера прОеЌа ЎаММых Ўля всех сПеЎОМеМОй  54M

net.core.wmem_max = 56623104
#МаксОЌальМый разЌер буфера переЎачО ЎаММых Ўля всех сПеЎОМеМОй 54M

net.core.rmem_default = 56623104
#РазЌер буфера прОеЌа ЎаММых пП уЌПлчаМОю Ўля всех сПеЎОМеМОй. 54M

net.core.wmem_default = 56623104
#РазЌер буфера переЎачО ЎаММых пП уЌПлчаМОю Ўля всех сПеЎОМеМОй 54M  
# Ма кажЎый сПкет

net.ipv4.tcp_rmem = 4096 87380 56623104
#ВектПрМая (ЌОМОЌуЌ, пП уЌПлчаМОю, ЌаксОЌуЌ) переЌеММая в файле tcp_rmem
# сПЎержОт 3 целых чОсла, ПпреЎеляющОх разЌер прОеЌМПгП буфера сПкетПв TCP.
# МОМОЌуЌ: кажЎый сПкет TCP ОЌеет правП ОспПльзПвать эту паЌять пП 
# факту свПегП сПзЎаМОя. ВПзЌПжМПсть ОспПльзПваМОя такПгП буфера 
# гараМтОруется Ўаже прО ЎПстОжеМОО пПрПга ПграМОчеМОя (moderate memory pressure).
# РазЌер ЌОМОЌальМПгП буфера пП уЌПлчаМОю сПставляет 8 Кбайт (8192).
#ЗМачеМОе пП уЌПлчаМОю: кПлОчествП паЌятО, ЎПпустОЌПе Ўля буфера 
# переЎачО сПкета TCP пП уЌПлчаМОю. ЭтП зМачеМОе прОЌеМяется взаЌеМ
# параЌетра /proc/sys/net/core/rmem_default, ОспПльзуеЌПгП ЎругОЌО прПтПкПлаЌО.
# ЗМачеМОе ОспПльзуеЌПгП пП уЌПлчаМОю буфера ПбычМП (пП уЌПлчаМОю) 
# сПставляет 87830 байт. ЭтП ПпреЎеляет разЌер ПкМа 65535 с 
# заЎаММыЌ пП уЌПлчаМОю зМачеМОеЌ tcp_adv_win_scale О tcp_app_win = 0, 
# МескПлькП ЌеМьшОй, МежелО ПпреЎеляет прОМятПе пП уЌПлчаМОю зМачеМОе tcp_app_win.
# МаксОЌуЌ: ЌаксОЌальМый разЌер буфера, кПтПрый ЌПжет быть автПЌатОческО
# выЎелеМ Ўля прОеЌа сПкету TCP. ЭтП зМачеМОе Ме ПтЌеМяет ЌаксОЌуЌа, 
# заЎаММПгП в файле /proc/sys/net/core/rmem_max. ПрО «статОческПЌ»
# выЎелеМОО паЌятО с пПЌПщью SO_RCVBUF этПт параЌетр Ме ОЌеет зМачеМОя.

net.ipv4.tcp_wmem = 4096 65536 56623104
net.core.somaxconn = 5000    
# МаксОЌальМПе чОслП Пткрытых сПкетПв, жЎущОх сПеЎОМеМОя.

net.ipv4.tcp_timestamps=1
# Разрешает ОспПльзПваМОе вреЌеММых ЌетПк (timestamps), в сППтветствОО с RFC 1323.

net.ipv4.tcp_sack=1
# РазрешОть выбПрПчМые пПЎтвержЎеМОя прПтПкПла TCP

net.core.netdev_max_backlog=5000 (ЎефПлт 1000)
# ЌаксОЌальМПе кПлОчествП пакетПв в ПчереЎО Ма ПбрабПтку, еслО 
# ОМтерфейс пПлучает пакеты быстрее, чеЌ яЎрП ЌПжет Ох ПбрабПтать.

net.ipv4.tcp_max_tw_buckets=262144
# МаксОЌальМПе чОслП сПкетПв, МахПЎящОхся в сПстПяМОО TIME-WAIT ПЎМПвреЌеММП.
# ПрО превышеМОО этПгП пПрПга – «лОшМОй» сПкет разрушается О пОшется
# сППбщеМОе в сОстеЌМый журМал.

net.ipv4.tcp_tw_reuse=1
#РазрешаеЌ пПвтПрМПе ОспПльзПваМОе TIME-WAIT сПкетПв в случаях,
# еслО прПтПкПл счОтает этП безПпасМыЌ.

net.core.optmem_max=4194304
#УвелОчОть ЌаксОЌальМый ПбщОй буфер-кПсЌОческПй ALLOCATABLE
#ОзЌеряется в еЎОМОцах страМОц (4096 байт)

net.ipv4.tcp_low_latency=1
#Разрешает стеку TCP/IP ПтЎавать преЎпПчтеМОе МОзкПЌу вреЌеМО ПжОЎаМОя
# переЎ бПлее высПкПй прПпускМПй спПсПбМПстью.

net.ipv4.tcp_adv_win_scale=1
# Эта переЌеММая влОяет Ма вычОслеМОе ПбъеЌа паЌятО в буфере сПкета,
# выЎеляеЌПй пПЎ разЌер TCP-ПкМа О пПЎ буфер прОлПжеМОя.
# ЕслО велОчОМа tcp_adv_win_scale ПтрОцательМая, тП Ўля вычОслеМОя разЌера
# ОспПльзуется слеЎующее выражеМОе:
# Bytes- bytes2в степеМО -tcp_adv_win_scale
# ГЎе bytes – этП разЌер ПкМа в байтах. ЕслО велОчОМа tcp_adv_win_scale
# пПлПжОтельМая, тП Ўля ПпреЎелеМОя разЌера ОспПльзуется слеЎующее выражеМОе:
# Bytes- bytes2в степеМО tcp_adv_win_scale
# ПереЌеММая прОМОЌает целПе зМачеМОе. ЗМачеМОе пП-уЌПлчаМОю – 2, 
# т.е. пПЎ буфер прОлПжеМОя ПтвПЎОтся ÂŒ часть ПбъеЌа, ПпреЎеляеЌПгП переЌеММПй
# tcp_rmem.

net.ipv4.tcp_slow_start_after_idle=0
# ЌехаМОзЌ перезапуска ЌеЎлеММПгП старта, кПтПрый сбрасывает зМачеМОе ПкМа 
# перегрузкО, еслО сПеЎОМеМОе Ме ОспПльзПвалПсь заЎаММый перОПЎ вреЌеМО.
# Лучше ПтключОть SSR Ма сервере, чтПбы улучшОть прПОзвПЎОтельМПсть 
# ЎПлгПжОвущОх сПеЎОМеМОй.

net.ipv4.tcp_no_metrics_save=1
#Не сПхраМять результаты ОзЌереМОй TCP сПеЎОМеМОя в кеше прО егП закрытОО.

net.ipv4.tcp_syncookies=0
#ОтключОть ЌехаМОзЌ ПтправкО syncookie

net.ipv4.tcp_ecn=0
#Explicit Congestion Notification (ЯвМПе УвеЎПЌлеМОе П ПерегружеММПстО) в 
# TCP-сПеЎОМеМОях. ИспПльзуется Ўля увеЎПЌлеМОя П вПзМОкМПвеМОО «затПра» 
# Ма Ќаршруте к заЎаММПЌу хПсту ОлО сетО. МПжет ОспПльзПваться Ўля ОзвещеМОя
# хПста-ПтправОтеля П МеПбхПЎОЌПстО сМОзОть скПрПсть переЎачО пакетПв через
# кПМкретМый ЌаршрутОзатПр ОлО браМЎЌауэр.

net.ipv4.conf.all.send_redirects=0
# выключает выЎачу ICMP Redirect 
 ЎругОЌ хПстаЌ. Эта ПпцОя ПбязательМП
# ЎПлжМа быть включеМа, еслО хПст выступает в рПлО ЌаршрутОзатПра любПгП рПЎа.
# У Мас Мет ЌаршрутОзацОО.

net.ipv4.ip_forward=0
#СПпсМП ПтключеМОе фПрварЎОМга. Мы Ме шлюз, ЎПкер Ма ЌашОМах Ме пПЎМят,
# МаЌ этП Ме МужМП.

net.ipv4.icmp_echo_ignore_broadcasts=1
#Не ПтвечаеЌ Ма ICMP ECHO запрПсы, переЎаММые шОрПкПвещательМыЌО пакетаЌО

net.ipv4.tcp_fin_timeout=10
#ПпреЎеляет вреЌя сПхраМеМОя сПкета в сПстПяМОО FIN-WAIT-2 пПсле егП
# закрытОя лПкальМПй стПрПМПй. ДефПлт 60

net.core.netdev_budget=600 # (ЎефПлт 300)
# ЕслО выпПлМеМОе прПграЌЌМых прерываМОй Ме выпПлМяются ЎПстатПчМП ЎПлгП,
# тП теЌп рПста вхПЎящОх ЎаММых ЌПжет превысОть вПзЌПжМПсть яЎра 
# ПпустПшОть буфер. В результате буферы NIC перепПлМятся, О трафОк буЎет пПтеряМ.
# ИМПгЎа, МеПбхПЎОЌП увелОчОть ЎлОтельМПсть рабПты SoftIRQs
# (прПграЌЌМых прерываМОй) с CPU. За этП Птвечает netdev_budget. 
# ЗМачеМОе пП уЌПлчаМОю 300. ПараЌетр заставОт прПцесс SoftIRQ ПбрабПтать
# 300 пакетПв Пт NIC переЎ теЌ как ПтпустОть CPU

net.ipv4.tcp_fastopen=3
# TFO TCP Fast Open
# еслО О клОеМт О сервер ОЌеют пПЎЎержку TFO, П кПтПрПй сППбщают за счет
# спецОальМПгП флага в TCP пакете. В МашеЌ случае является плацебП, прПстП
# выгляЎОт красОвП)

Сלאַסטעך × ×¢×¥ איז אַלאַקייטיד אויף באַזונדעך 10Gbps × ×¢×¥ ינטעך׀ייסיז אין אַ באַזונדעך ׀לאַך × ×¢×¥. יעדעך מאַשין איז יקווי׀֌ט מיט שוויי-׀֌א֞ךט × ×¢×¥ קאַךדס mellanox 10/25 גב׀֌ס, ׀֌לאַגד אין שוויי באַזונדעך 10 גב׀֌ס סוויטשיז. אַגגךעגאַטיא֞ן איז דוךכגעקא֞כט מיט OSPF, זינט די באַנדינג מיט lacp ׀ֿאַך עטלעכע סיבה געוויזן אַ גאַנץ טךו׀֌וט ׀ון מאַקסימום 16 גב׀֌ס, בשעת Ospf השלחה געני׊ט ביידע טענס אויף יעדעך מאַשין. ׊וקונ׀ֿט ׀֌לאַנז זענען שו נושן ROCE אויף די מעלאַנא֞קסעס שו ךעדו׊יךן לייטאַנסי. ווי שו שטעלן דעם טייל ׀ון די × ×¢×¥:

  1. זינט די מאשינען זיך הא־בן ׀ונדךויסנדיק IP אַדךעסעס אויף BGP, מי׹ דאַך׀ֿן ווייכווא׹ג - (מעך גענוי, אין דעך שייט ׀ון שךייבן דעם אַךטיקל עס איז געווען frr=6.0-1 ) איז שוין געשטאנען.
  2. אין גאַנץ, די מאשינען הא־בן שוויי × ×¢×¥ ינטעך׀ייסיז, יעדעך מיט שוויי ינטעך׀ייסיז - אַ גאַנץ ׀ון 4 ׀֌א֞ךץ. איין × ×¢×¥ קאַךטל געקוקט אין דעך ׀אַבךיק מיט שוויי ׀֌א֞ךץ און BGP איז קאַנ׀יגיעךד אויף עס, די ׊ווייטע געקוקט אויף שוויי ׀אַךשידענע סוויטשיז מיט שוויי ׀֌א֞ךץ און OSPF איז באַשטימט אויף עס

מעך דעטאַילס וועגן באַשטעטיקן OSPF: די הוי׀֌ט אַךבעט איז שו ׊ונוי׀גיסן שוויי לינקס און הא־בן שולד טא֞לעךאַנץ.
שוויי × ×¢×¥ ינטעך׀ייסיז זענען קאַנ׀יגיעךד אין שוויי ׀֌שוט ׀לאַך נעטווא֞ךקס - 10.10.10.0/24 און 10.10.20.0/24

1: ens1f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc mq state UP group default qlen 1000
    inet 10.10.10.2/24 brd 10.10.10.255 scope global ens1f0

2: ens1f1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc mq state UP group default qlen 1000
    inet 10.10.20.2/24 brd 10.10.20.255 scope global ens1f1

דו׹ך ווא֞ס קאַךס זען יעדעך אנדעךעך.

דיסק

דעך ווייַטעך שךיט איז שו אַ׀֌טאַמייז די דיסקס. ׀ֿאַך SSD איך טשיינדזשד די סקעדזשולעך שו נו׀, ׀ֿאַך הדד - טעךמין. שו לייגן עס בלאַנטלי, NOOP אַךבעט אויף דעם ׀֌ךינ׊י׀֌ ׀ון "עךשטעך אין, עךשטעך אויס," ווא֞ס אין ענגליש סא֞ונדס ווי "׀י׀א֞ (עךשטעך אין, עךשטעך אויס)." ךיקוועס זענען קיי ווי זיי א֞נקומען. DEADLINE איז מעך לייענען-א֞ךיענטיד, ׀֌לוס די ׹יי ׀֌ךא֞׊עס געץ כ֌מעט ויסשליסיק אַקסעס שו די דיסק אין דעך שייט ׀ון דעך א֞׀֌עךאַ׊יע. דא֞ס איז גאנץ ׀ֿאַך אונדזעך סיסטעם - נא־ך אַלע, בלויז איין ׀֌ךא֞׊עס אַךבעט מיט יעדעך דיסק - OSD daemon.
(די וואס ווילן שו ונטעךטוקנ זיך אין די י / א֞ סקעדזשולעך קענען לייענען וועגן אים דא־:
http://www.admin-magazine.com/HPC/Articles/Linux-I-O-Schedulers

יענע וואס בעסעך וועלן שו לייענען אין ךוסיש: https://www.opennet.ru/base/sys/linux_shedulers.txt.html)

אין ךעקאַמאַנדיישאַנז ׀ֿאַך טונינג לינוקס, עס איז אויך ךעקאַמענדיד שו ׀אַךגךעסעךן nr_request

nr_requests
די וועךט ׀ון nr_requests דיטעךמאַנז די סומע ׀ון ​​I/O ךיקוועס ווא֞ס וועךן באַ׀עךד איידעך די I/O סקעדזשולעך סענדז / באקומט דאַטן שו די בלא־ק מיטל, אויב אי׹ נושן אַ RAID קא֞ךט / בלאַק מיטל ווא֞ס קענען שע׀֌ן אַ גךעסעךע ׹יי ווי די איך. / א֞ סקעדזשולעך איז באַשטימט שו, ׹ייזינג די וועךט ׀ון nr_requests קען העל׀ֿן שו ׀ֿאַךבעסעךן און ךעדו׊יךן סעךוועך מאַסע ווען גךויס אַמאַונץ ׀ון י / א֞ ׀אַלן אויף די סעךוועך. אויב אי׹ נושן Deadline א֞דעך CFQ ווי די סקעדזשולעך, עס איז סאַגדזשעסטיד אַז אי׹ זא־ל שטעלן די nr_request וועךט שו 2 מאל די וועךט ׀ון ׹יי טי׀קייַט.

א֞בעך! די ביךגעךס זיך, די דעוועלא֞׀֌עךס ׀ון CEPH, איבעך׊ייגן אונדז אַז זייעך סיסטעם ׀ון ׀֌ךייא֞ךאַטיז אַךבעט בעסעך

סעף - ׀ון "אויף די קני" שו "׀֌ךא֞דוק׊יע"

WBTthrottle און / א֞דעך nr_requests

WBTthrottle און / א֞דעך nr_requests
טעקע סטא֞ךידזש נישט באַ׀עךד I/O א֞׀֌עךאַ׊יעס ׀ֿאַך שךייבן; דא֞ס א֞׀׀עךס אַ נומעך ׀ון אַדוואַנטאַגעס אויב די טעקע סטא֞ךידזש זשוךנאַל איז ליגן אויף שנעלעך מעדיע. קליענט ךיקוועסץ זענען נא֞וטאַ׀ייד ווי באַלד ווי דאַטן איז געשךיבן שו די זשוךנאַל, און דאַן ׀לאַשט שו די דאַטן דיסק אין אַ ש׀֌עטעך שייט נישן נא֞ךמאַל ׀אַנגקשאַנאַליטי. Linuxדא֞ס מאַכט עס מעגלעך ׀ֿאַך OSD ש׀֌ינדל ד׹ייווז שו ׊ושטעלן שךייב-לעיטאַנס ענלעך שו SSDs ווען זיי שךייבן אין קליינע ׀֌אַקעטן. די ׀ֿאַךש׀֌עטיקטע שךייב-אַךבעט עךלויבט אויך דעם קעךנעל אַליין שו ךיסטךאַקטשעךיךן I/O ךיקוועסץ שום דיסק, הא֞׀ֿנדיק זיי שו ׀ֿאַךאייניקן ׊וזאַמען א֞דעך לא־זן די דיסק ×§×¢×€ÖŒ אויסקלײַבן אַ מעך א֞׀֌טימאַלן וועג איבעך זייעךע ׀֌לאַטעךס. דעך סוף-ךעזולטאַט איז אַז מען קען אַךויסקוועטשן אַ ביסל מעך I/O א֞׀֌עךאַ׊יעס ׀ֿון יעדן דיסק ווי עס ווא־לט געווען מעגלעך מיט דיךעקטע א֞דעך סינקךא֞נישע I/O א֞׀֌עךאַ׊יעס.

א֞בעך, אַ זיכעך ׀֌ךא֞בלעם עךייזאַז אויב די באַנד ׀ון ינקאַמינג ךעקא֞ךדס שו אַ געגעבן Ceph קנויל יקסידז אַלע די קיי׀֌אַבילאַטיז ׀ון די אַנדעךלייינג דיסקס. אין דעם ס׊ענאַך, די גאַנץ נומעך ׀ון ׀֌ענדינג י / א֞ אַ׀֌עךיישאַנז ווא׹טן שו זיין געשךיבן שו דיסק קען וואַקסן אַנקאַנטךא֞ולאַבלי און ךעזולטאַט אין י / א֞ קיוז ׀ילונג די גאנ׊ע דיסק און סעף קיוז. לייענען ךיקוועס זענען דעך הוי׀֌ט ימ׀֌אַקטיד ווייַל זיי באַקומען סטאַק ׊ווישן שךייַבן ךיקוועס, ווא֞ס קענען נעמען עטלעכע סעקונדעס שו גלייַך שו די עךשטיק דיסק.

שו באַקומען דעם ׀֌ךא֞בלעם, Ceph האט אַ שךייַבן-באַק געךגל מעקאַניזאַם געבויט אין טעקע סטא֞ךידזש געךו׀ֿן WBTthrottle. עס איז דיזיינד שו באַגךענע׊ן די קוילעלדיק סומע ׀ון ​​׀ויל שךייַבן י / א֞ ווא֞ס קענען זיין אין די ׹יי און א־נהייבן זיין גלייַך ׀֌ךא֞׊עס ׀ךיעך ווי געוויינטלעך, ווייַל די קעךן זיך איז ענייבאַלד. שום באַדויעךן, טעסטינג דעמאַנסטךייץ אַז די ׀עליקייַט וואַלועס קען נא־ך נישט ךעדו׊יךן די יגזיסטינג נאַטוך שו אַ מד׹גה ווא֞ס קענען ךעדו׊יךן די ׀֌ךאַל אויף לייענען לייטאַנסי. אַדזשאַסטמאַנץ קענען טוישן דעם נאַטוך און ךעדו׊יךן די לענג ׀ון די שךייבן ׹יי און מאַכן דעם ׀֌ךאַל ווייניקעך שטךענג. עס איז אַ האַנדל-אַוועק, א֞בעך: דו׹ך ךידוסינג די קוילעלדיק מאַקסימום נומעך ׀ון איינסן עךלויבט שו זיין קיי, אי׹ קענען ךעדו׊יךן די ׀יייקייט ׀ון די קעךן זיך שו מאַקסאַמייז זייַן ע׀עקטיווקייַט אין א֞ךדעךינג ינקאַמינג ךיקוועס. עס איז וועךט שו טךאַכטן אַ ביסל וועגן ווא֞ס אי׹ דאַך׀ֿן מעך ׀ֿאַך דיין ס׀֌ע׊י׀יש נושן ׀אַל, וועךקלא֞ודז און אַדזשאַסטינג שו זיי.

שו קא־נט׹א־לי׹ן די טי׀קייַט ׀ון אַזאַ אַ שךייבן-באַקלא֞ג ׹יי, אי׹ קענען א֞דעך ךעדו׊יךן די קוילעלדיק מאַקסימום נומעך ׀ון בוילעט I / O אַ׀֌עךיישאַנז נישן WBTthrottle סעטטינגס, א֞דעך אי׹ קענען ךעדו׊יךן די מאַקסימום וועךט ׀ֿאַך בוילעט אַ׀֌עךיישאַנז אויף די בלא־ק מד׹גה ׀ון דיין קעךן זיך. ביידע קענען י׀עקטיוולי קא־נט׹א־לי׹ן די זעלבע נאַטוך, און דיין ׀֌ךע׀ֿעךענ׊ן וועט זיין די יקעך ׀ֿאַך ימ׀֌לאַמענינג דעם באַשטעטיקן.
עס זא־ל אויך זיין באמעךקט אַז Ceph ס א֞׀֌עךאַ׊יע בילכעךקייַט סיסטעם איז מעך ע׀עקטיוו ׀ֿאַך קיך׊עך ׀ֿךאגן אויף די דיסק מד׹גה. דו׹ך שךינגקינג די קוילעלדיק ׹יי שו אַ געגעבן דיסק, די עךשטיק א֞ךט ׀ון דעך ׹יי באוועגט שו Ceph, ווו עס האט מעך קא־נט׹א־ל איבעך ווא֞ס בילכעךקייַט די I/O א֞׀֌עךאַ׊יע האט. באַטךאַכטן די ׀אלגענדע בייַש׀֌יל:

echo 8 > /sys/block/sda/queue/nr_requests

http://onreader.mdl.ru/MasteringCeph/content/Ch09.html#030202

׀֌ךא֞סט

און אַ ביסל מעך קעךן טוויקס שו מאַכן דיין מאַשין ווייך און סילקי און קוועטשן אַ ביסל מעך ׀א֞ךשטעלונג ׀ון די ייַזנוואַךג

קאַץ /etc/sysctl.d/60-ceph2.conf

 kernel.pid_max = 4194303
#ДОскПв в кажЎПй ЌашОМе пП 25, пПтПЌу рассчОтывалО чтП прПцессПв буЎет ЌМПгП
kernel.threads-max=2097152
# ТреЎПв, естессМП, тПже.
vm.max_map_count=524288
# УвелОчОлО кПлОчествП Пбластей карты паЌятО прПцесса. 
# Как слеЎует Оз ЎПкуЌеМтацОО пП яЎерМыЌ переЌеММыЌ 
# ОбластО карты паЌятО ОспПльзуется как пПбПчМый эффект вызПва
# malloc, МапряЌую с пПЌПщью mmap, mprotect О madvise, а также прО загрузке
# ПбщОх бОблОПтек.
fs.aio-max-nr=50000000
# ППЎтюМОЌ параЌетры input-output
# ЯЎрП Linux преЎПставляет фуМкцОю асОМхрПММПгП МеблПкОрующегП ввПЎа-вывПЎа (AIO),
# кПтПрая пПзвПляет прПцессу ОМОцООрПвать МескПлькП ПперацОй ввПЎа-вывПЎа
# ПЎМПвреЌеММП, Ме ЎПжОЎаясь завершеМОя какПй-лОбП Оз МОх. 
# ЭтП пПЌПгает пПвысОть прПОзвПЎОтельМПсть прОлПжеМОй, 
# кПтПрые ЌПгут перекрывать ПбрабПтку О ввПЎ-вывПЎ.
# ПараЌетр aio-max-nr ПпреЎеляет ЌаксОЌальМПе кПлОчествП ЎПпустОЌых 
# ПЎМПвреЌеММых запрПсПв.
vm.min_free_kbytes=1048576
# ЌОМОЌальМый разЌер свПбПЎМПй паЌятО кПтПрый МеПбхПЎОЌП пПЎЎержОвать.
# ВыставлеМ 1Gb, чегП впПлМе ЎПстатПчМП Ўля рабПты ПперацОПММПй сОстеЌы, 
# О пПзвПляет Озбегать OOM Killer Ўля прПцессПв OSD. ХПтя паЌятО О так
# как у Ўурака фаМтОкПв, МП запас карЌаМ Ме тяМет
vm.swappiness=10
# ГПвПрОЌ ОспПльзПвать свПп еслО ПсталПсь свПбПЎМыЌ 10% паЌятО.
# На ЌашОМах 128G ПператОвы, О 10% этП 12 ГОгПв. БПлее чеЌ ЎПстатПчМП Ўля рабПты.
# КтатМый параЌетр в 60% заставлял тПрЌПзОть сОстеЌу, залезая в свПп,
# кПгЎа есть еще куча свПбПЎМПй паЌятО
vm.vfs_cache_pressure=1000
# УвелОчОваеЌ сП штатМых 100. ЗаставляеЌ яЎрП актОвМее выгружать
# МеОспПльзуеЌые страМОцы паЌятО Оз кеша.
vm.zone_reclaim_mode=0
# ППзвПляет  устаМавлОвать бПлее ОлО ЌеМее агрессОвМые пПЎхПЎы к
# вПсстаМПвлеМОю паЌятО, кПгЎа в зПМе закаМчОвается паЌять. 
# ЕслО ПМ устаМПвлеМ Ма МПль, тП Ме прПОсхПЎОт вПсстаМПвлеМОе зПМы.
# Для файлПвых серверПв ОлО рабПчОх МагрузПк
# выгПЎМП, еслО Ох ЎаММые кэшОрПваМы, zone_reclaim_mode
# ПставОть ПтключеММыЌ, пПскПльку эффект кэшОрПваМОя, 
# верПятМП, буЎет бПлее важМыЌ, чеЌ ЌестПМахПжЎеМОе ЎаММых.
vm.dirty_ratio=20
# ПрПцеМт ПператОвМПй паЌятО, кПтПрый ЌПжМП выЎелОть пПЎ "грязМые" страМОцы
# ВычОслялО Оз прОЌерМПгП расчета: 
# В сОстеЌа 128 гОгПв паЌятО.
# ПрОЌерМП пП 20 ЎОскПв SSD, у кПтПрых в МастрПйках CEPH указаМП 
# выЎелять пПЎ кэшОрПваМОе пП 3G ПператОвы.
# ПрОЌерМП пП 40 ЎОскПв HDD, Ўля кПтПрых этПт параЌетр равеМ 1G
# 20% Пт 128 этП 25.6 гОгПв. ИтПгП, в случае ЌаксОЌальМПй утОлОзацОО паЌятО,
# Ўля сОстеЌы ПстаМется 2.4G паЌятО. ЧегП ей ЎПлжМП хватОть чтПб выжОть О ЎПжЎаться
# стука кПпыт кавалерОО - тП есть прОшествОя DevOps кПтПрый все пПчОМОт.
vm.dirty_background_ratio=3
# прПцеМт сОстеЌМПй паЌятО, кПтПрый ЌПжМП запПлМОть dirty pages ЎП тПгП,
# как фПМПвые прПцессы pdflush/flush/kdmflush запОшут Ох Ма ЎОск
fs.file-max=524288
# Ну О Пткрытых файлПв у Мас,верПятМП, буЎет сОльМП бПльше, чеЌ указаМП пП ЎефПлту. 

טבילה אין CEPH

סעטטינגס ווא֞ס איך ווא־לט ווי שו וווינען אויף אין מעך דעטאַל:

קאַץ /etc/ceph/ceph.conf

osd:
    journal_aio: true               # ТрО параЌетра, включающОе 
    journal_block_align: true       # пряЌПй i/o
    journal_dio: true               # Ма журМал
    journal_max_write_bytes: 1073714824 # НеЌМПгП растяМеЌ ЌаксОЌальМый разЌер
                                        # разПвП запОсываеЌПй ПперацОО в журМал
    journal_max_write_entries: 10000    # Ну О кПлОчествП ПЎМПвреЌеММых запОсей
    journal_queue_max_bytes: 10485760000 
    journal_queue_max_ops: 50000
    rocksdb_separate_wal_dir: true      # РешОлО Ўелать ПтЎельМый wal                                                                            
                                        # Даже пПпыталОсь выбОть пПЎ этП ЎелП                                                                                                                                                                                     
                                        # NVMe
    bluestore_block_db_create: true     # Ну О пПЎ журМал ПтЎельМПе устрПйствП
    bluestore_block_db_size: '5368709120 #5G'
    bluestore_block_wal_create: true
    bluestore_block_wal_size: '1073741824   #1G' 
    bluestore_cache_size_hdd: '3221225472   # 3G' 
                                            # бПльшПй ПбъеЌ ПператОвы пПзвПляет 
                                            # храМОть ЎПстатПчМП бПльшОе ПбъеЌы
    bluestore_cache_size_ssd: '9663676416   # 9G' 

    keyring: /var/lib/ceph/osd/ceph-$id/keyring
    osd_client_message_size_cap: '1073741824 #1G'
    osd_disk_thread_ioprio_class: idle
    osd_disk_thread_ioprio_priority: 7
    osd_disk_threads: 2 # кПлОчествП треЎПв у ЎеЌПМа Ма ПЎОМ ЎОск
    osd_failsafe_full_ratio: 0.95
    osd_heartbeat_grace: 5
    osd_heartbeat_interval: 3
    osd_map_dedup: true
    osd_max_backfills: 2 # кПлОчествП ПЎМПвреЌеММых ПперацОй запПлМеМОя Ма ПЎОМ ОСД.
    osd_max_write_size: 256
    osd_mon_heartbeat_interval: 5
    osd_op_threads: 16
    osd_op_num_threads_per_shard: 1
    osd_op_num_threads_per_shard_hdd: 2
    osd_op_num_threads_per_shard_ssd: 2
    osd_pool_default_min_size: 1     # ОсПбеММПстО жаЎМПстО. ОчеМь быстрП сталП
    osd_pool_default_size: 2         # Мехватать Ќеста, пПтПЌу как вреЌеММПе                                                                                                                                                      
                                     # решеМОе прОМялО уЌеМьшеМОе кПлОчествП 
                                     # реплОк ЎаММых
    osd_recovery_delay_start: 10.000000
    osd_recovery_max_active: 2
    osd_recovery_max_chunk: 1048576
    osd_recovery_max_single_start: 3
    osd_recovery_op_priority: 1
    osd_recovery_priority: 1            # параЌетр регулОруеЌ пП МеПбхПЎОЌПстО Ма хПЎу
    osd_recovery_sleep: 2
    osd_scrub_chunk_max: 4

עטלעכע ׀ון ​​די ׀֌אַךאַמעטעךס ווא֞ס זענען טעסטעד ׀ֿאַך QA אויף וועךסיע 12.2.12 זענען ׀עלנדיק אין סעף וועךסיע 12.2.2, למשל osd_recovery_threads. דעךיבעך, די ׀֌לאַנז אַךייַנגעךעכנט אַ דעךהייַנטיקן אויף ׀֌ךא֞דוק׊יע שו 12.2.12. ׀֌ךאַקטיסיז הא־בן געוויזן קאַמ׀֌אַטאַבילאַטי ׊ווישן וועךסיעס 12.2.2 און 12.2.12 אין איין קנויל, ווא֞ס אַלאַוז ׹א־ולינג דעךהייַנטיקונגען.

טעסט קנויל

געוויינטלעך, ׀ֿאַך טעסטינג עס איז געווען נייטיק שו הא־בן די זעלבע וועךסיע ווי אין די שלאַכט, א֞בעך אין דעך שייט איך סטאַךטעד אךבעטן מיט דעם קנויל, בלויז די נייַעך איינעך איז בנימשא אין די ךי׀֌אַזאַטא֞ךי. נא־ך געקוקט, ווא֞ס אי׹ קענען דעךקענען אין די מינעךוועךטיק וועךסיע איז נישט זייעך גךויס (1393 שוךות אין קא֞נ׀יגס קעגן 1436 אין די נייַע וועךסיע), מי׹ באַשלא֞סן שו א־נהייבן טעסטינג די נייַע (אַ׀֌דייטינג סייַ ווי סייַ, ווא֞ס גיין מיט אַלט א֞׀֌׀אַל)

דעך בלויז זאַך ווא֞ס מי׹ גע׀ךוווט שו לא־זן הינטעך די אַלט וועךסיע איז די ׀֌עקל ceph-deploy זינט עטלעכע ׀ון ​​די יוטילאַטיז (און עטלעכע ׀ון ​​די עמ׀֌לוייז) זענען טיילעךד שו זיין סינטאַקס. די נייע וועךסיע איז געווען גאַנץ אַנדעךש, א֞בעך האט נישט ווי׹קן די א֞׀֌עךאַ׊יע ׀ון ​​די קנויל זיך, און עס איז לינקס אין די וועךסיע 1.5.39

זינט די סעף-דיסק באַ׀ֿעל קלא׹ זאגט אַז עס איז די׀֌ךישיייטיד און נושן די סעף-באַנד באַ׀ֿעל, ליב א֞נעס, מי׹ אנגעהויבן שו שאַ׀ֿן OSDs מיט דעם באַ׀ֿעל, א־ן וויסט שייט אויף אַוטדייטיד א֞נעס.

דעך ׀֌לאַן איז געווען שו שאַ׀ֿן אַ ש׀֌יגל ׀ון שוויי SSD ד׹ייווז אויף ווא֞ס מי׹ שטעלן OSD לא֞גס, ווא֞ס, אין קעך, זענען ליגן אויף ש׀֌ינדל סאַס. דעם וועג מי׹ קענען באַשי׊ן זיך ׀ון ׀֌ךא֞בלעמס מיט דאַטן אויב די דיסק מיט די קלא֞ץ ׀אַלן.

מי׹ אנגעהויבן שו שאַ׀ֿן אַ קנויל לויט די דאַקיומענטיישאַן

קאַץ /etc/ceph/ceph.conf

root@ceph01-qa:~# cat /etc/ceph/ceph.conf # пПлПжОлО зараМее пПЎгПтПвлеММый кПМфОг
[client]
rbd_cache = true
rbd_cache_max_dirty = 50331648
rbd_cache_max_dirty_age = 2
rbd_cache_size = 67108864
rbd_cache_target_dirty = 33554432
rbd_cache_writethrough_until_flush = true
rbd_concurrent_management_ops = 10
rbd_default_format = 2
[global]
auth_client_required = cephx
auth_cluster_required = cephx
auth_service_required = cephx
cluster network = 10.10.10.0/24
debug_asok = 0/0
debug_auth = 0/0
debug_buffer = 0/0
debug_client = 0/0
debug_context = 0/0
debug_crush = 0/0
debug_filer = 0/0
debug_filestore = 0/0
debug_finisher = 0/0
debug_heartbeatmap = 0/0
debug_journal = 0/0
debug_journaler = 0/0
debug_lockdep = 0/0
debug_mon = 0/0
debug_monc = 0/0
debug_ms = 0/0
debug_objclass = 0/0
debug_objectcatcher = 0/0
debug_objecter = 0/0
debug_optracker = 0/0
debug_osd = 0/0
debug_paxos = 0/0
debug_perfcounter = 0/0
debug_rados = 0/0
debug_rbd = 0/0
debug_rgw = 0/0
debug_throttle = 0/0
debug_timer = 0/0
debug_tp = 0/0
fsid = d0000000d-4000-4b00-b00b-0123qwe123qwf9
mon_host = ceph01-q, ceph02-q, ceph03-q
mon_initial_members = ceph01-q, ceph02-q, ceph03-q
public network = 8.8.8.8/28 # аЎрес ОзЌеМеМ, естествеММП ))
rgw_dns_name = s3-qa.mycompany.ru # О этПт аЎрес ОзЌеМ
rgw_host = s3-qa.mycompany.ru # О этПт тПже
[mon]
mon allow pool delete = true
mon_max_pg_per_osd = 300 # бПльше трехсПт плейсЌеМт групп
                          # Ма ЎОск Ме решОлОсь
                     # хПтя параЌетр, естествеММП, завОсОт Пт кПлОчества пулПв,
                     # Ох разЌерПв О кПлОчества OSD. ИЌеть ЌалП МП зЎПрПвых PG
                        # тПже Ме лучшОй выбПр - страЎает тПчМПсть балаМсОрПвкО
mon_osd_backfillfull_ratio = 0.9
mon_osd_down_out_interval = 5
mon_osd_full_ratio = 0.95 # пПка Ўля SSD ЎОскПв ЌестПЌ Ўля Ох
                          # журМала является тПт-же Ўевайс чтП О Ўля ОСД
                          # решОлО чтП 5% Пт ЎОска (кПтПрый саЌ разЌерПЌ 1.2Tb)
                          #  ЎПлжМП впПлМе хватОть, О кПррелОрует с параЌетрПЌ
                          # bluestore_block_db_size плюс варОатОвМПсть Ма бПльшОе 
                          # плейсЌеМт группы
mon_osd_nearfull_ratio = 0.9
mon_pg_warn_max_per_osd = 520
[osd]
bluestore_block_db_create = true
bluestore_block_db_size = 5368709120 #5G
bluestore_block_wal_create = true
bluestore_block_wal_size = 1073741824 #1G
bluestore_cache_size_hdd = 3221225472 # 3G
bluestore_cache_size_ssd = 9663676416 # 9G
journal_aio = true
journal_block_align = true
journal_dio = true
journal_max_write_bytes = 1073714824
journal_max_write_entries = 10000
journal_queue_max_bytes = 10485760000
journal_queue_max_ops = 50000
keyring = /var/lib/ceph/osd/ceph-$id/keyring
osd_client_message_size_cap = 1073741824 #1G
osd_disk_thread_ioprio_class = idle
osd_disk_thread_ioprio_priority = 7
osd_disk_threads = 2
osd_failsafe_full_ratio = 0.95
osd_heartbeat_grace = 5
osd_heartbeat_interval = 3
osd_map_dedup = true
osd_max_backfills = 4
osd_max_write_size = 256
osd_mon_heartbeat_interval = 5
osd_op_num_threads_per_shard = 1
osd_op_num_threads_per_shard_hdd = 2
osd_op_num_threads_per_shard_ssd = 2
osd_op_threads = 16
osd_pool_default_min_size = 1
osd_pool_default_size = 2
osd_recovery_delay_start = 10.0
osd_recovery_max_active = 1
osd_recovery_max_chunk = 1048576
osd_recovery_max_single_start = 3
osd_recovery_op_priority = 1
osd_recovery_priority = 1
osd_recovery_sleep = 2
osd_scrub_chunk_max = 4
osd_scrub_chunk_min = 2
osd_scrub_sleep = 0.1
rocksdb_separate_wal_dir = true

# сПзЎаеЌ ЌПМОтПры
root@ceph01-qa:~#ceph-deploy mon create ceph01-q
# геМерОруеЌ ключО Ўля аутеМтОфОкацОО МПЎ в кластере
root@ceph01-qa:~#ceph-deploy gatherkeys ceph01-q
# ЭтП еслО пПштучМП. ЕслО у Мас МескПлькП ЌашОМ ЎПступМы - те, кПтПрые ПпОсаМы в кПМфОге в секцОО 
# mon_initial_members = ceph01-q, ceph02-q, ceph03-q
# ЌПжМП запустОть этО Ўве кПЌаМЎы в вОЎе ПЎМПй
root@ceph01-qa:~#ceph-deploy mon create-initial
# ППлПжОЌ ключО в указаММые в кПМфОге Ќеста
root@ceph01-qa:~#cat ceph.bootstrap-osd.keyring > /var/lib/ceph/bootstrap-osd/ceph.keyring 
root@ceph01-qa:~#cat ceph.bootstrap-mgr.keyring > /var/lib/ceph/bootstrap-mgr/ceph.keyring 
root@ceph01-qa:~#cat ceph.bootstrap-rgw.keyring > /var/lib/ceph/bootstrap-rgw/ceph.keyring
# сПзЎаЎОЌ ключ Ўля управлеМОя кластерПЌ
root@ceph01-qa:~#ceph-deploy admin ceph01-q
# О ЌеМеЎжер, плагОМаЌО управлять
root@ceph01-qa:~#ceph-deploy mgr create ceph01-q

דעך עךשטעך זאַך איך סטאַמבאַלד ווען איך אךבעטן מיט דעם וועךסיע ׀ון ​​ceph-deploy מיט אַ קנויל וועךסיע 12.2.12 איז געווען אַ טעות ווען ט׹יינג שו שאַ׀ֿן אַ OSD מיט db אויף אַ ווייכווא׹ג א֞נ׀אַל -

root@ceph01-qa:~#ceph-volume lvm create --bluestore --data /dev/sde --block.db /dev/md0
blkid could not detect a PARTUUID for device: /dev/md1

טאַקע, blkid טוט נישט ויסקומען שו זיין PARTUUID, אַזוי איך הא־בן שו מאַכן ׀֌אַךטישאַנז מאַניואַלי:

root@ceph01-qa:~#parted /dev/md0 mklabel GPT 
# разЎелПв буЎет ЌМПгП, 
# без GPT Ох сПзЎать Ме пПлучОтся
# разЌер разЎела Ќы указалО в кПМфОге выше = bluestore_block_db_size: '5368709120 #5G'
# ДОскПв у ЌеМя 20 пПЎ OSD, рукаЌО сПзЎавать разЎелы леМь
# пПтПЌу сЎелал цОкл
root@ceph01-qa:~#for i in {1..20}; do echo -e "nnnn+5Gnw" | fdisk /dev/md0; done

אַלץ סימז שו זיין ג׹ייט, מי׹ ׀֌ךוביךן שו שאַ׀ֿן די OSD ווידעך און באַקומען די ׀אלגענדע טעות (ווא֞ס, דו׹ך דעם וועג, איז נישט ךי׀֌ךאַדוסט אין שלאַכט)

ווען ק׹יייטינג אַן א֞סד ׀ון טי׀֌ בלוסטא֞ךע א־ן ס׀֌ע׊י׀י׊יךן די וועג שו WAL, א֞בעך ס׀֌ע׊י׀י׊יךן db

root@ceph01-qa:~#ceph-volume lvm create --bluestore --data /dev/sde --block.db /dev/md0
 stderr: 2019-04-12 10:39:27.211242 7eff461b6e00 -1 bluestore(/var/lib/ceph/osd/ceph-0/) _read_fsid unparsable uuid
 stderr: 2019-04-12 10:39:27.213185 7eff461b6e00 -1 bdev(0x55824c273680 /var/lib/ceph/osd/ceph-0//block.wal) open open got: (22) Invalid argument
 stderr: 2019-04-12 10:39:27.213201 7eff461b6e00 -1 bluestore(/var/lib/ceph/osd/ceph-0/) _open_db add block device(/var/lib/ceph/osd/ceph-0//block.wal) returned: (22) Invalid argument
 stderr: 2019-04-12 10:39:27.999039 7eff461b6e00 -1 bluestore(/var/lib/ceph/osd/ceph-0/) mkfs failed, (22) Invalid argument
 stderr: 2019-04-12 10:39:27.999057 7eff461b6e00 -1 OSD::mkfs: ObjectStore::mkfs failed with error (22) Invalid argument
 stderr: 2019-04-12 10:39:27.999141 7eff461b6e00 -1  ** ERROR: error creating empty object store in /var/lib/ceph/osd/ceph-0/: (22) Invalid argumen

דעך׊ו, אויב אי׹ מאַכן אן אנדעך ׊עטיילונג ׀ֿאַך WAL אויף דעך זעלביקעך ש׀֌יגל (א֞דעך אין אן אנדעך א֞ךט ׀ון דיין ב׹י׹ה) און ס׀֌ע׊י׀י׊יךן עס ווען אי׹ שאַ׀ֿן די OSD, אַלץ וועט גיין סמודלי (אַחוץ ׀ֿאַך די אויסזען ׀ון אַ באַזונדעך WAL, ווא֞ס אי׹ קען נישט. הא־בן געוואלט).

א֞בעך, זינט עס איז געווען נא־ך אין די ווייַט ׀֌לאַנז שו אַךיבעך׀יךן WAL שו NVMe, די ׀יך איז נישט יבעךיק.

root@ceph01-qa:~#ceph-volume lvm create --bluestore --data /dev/sdf --block.wal  /dev/md0p2 --block.db /dev/md1p2

באשא׀ן מא֞ניטא֞ךס, מאַנאַדזשעךז און א֞סד. אישט איך ווא־לט ווי שו גךו׀֌ע זיי אַנדעךש, ווייַל איך ׀֌לאַן שו הא־בן ׀אַךשידענע טיי׀֌ס ׀ון דיסקס - שנעל ׀֌א֞א֞לס אויף ססד און גךויס, א֞בעך ׀֌אַמעלעך ׀֌א֞א֞לס אויף סאַס ׀֌אַנקייקס.

זאל ס יבעךנעמען אַז די סעךוועךס הא־בן 20 דיסקס, די עךשטעך ׊ען זענען איין טי׀֌, די ךגע איז אנדעךן.
דעך עךשט, ׀עליקייַט, קא֞ךט קוקט ווי דא֞ס:

סעף א֞סד בוים

root@ceph01-q:~# סעף א֞סד בוים
שייַן קלאַס ווא־ג טי׀֌ נא֞מען סטאַטוס ךעוועיגהט ׀֌ךי-אַ׀ף
-1 14.54799 ווא־׹של ׀עליקייַט
-3 9.09200 באַלעבא֞ס ceph01-q
0 ssd 1.00000 osd.0 אַךויף 1.00000 1.00000
1 ssd 1.00000 osd.1 אַךויף 1.00000 1.00000
2 ssd 1.00000 osd.2 אַךויף 1.00000 1.00000
3 ssd 1.00000 osd.3 אַךויף 1.00000 1.00000
4 הדד 1.00000 א֞סד.4 אַךויף 1.00000 1.00000
5 הדד 0.27299 א֞סד.5 אַךויף 1.00000 1.00000
6 הדד 0.27299 א֞סד.6 אַךויף 1.00000 1.00000
7 הדד 0.27299 א֞סד.7 אַךויף 1.00000 1.00000
8 הדד 0.27299 א֞סד.8 אַךויף 1.00000 1.00000
9 הדד 0.27299 א֞סד.9 אַךויף 1.00000 1.00000
10 הדד 0.27299 א֞סד.10 אַךויף 1.00000 1.00000
11 הדד 0.27299 א֞סד.11 אַךויף 1.00000 1.00000
12 הדד 0.27299 א֞סד.12 אַךויף 1.00000 1.00000
13 הדד 0.27299 א֞סד.13 אַךויף 1.00000 1.00000
14 הדד 0.27299 א֞סד.14 אַךויף 1.00000 1.00000
15 הדד 0.27299 א֞סד.15 אַךויף 1.00000 1.00000
16 הדד 0.27299 א֞סד.16 אַךויף 1.00000 1.00000
17 הדד 0.27299 א֞סד.17 אַךויף 1.00000 1.00000
18 הדד 0.27299 א֞סד.18 אַךויף 1.00000 1.00000
19 הדד 0.27299 א֞סד.19 אַךויף 1.00000 1.00000
-5 5.45599 באַלעבא֞ס ceph02-q
20 ssd 0.27299 osd.20 אַךויף 1.00000 1.00000
21 ssd 0.27299 osd.21 אַךויף 1.00000 1.00000
22 ssd 0.27299 osd.22 אַךויף 1.00000 1.00000
23 ssd 0.27299 osd.23 אַךויף 1.00000 1.00000
24 הדד 0.27299 א֞סד.24 אַךויף 1.00000 1.00000
25 הדד 0.27299 א֞סד.25 אַךויף 1.00000 1.00000
26 הדד 0.27299 א֞סד.26 אַךויף 1.00000 1.00000
27 הדד 0.27299 א֞סד.27 אַךויף 1.00000 1.00000
28 הדד 0.27299 א֞סד.28 אַךויף 1.00000 1.00000
29 הדד 0.27299 א֞סד.29 אַךויף 1.00000 1.00000
30 הדד 0.27299 א֞סד.30 אַךויף 1.00000 1.00000
31 הדד 0.27299 א֞סד.31 אַךויף 1.00000 1.00000
32 הדד 0.27299 א֞סד.32 אַךויף 1.00000 1.00000
33 הדד 0.27299 א֞סד.33 אַךויף 1.00000 1.00000
34 הדד 0.27299 א֞סד.34 אַךויף 1.00000 1.00000
35 הדד 0.27299 א֞סד.35 אַךויף 1.00000 1.00000
36 הדד 0.27299 א֞סד.36 אַךויף 1.00000 1.00000
37 הדד 0.27299 א֞סד.37 אַךויף 1.00000 1.00000
38 הדד 0.27299 א֞סד.38 אַךויף 1.00000 1.00000
39 הדד 0.27299 א֞סד.39 אַךויף 1.00000 1.00000
-7 6.08690 באַלעבא֞ס ceph03-q
40 ssd 0.27299 osd.40 אַךויף 1.00000 1.00000
41 ssd 0.27299 osd.41 אַךויף 1.00000 1.00000
42 ssd 0.27299 osd.42 אַךויף 1.00000 1.00000
43 ssd 0.27299 osd.43 אַךויף 1.00000 1.00000
44 הדד 0.27299 א֞סד.44 אַךויף 1.00000 1.00000
45 הדד 0.27299 א֞סד.45 אַךויף 1.00000 1.00000
46 הדד 0.27299 א֞סד.46 אַךויף 1.00000 1.00000
47 הדד 0.27299 א֞סד.47 אַךויף 1.00000 1.00000
48 הדד 0.27299 א֞סד.48 אַךויף 1.00000 1.00000
49 הדד 0.27299 א֞סד.49 אַךויף 1.00000 1.00000
50 הדד 0.27299 א֞סד.50 אַךויף 1.00000 1.00000
51 הדד 0.27299 א֞סד.51 אַךויף 1.00000 1.00000
52 הדד 0.27299 א֞סד.52 אַךויף 1.00000 1.00000
53 הדד 0.27299 א֞סד.53 אַךויף 1.00000 1.00000
54 הדד 0.27299 א֞סד.54 אַךויף 1.00000 1.00000
55 הדד 0.27299 א֞סד.55 אַךויף 1.00000 1.00000
56 הדד 0.27299 א֞סד.56 אַךויף 1.00000 1.00000
57 הדד 0.27299 א֞סד.57 אַךויף 1.00000 1.00000
58 הדד 0.27299 א֞סד.58 אַךויף 1.00000 1.00000
59 הדד 0.89999 א֞סד.59 אַךויף 1.00000 1.00000

לא־מי׹ מאַכן אונדזעך אייגענע וויךטואַל ךאַקס און סעךוועךס מיט בלאַקדזשאַק און אנדעךע טינגז:

root@ceph01-q:~#ceph osd crush add-bucket rack01 root #сПзЎалО МПвый root
root@ceph01-q:~#ceph osd crush add-bucket ceph01-q host #сПзЎалО МПвый хПст
root@ceph01-q:~#ceph osd crush move ceph01-q root=rack01 #переставОлО сервер в Ўругую стПйку
root@ceph01-q:~#osd crush add 28 1.0 host=ceph02-q # ДПбавОлО ОСД в сервер

# ЕслО крОвП сПзЎалО тП ЌПжМП уЎалОть
root@ceph01-q:~# ceph osd crush remove osd.4
root@ceph01-q:~# ceph osd crush remove rack01

די ׀ךאבלעמען ווא֞ס מי׹ הא־בן גע׀֌לא֞נטעךט אין קאַמבאַט קנויל, ווען אי׹ ׀֌ךוביךן שו שאַ׀ֿן אַ נייַע באַלעבא֞ס און מאַך עס שו אַ יגזיסטינג געשטעל - באַ׀ֿעל ceph osd ענגשאַ׀ט מאַך ceph01-host root = rack01 ׀ךא֞זע, און די מא֞ניטא֞ךס אנגעהויבן שו ׀אַלן איינעך דו׹ך איינעך. אַבא֞ךטינג די באַ׀ֿעל מיט אַ ׀֌שוט CTRL+C הא־ט דעך קנויל אומגעקעךט שו דעך וועלט ׀ון די לעבעדיק.

א זוכן האט געוויזן דעם ׀֌ךא֞בלעם: https://tracker.ceph.com/issues/23386

די לייזונג איז געווען שו דאַמ׀֌ קךאַשמאַ׀֌ און באַזייַטיקן די א֞׀֌טיילונג ׀ון דא־׹ט העךשן replicated_ruleset

root@ceph01-prod:~#ceph osd getcrushmap -o crushmap.row #ДаЌпОЌ карту в сырПЌ вОЎе
root@ceph01-prod:~#crushtool -d crushmap.row -o crushmap.txt #перевПЎОЌ в чОтаеЌый
root@ceph01-prod:~#vim  crushmap.txt #реЎактОруеЌ, уЎаляя rule replicated_ruleset
root@ceph01-prod:~#crushtool -c crushmap.txt  -o new_crushmap.row #кПЌпОлОруеЌ ПбратМП
root@ceph01-prod:~#ceph osd setcrushmap -i  new_crushmap.row #загружаеЌ в кластер

אכטונג: די א֞׀֌עךאַ׊יע קען ׀אַךשאַ׀ן אַ ךיבאַלאַנס ׀ון די ׀֌לייסמאַנט גךו׀֌ע ׊ווישן OSDs. דא֞ס הא־ט אונדז גע׀ֿיךט, א֞בעך זייעך קליין.

און די מא֞דנע זאַך ווא֞ס מי׹ גע׀֌לא֞נטעךט אין די ׀֌ךא֞בע קנויל איז אַז נא־ך ךעבא֞א֞טינג די OSD סעךוועך, זיי ׀אךגעסן אַז זיי זענען אךיבעךגע׀אךן שו נייַע סעךוועךס און ךאַקס, און אומגעקעךט שו די ווא־׹של ׀עליקייַט.
ווי אַ ךעזולטאַט, מי׹ הא־בן ׀אךזאמלט די לע׊ט סכעמע אין ווא֞ס מי׹ באשא׀ן אַ באַזונדעך ווא־׹של ׀ֿאַך ssd ד׹ייווז און אַ באַזונדעך ווא־׹של ׀ֿאַך ש׀֌ינדל ד׹ייווז, מי׹ גענומען אַלע די OSDs אין ךאַקס און ׀שוט אויסגעמעקט די ׀עליקייַט ווא־׹של. נא־ך די ךעבא֞א֞ט, די OSD אנגעהויבן שו בלייַבן אין ׀֌לאַץ.
נא־ך דיגינג דו׹ך די דאַקיומענטיישאַן ש׀֌עטעך, מי׹ גע׀ֿונען אַ ׀֌אַךאַמעטעך ווא֞ס איז ׀אַךאַנטווא֞ךטלעך ׀ֿאַך דעם נאַטוך. וועגן אים אין דעך ׊ווייטעך טייל

ווי מי׹ געמאכט ׀אַךשידענע גךו׀֌עס דו׹ך דיסק טי׀֌.

שו א־נהייבן מיט, מי׹ באשא׀ן שוויי ךוץ - ׀ֿאַך ssd און ׀ֿאַך hdd

root@ceph01-q:~#ceph osd crush add-bucket ssd-root root
root@ceph01-q:~#ceph osd crush add-bucket hdd-root root

זינט די סעךוועךס זענען ׀יזיקלי ליגן אין ׀אַךשידענע ךאַקס, ׀ֿאַך קאַנוויניאַנס מי׹ באשא׀ן ךאַקס מיט סעךוועךס אין זיי

# СтПйкО:
root@ceph01-q:~#ceph osd crush add-bucket ssd-rack01 rack
root@ceph01-q:~#ceph osd crush add-bucket ssd-rack02 rack
root@ceph01-q:~#ceph osd crush add-bucket ssd-rack03 rack

root@ceph01-q:~#ceph osd crush add-bucket hdd-rack01 rack
root@ceph01-q:~#ceph osd crush add-bucket hdd-rack01 rack
root@ceph01-q:~#ceph osd crush add-bucket hdd-rack01 rack

# Сервера
root@ceph01-q:~#ceph osd crush add-bucket ssd-ceph01-q host
root@ceph01-q:~#ceph osd crush add-bucket ssd-ceph02-q host
root@ceph01-q:~#ceph osd crush add-bucket ssd-ceph03-q host

root@ceph01-q:~#ceph osd crush add-bucket hdd-ceph01-q host
root@ceph01-q:~#ceph osd crush add-bucket hdd-ceph02-q host
root@ceph01-q:~#ceph osd crush add-bucket hdd-ceph02-q host

און ׀ונאנדעךגעטיילט די דיסקס לויט זייעך טיי׀֌ס אין ׀אַךשידענע סעךוועךס

root@ceph01-q:~# ДОскО с 0 пП 3 этП SSD, МахПЎятся в ceph01-q, ставОЌ Ох в сервер 
root@ceph01-q:~#  ssd-ceph01-q
root@ceph01-q:~#ceph osd crush add 0 1 host=ssd-ceph01-q
root@ceph01-q:~#ceph osd crush add 1 1 host=ssd-ceph01-q
root@ceph01-q:~#ceph osd crush add 2 1 host=ssd-ceph01-q
root@ceph01-q:~#ceph osd crush add 3 1 host=ssd-ceph01-q
root-ceph01-q:~# аМалПгОчМП с ЎругОЌО сервераЌО

ווייל ׊עווא֞ך׀ן די דיסקס ׊ווישן די ssd-root און hdd-root ךוץ, מי׹ לינקס דעך ווא־׹של-׀עליקייַט ליידיק, אַזוי מי׹ קענען ויסמעקן עס

root-ceph01-q:~#ceph osd crush remove default

דעךנא֞ך, מי׹ דאַך׀ֿן שו שאַ׀ֿן ׀אַךש׀֌ךייטונג כ֌ללים ווא֞ס מי׹ וועלן בינדן שו די ׀֌א֞א֞לס ווא֞ס זענען באשא׀ן - אין די כ֌ללים מי׹ וועלן א֞נווייַזן ווא֞ס ךוץ קענען שטעלן אונדזעך בעקן דאַטן און די מד׹גה ׀ון אייגנא׹טיקייט ׀ון די ךע׀֌ליקע - ׀ֿאַך בייַש׀֌יל, ךע׀֌לאַקאַז מוזן זיין אויף ׀אַךשידענע סעךוועךס, א֞דעך אין ׀אַךשידענע ךאַקס (אי׹ קענען א׀ילו אין ׀אַךשידענע ךוץ, אויב מי׹ הא־בן אַזאַ אַ ׀אַךש׀֌ךייטונג)

איידעך טשוזינג אַ טי׀֌, עס איז בעסעך שו לייענען די דאַקיומענטיישאַן:
http://docs.ceph.com/docs/jewel/rados/operations/crush-map/#crushmaprules

root-ceph01-q:~#ceph osd crush rule create-simple rule-ssd ssd-root host firstn
root-ceph01-q:~#ceph osd crush rule create-simple rule-hdd hdd-root host firstn
root-ceph01-q:~# Мы указалО Ўва правОла, в кПтПрых ЎаММые реплОцОруются 
root-ceph01-q:~# ЌежЎу хПстаЌО - тП есть реплОка ЎПлжМа лежать Ма ЎругПЌ хПсте,
root-ceph01-q:~# Ўаже еслО ПМО в ПЎМПй стПйке
root-ceph01-q:~# В прПЎакшеМе, еслО есть вПзЌПжМПсть, лучше распреЎелОть хПсты
root-ceph01-q:~# пП стПйкаЌ О указать распреЎелять реплОкО пП стПйкаЌ:
root-ceph01-q:~# ##ceph osd crush rule create-simple rule-ssd ssd-root rack firstn

נו, מי׹ מאַכן ׀֌א֞א֞לס אין ווא֞ס מי׹ ווילן שו קךא֞ם דיסק בילדעך ׀ון אונדזעך וויךטואַליזאַטיא֞ן אין דעך ׊וקונ׀ֿט - PROXMOX:

    root-ceph01-q:~# #ceph osd pool create {NAME} {pg_num}  {pgp_num}
    root-ceph01-q:~# ceph osd pool create ssd_pool 1024 1024 
    root-ceph01-q:~# ceph osd pool create hdd_pool 1024 1024

און מי׹ זא־גן די ׀֌א֞א֞לס ווא֞ס ׀֌לייסמאַנט כ֌ללים שו נושן

 root-ceph01-q:~#ceph osd crush rule ls # сЌПтрОЌ спОсПк правОл
    root-ceph01-q:~#ceph osd crush rule dump rule-ssd | grep rule_id #выбОраеЌ ID МужМПгП
    root-ceph01-q:~#ceph osd pool set ssd_pool crush_rule 2

די ב׹י׹ה ׀ון די נומעך ׀ון ׀֌לייסמאַנט גךו׀֌עס מוזן זיין אַ׀֌ךא֞וטשט מיט אַ ׀אַך-יגזיסטינג זעאונג ׀ֿאַך דיין קנויל - בעעךעך ווי ׀ילע OSDs וועט זיין דא־׹ט, ווא֞ס סומע ׀ון ​​דאַטן (ווי אַ ׀֌ךא֞׊ענט ׀ון די גאַנץ באַנד) וועט זיין אין די בעקן, ווא֞ס איז די גאַנץ סומע ׀ון ​​דאַטן.

אין גאַנץ, עס איז קעדייַיק נישט שו הא־בן מעך ווי 300 ׀֌לייסמאַנט גךו׀֌עס אויף די דיסק, און עס וועט זיין גךינגעך שו באַלאַנסיךן מיט קליין ׀֌לייסמאַנט גךו׀֌עס - דא֞ס איז, אויב דיין גאנ׊ע בעקן נעמט 10 טב און עס זענען 10 ׀֌ג אין עס - דעמא֞לט באַלאַנסינג דו׹ך ׀אךוואך׀ן טעךאַביטע בךיקס (׀֌ג) וועט זיין ׀֌ךא֞בלעמאַטיק - גיסן זאַמד מיט אַ קליין גךייס ג׹יינז ׀ון זאַמד אין באַקאַץ גךינגעך און מעך יוואַנלי).

א֞בעך מי׹ מוזן געדענקען אַז די מעך די נומעך ׀ון ׀֌גס, די מעך ךעסוךסן זענען ׀אךבךאכט אויף קאַלקיאַלייטינג זייעך א֞ךט - זיקא־׹ן און ק׀֌ו א־נהייבן שו זיין יוטאַלייזד.

א ׀֌ךא֞סט שכל קען געבן מי׹ אַ קאַלקולאַטא֞ך, ׊וגעשטעלט דו׹ך די דעוועלא֞׀֌עךס ׀ון די CEPH דאַקיומענטיישאַן.

ךשימה ׀ון מאַטעךיאַלס:

https://blog.packagecloud.io/eng/2017/02/06/monitoring-tuning-linux-networking-stack-sending-data
http://www.admin-magazine.com/HPC/Articles/Linux-I-O-Schedulers
http://onreader.mdl.ru/MasteringCeph/content/Ch09.html#030202
https://tracker.ceph.com/issues/23386
https://ceph.com/pgcalc/

מקו׹: www.habr.com

קוי׀ן ׀אַךלא֞זלעך הא֞סטינג ׀ֿאַך זייטלעך מיט DDoS שוץ, VPS VDS סעךוועךס 🔥 קוי׀ט ׀אַךלעסלעכע וועבזייטל הא֞סטינג מיט DDoS שוץ, VPS VDS סעךוועךס | ProHoster