Π‘eph β€” ΠΎΡ‚ Β«Π½Π° ΠΊΠΎΠ»Π΅Π½ΠΊΠ΅Β» Π΄ΠΎ Β«productionΒ»

Π’Ρ‹Π±ΠΎΡ€ CEPH. Π§Π°ΡΡ‚ΡŒ 1

Π£ нас Π±Ρ‹Π»ΠΎ ΠΏΡΡ‚ΡŒ стоСк, Π΄Π΅ΡΡΡ‚ΡŒ оптичСских свичСй, настроСнный BGP, ΠΏΠ°Ρ€Ρƒ дСсятков SSD ΠΈ ΠΊΡƒΡ‡Π° SAS дисков всСх Ρ†Π²Π΅Ρ‚ΠΎΠ² ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ², Π° Π΅Ρ‰Ρ‘ proxmox ΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ Π·Π°ΡΡƒΠ½ΡƒΡ‚ΡŒ всю статику Π² собствСнноС S3 Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅. НС Ρ‚ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ это всё Π±Ρ‹Π»ΠΎ Π½ΡƒΠΆΠ½ΠΎ для Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, Π½ΠΎ Ρ€Π°Π· Π½Π°Ρ‡Π°Π» ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ opensource β€” Ρ‚ΠΎ ΠΈΠ΄ΠΈ Π² своём ΡƒΠ²Π»Π΅Ρ‡Π΅Π½ΠΈΠΈ Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π°. ЕдинствСнноС, Ρ‡Ρ‚ΠΎ мСня бСспокоило — это BGP. Π’ ΠΌΠΈΡ€Π΅ Π½Π΅Ρ‚ Π½ΠΈΠΊΠΎΠ³ΠΎ Π±ΠΎΠ»Π΅Π΅ бСспомощного, бСзотвСтствСнного ΠΈ бСзнравствСнного, Ρ‡Π΅ΠΌ внутрСнняя ΠΌΠ°Ρ€ΡˆΡ€Ρ‚ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΡ ΠΏΠΎ BGP. И я Π·Π½Π°Π», Ρ‡Ρ‚ΠΎ довольно скоро ΠΌΡ‹ Π² это окунёмся.

Π‘eph — ΠΎΡ‚ «Π½Π° ΠΊΠΎΠ»Π΅Π½ΠΊΠ΅» Π΄ΠΎ «production»

Π—Π°Π΄Π°Ρ‡Π° стояла банальная β€” имСлся CEPH, Ρ€Π°Π±ΠΎΡ‚Π°Π» Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ. Надо Π±Ρ‹Π»ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ «Ρ…ΠΎΡ€ΠΎΡˆΠΎ».
Π”ΠΎΡΡ‚Π°Π²ΡˆΠΈΠΉΡΡ ΠΌΠ½Π΅ кластСр Π±Ρ‹Π» Ρ€Π°Π·Π½ΠΎΡ€ΠΎΠ΄Π½Ρ‹ΠΌ, настроСнным Π½Π° ΡΠΊΠΎΡ€ΡƒΡŽ Ρ€ΡƒΠΊΡƒ ΠΈ практичСски Π½Π΅ Ρ‚ΡŽΠ½ΠΈΠ½Π³ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ. Он состоял ΠΈΠ· Π΄Π²ΡƒΡ… Π³Ρ€ΡƒΠΏΠΏ Ρ€Π°Π·Π½Ρ‹Ρ… Π½ΠΎΠ΄, с ΠΎΠ΄Π½ΠΎΠΉ ΠΎΠ±Ρ‰Π΅ΠΉ сСткой Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰Π΅ΠΉ Ρ€ΠΎΠ»ΡŒ ΠΊΠ°ΠΊ cluster Ρ‚Π°ΠΊ ΠΈ public network. Ноды Π±Ρ‹Π»ΠΈ Π½Π°Π±ΠΈΡ‚Ρ‹ Ρ‡Π΅Ρ‚Ρ‹Ρ€ΡŒΠΌΡ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ дисков β€” Π΄Π²Π° Ρ‚ΠΈΠΏΠ° SSD, собранными Π² Π΄Π²Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… placement rule ΠΈ Π΄Π²Π° Ρ‚ΠΈΠΏΠ° HDD Ρ€Π°Π·Π½ΠΎΠ³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°, собранными Π² Ρ‚Ρ€Π΅Ρ‚ΡŒΡŽ Π³Ρ€ΡƒΠΏΠΏΡƒ. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° с Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°ΠΌΠΈ Π±Ρ‹Π»Π° Ρ€Π΅ΡˆΠ΅Π½Π° Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ вСсами OSD.

Π‘Π°ΠΌΡƒ настройку Ρ€Π°Π·Π΄Π΅Π»ΠΈΠ»ΠΈ Π½Π° Π΄Π²Π΅ части β€” Ρ‚ΡŽΠ½ΠΈΠ½Π³ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы ΠΈ Ρ‚ΡŽΠ½ΠΈΠ½Π³ самого CEPH ΠΈ Π΅Π³ΠΎ настроСк.

ΠŸΡ€ΠΎΠΊΠ°Ρ‡ΠΊΠ° OS

Network

ВысокоС latency ΡΠΊΠ°Π·Ρ‹Π²Π°Π»ΠΎΡΡŒ ΠΊΠ°ΠΊ ΠΏΡ€ΠΈ записи, Ρ‚Π°ΠΊ ΠΈ ΠΏΡ€ΠΈ балансировкС. ΠŸΡ€ΠΈ записи β€” ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ ΠΎΡ‚Π²Π΅Ρ‚ ΠΎΠ± ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΉ записи, ΠΏΠΎΠΊΠ° Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… плСйсмСнт Π³Ρ€ΡƒΠΏΠΏΠ°Ρ… Π½Π΅ подтвСрдят успСх. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΏΡ€Π°Π²ΠΈΠ»Π° распрСдСлСния Ρ€Π΅ΠΏΠ»ΠΈΠΊ Π² CRUSH map Ρƒ нас Π±Ρ‹Π»ΠΈ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΉ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ΅ Π½Π° хост, Ρ‚ΠΎ ΡΠ΅Ρ‚ΡŒ использовалась всСгда.

ΠŸΠΎΡ‚ΠΎΠΌΡƒ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ Π΄Π΅Π»ΠΎΠΌ Ρ€Π΅ΡˆΠΈΠ» слСгка Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ ΡΠ΅Ρ‚ΡŒ, ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ‹Ρ‚Π°ΡΡΡŒ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΅Ρ…Π°Ρ‚ΡŒ Π½Π° Ρ€Π°Π·Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ сСти.

Для Π½Π°Ρ‡Π°Π»Π° ΠΏΠΎΠΊΡ€ΡƒΡ‚ΠΈΠ» настройки сСтСвых ΠΊΠ°Ρ€Ρ‚. Начал с настройки ΠΎΡ‡Π΅Ρ€Π΅Π΄Π΅ΠΉ:

Ρ‡Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ:

ethtool -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

Π’ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ current ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π΄Π°Π»Π΅ΠΊΠΈ ΠΎΡ‚ maximums. Π£Π²Π΅Π»ΠΈΡ‡ΠΈΠ»:

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 000

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

Ну ΠΈ слСдуя Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ самого ceph

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

ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ» MTU Π΄ΠΎ 9000.

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

Π”ΠΎΠ±Π°Π²ΠΈΠ» Π² /etc/network/interfaces, Ρ‡Ρ‚ΠΎΠ± всС Π²Ρ‹ΡˆΠ΅ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»Π΅Π½Π½ΠΎΠ΅ Π³Ρ€ΡƒΠ·ΠΈΠ»ΠΎΡΡŒ ΠΏΡ€ΠΈ стартС

cat /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 RAM, получился Π½Π΅ΠΊΠΈΠΉ Ρ„Π°ΠΉΠ» ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ для sysctl

cat /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 ΠΏΠ°ΠΊΠ΅Ρ‚Π΅. Π’ нашСм случаС являСтся ΠΏΠ»Π°Ρ†Π΅Π±ΠΎ, просто
# выглядит красиво)

Π‘luster network Π±Ρ‹Π»Π° Π²Ρ‹Π΄Π΅Π»Π΅Π½Π° Π½Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… 10Gbps сСтСвых интСрфСйсах Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΏΠ»ΠΎΡΠΊΡƒΡŽ ΡΠ΅Ρ‚ΡŒ. На ΠΊΠ°ΠΆΠ΄ΠΎΠΉ машинС Π±Ρ‹Π»ΠΈ поставлСны сСтСвыС Π΄Π²ΡƒΡ…ΠΏΠΎΡ€Ρ‚ΠΎΠ²Ρ‹Π΅ ΠΊΠ°Ρ€Ρ‚Ρ‹ mellanox 10/25 Gbps, Π²ΠΎΡ‚ΠΊΠ½ΡƒΡ‚Ρ‹Π΅ Π² Π΄Π²Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… 10Gbps свича. АгрСгация ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΠ»Π°ΡΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ OSPF, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π±ΠΎΠ½Π΄ΠΈΠ½Π³ с lacp ΠΏΠΎΡ‡Π΅ΠΌΡƒ-Ρ‚ΠΎ ΠΏΠΎΠΊΠ°Π·Π°Π» ΡΡƒΠΌΠΌΠ°Ρ€Π½ΡƒΡŽ ΠΏΡ€ΠΎΠΏΡƒΡΠΊΠ½ΡƒΡŽ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ максимум Π² 16 Gbps, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ ospf ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ ΡƒΡ‚ΠΈΠ»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π» ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΎΠ±Π΅ дСсятки Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ машинС. Π’ Π΄Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠΈΡ… ΠΏΠ»Π°Π½Π°Ρ… Π±Ρ‹Π»ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ROCE Π½Π° этих мСланоксах, для ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΡ лэтэнси. Как настраивали эту Ρ‡Π°ΡΡ‚ΡŒ сСти:

  1. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ сами ΠΌΠ°ΡˆΠΈΠ½Ρ‹ ΠΈΠΌΠ΅ΡŽΡ‚ внСшниС айпишники Π½Π° BGP, Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ Π½Π°ΠΌ софт β€” ( Π° Ρ‚ΠΎΡ‡Π½Π΅Π΅ Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ‚ написания ΡΡ‚Π°Ρ‚ΡŒΠΈ это Π±Ρ‹Π» frr=6.0-1 ) ΡƒΠΆΠ΅ стоял.
  2. ВсСго Π½Π° ΠΌΠ°ΡˆΠΈΠ½Π°Ρ… Π±Ρ‹Π»ΠΎ Π΄Π²Π΅ сСтСвых ΠΏΠΎ Π΄Π²Π° интСрфСйса β€” Π² суммС 4 ΠΏΠΎΡ€Ρ‚Π°. Одна сСтСвая ΠΊΠ°Ρ€Ρ‚Π° двумя ΠΏΠΎΡ€Ρ‚Π°ΠΌΠΈ смотрСла Π½Π° Ρ„Π°Π±Ρ€ΠΈΠΊΡƒ ΠΈ Π½Π° Π½Π΅ΠΉ Π±Ρ‹Π» настроСн BGP, вторая β€” двумя ΠΏΠΎΡ€Ρ‚Π°ΠΌΠΈ смотрСла Π² Π΄Π²Π° Ρ€Π°Π·Π½Ρ‹Ρ… свитча ΠΈ Π½Π° Π½Π΅Ρ‘ Π±Ρ‹Π» Π½Π°Ρ‚Ρ€Π°Π²Π»Π΅Π½ OSPF

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΏΠΎ настройкС OSPF: Основная Π·Π°Π΄Π°Ρ‡Π° β€” Π°Π³Ρ€Π΅Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π²Π° Π»ΠΈΠ½ΠΊΠ° ΠΈ ΠΈΠΌΠ΅Ρ‚ΡŒ fault tolerance.
Π΄Π²Π° сСтСвых интСрфСйса настроСны Π² Π΄Π²Π΅ простых плоских сСти β€” 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

ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Π° видят.

DISK

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ шагом Ρ€Π΅ΡˆΠΈΠ» ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ дисков. Для SSD помСнял ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊ Π½Π° noop, для HDD β€” deadline. Если Π³Ρ€ΡƒΠ±ΠΎ β€” Ρ‚ΠΎ NOOP Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΠΎ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡƒ «ΠΊΡ‚ΠΎ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ встал β€” Ρ‚ΠΎΠ³ΠΎ ΠΈ Ρ‚Π°ΠΏΠΊΠΈ», Ρ‡Ρ‚ΠΎ ΠΏΠΎ английский Π·Π²ΡƒΡ‡ΠΈΡ‚ ΠΊΠ°ΠΊ «FIFO (First In, First Out)». Запросы Π²ΡΡ‚Π°ΡŽΡ‚ Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ ΠΈΡ… поступлСния. 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
The value of nr_requests determines the amount of I/O requests that get buffered before the I/O scheduler sends / receives data to the block device, if you are using a RAID card / Block Device that can handle a larger queue than what the I/O scheduler is set to, raising the value of nr_requests may help to improve throughout and reduce server load when large amounts of I/O occur on the server. If you are using Deadline or CFQ as the scheduler, it is suggested that you should set the nr_request value to 2 times the value of queue depth.

НО! Π‘Π°ΠΌΠΈ Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ CEPH ΡƒΠ±Π΅ΠΆΠ΄Π°ΡŽΡ‚ нас, Ρ‡Ρ‚ΠΎ ΠΈΡ… систСма ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ΠΎΠ² Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π»ΡƒΡ‡ΡˆΠ΅

Π‘eph — ΠΎΡ‚ «Π½Π° ΠΊΠΎΠ»Π΅Π½ΠΊΠ΅» Π΄ΠΎ «production»

WBThrottle ΠΈ/ΠΈΠ»ΠΈ nr_requests

WBThrottle ΠΈ/ΠΈΠ»ΠΈ nr_requests
Π€Π°ΠΉΠ»ΠΎΠ²ΠΎΠ΅ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ для записи Π±ΡƒΡ„Π΅Ρ€ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π²Π²ΠΎΠ΄Π°/ Π²Ρ‹Π²ΠΎΠ΄Π°; это привносит Ρ†Π΅Π»Ρ‹ΠΉ ряд прСимущСств Ссли ΠΆΡƒΡ€Π½Π°Π» Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠ³ΠΎ хранСния находится Π½Π° Π±ΠΎΠ»Π΅Π΅ быстром носитСлС. Запросы ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ увСдомлСния ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄Π°Π½Π½Ρ‹Π΅ записаны Π² ΠΆΡƒΡ€Π½Π°Π», Π° Π·Π°Ρ‚Π΅ΠΌ ΡΠ±Ρ€Π°ΡΡ‹Π²Π°ΡŽΡ‚ΡΡ Π½Π° сам диск Π΄Π°Π½Π½Ρ‹Ρ… Π² Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ·Π΄Π½Π΅Π΅ врСмя ΠΏΠΎΠ»ΡŒΠ·ΡƒΡΡΡŒ стандартной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ Linux. Π­Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ для OSD ΡˆΠΏΠΈΠ½Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… дисков ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Π»Π°Ρ‚Π΅Π½Ρ‚Π½ΠΎΡΡ‚ΡŒ записи Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΡƒΡŽ SSD ΠΏΡ€ΠΈ записях ΠΌΠ°Π»Ρ‹ΠΌΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Π°ΠΌΠΈ. Вакая задСрТанная отлоТСнная запись Ρ‚Π°ΠΊΠΆΠ΅ позволяСт самому ядру ΠΏΠ΅Ρ€Π΅ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ запросы ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π²Π²ΠΎΠ΄Π°/ Π²Ρ‹Π²ΠΎΠ΄Π° ΠΊ диску с Π½Π°Π΄Π΅ΠΆΠ΄ΠΎΠΉ Π»ΠΈΠ±ΠΎ ΡΠ»ΠΈΡ‚ΡŒ ΠΈΡ… Π²ΠΎΠ΅Π΄ΠΈΠ½ΠΎ, Π»ΠΈΠ±ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ΡŒ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΌΡΡ Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°ΠΌ диска Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Π½Π΅ΠΊΠΈΠΉ Π±ΠΎΠ»Π΅Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ ΠΏΠΎΠ²Π΅Ρ€Ρ… своих пластин. ΠšΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ эффСкт состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹ΠΆΠ°Ρ‚ΡŒ слСгка большС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π²Π²ΠΎΠ΄Π°/ Π²Ρ‹Π²ΠΎΠ΄Π° ΠΈΠ· ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ диска Ρ‡Π΅ΠΌ это Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈ прямых ΠΈΠ»ΠΈ синхронных опСрациях Π²Π²ΠΎΠ΄Π°/ Π²Ρ‹Π²ΠΎΠ΄Π°.

Однако, Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ опрСдСлённая ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Ссли ΠΎΠ±ΡŠΡ‘ΠΌ приходящих записСй Π² Π΄Π°Π½Π½Ρ‹ΠΉ кластСр Ceph Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΠΏΠ΅Ρ€Π΅ΠΆΠ°Ρ‚ΡŒ всС возмоТности Π»Π΅ΠΆΠ°Ρ‰ΠΈΡ… Π² основС дисков. ΠŸΡ€ΠΈ Ρ‚Π°ΠΊΠΎΠΌ сцСнарии ΠΎΠ±Ρ‰Π΅Π΅ число находящихся Π² рассмотрСнии ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π²Π²ΠΎΠ΄Π°/ Π²Ρ‹Π²ΠΎΠ΄Π° Π² ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠΈ записи Π½Π° диск ΠΌΠΎΠ³ΡƒΡ‚ Π½Π΅ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΠ΅ΠΌΠΎ расти ΠΈ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π²Π²ΠΎΠ΄Π°/ Π²Ρ‹Π²ΠΎΠ΄Π°, Π·Π°ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΡƒΡŽ вСсь диск ΠΈ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Ceph. Запросы Π½Π° Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ Π²ΠΎΠ·Π΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ Π² особСнности ΠΏΠ»ΠΎΡ…ΠΎ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Π·Π°ΡΡ‚Ρ€Π΅Π²Π°ΡŽΡ‚ ΠΌΠ΅ΠΆΠ΄Ρƒ запросами записи, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… сСкунд для сброса Π½Π° основной диск.

Для ΠΏΠΎΠ±Π΅Π΄Ρ‹ Π½Π°Π΄ этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ Ceph ΠΈΠΌΠ΅Π΅Ρ‚ встроСнный Π² Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠ΅ Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ дроссСлирования ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΉ записи (writeback) с Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ WBThrottle. Он Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ для ограничСния ΠΎΠ±Ρ‰Π΅Π³ΠΎ ΠΎΠ±ΡŠΡ‘ΠΌΠ° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π²Π²ΠΎΠ΄Π°/ Π²Ρ‹Π²ΠΎΠ΄Π° ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΉ записи, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ ΠΈ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒ свой процСсс сброса Ρ€Π°Π½ΡŒΡˆΠ΅ Ρ‡Π΅ΠΌ Ρ‡Π΅ΠΌ это ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ Π±Ρ‹ СстСствСнным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π·Π° счёт Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ самим ядром. К соТалСнию, тСстированиС дСмонстрируСт, Ρ‡Ρ‚ΠΎ установлСнныС ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ значСния всё Π΅Ρ‰Ρ‘ ΠΌΠΎΠ³ΡƒΡ‚ Π½Π΅ ΡƒΡ€Π΅Π·Π°Ρ‚ΡŒ ΠΈΠΌΠ΅ΡŽΡ‰Π΅Π΅ΡΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π΄ΠΎ уровня, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΎΠ΅ воздСйствиС Π½Π° Π»Π°Ρ‚Π΅Π½Ρ‚Π½ΠΎΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ чтСния. Π Π΅Π³ΡƒΠ»ΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ это ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΈ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ ΠΎΠ±Ρ‰ΠΈΠ΅ Π΄Π»ΠΈΠ½Ρ‹ ΠΎΡ‡Π΅Ρ€Π΅Π΄Π΅ΠΉ записи ΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ Π½Π΅ ΡΠΈΠ»ΡŒΠ½Ρ‹ΠΌ Ρ‚Π°ΠΊΠΎΠ΅ воздСйствиС. Однако имССтся Π½Π΅ΠΊΠΈΠΉ компромисс: ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Ρ ΠΎΠ±Ρ‰Π΅Π΅ максимальноС число Ρ€Π°Π·Ρ€Π΅ΡˆΡ‘Π½Π½Ρ‹Ρ… ΠΊ постановкС Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ записСй, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ½ΠΈΠ·ΠΈΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ самого ядра ΠΌΠ°ΠΊΡΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ свою ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ упорядочСния ΠΏΠΎΡΡ‚ΡƒΠΏΠ°ΡŽΡ‰ΠΈΡ… запросов. Π‘Ρ‚ΠΎΠΈΡ‚ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π·Π°Π΄ΡƒΠΌΠ°Ρ‚ΡŒΡΡ Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π±ΠΎΠ»Π΅Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ для вашСго ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ случая примСнСния, Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… Π½Π°Π³Ρ€ΡƒΠ·ΠΎΠΊ ΠΈ Ρ€Π΅Π³ΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ΄ соотвСтствиС ΠΈΠΌ.

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Π³Π»ΡƒΠ±ΠΈΠ½ΠΎΠΉ Ρ‚Π°ΠΊΠΎΠΉ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΉ записи, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π»ΠΈΠ±ΠΎ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Ρ‚ΡŒ ΠΎΠ±Ρ‰Π΅Π΅ максимальноС количСство Π½Π΅Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π²Π²ΠΎΠ΄Π°/ Π²Ρ‹Π²ΠΎΠ΄Π°, примСняя установки WBThrottle, Π»ΠΈΠ±ΠΎ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Ρ максимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ для Π½Π΅Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π½Π° самом Π±Π»ΠΎΡ‡Π½ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ своСго ядра. И Ρ‚ΠΎ, ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ эффСктивно ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΎΠ΄Π½ΠΈΠΌ ΠΈ Ρ‚Π΅ΠΌ ΠΆΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ ΠΈ ΠΈΠΌΠ΅Π½Π½ΠΎ ваши прСдпочтСния Π±ΡƒΠ΄ΡƒΡ‚ Π² основС Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π΄Π°Π½Π½ΠΎΠΉ настройки.
Π’Π°ΠΊΠΆΠ΅ слСдуСт ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅ΡŽΡ‰Π°ΡΡΡ Π² Ceph систСма ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ΠΎΠ² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ являСтся Π±ΠΎΠ»Π΅Π΅ эффСктивной для Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΡ… запросов Π½Π° дисковом ΡƒΡ€ΠΎΠ²Π½Π΅. ΠŸΡ€ΠΈ сокращСнии ΠΎΠ±Ρ‰Π΅ΠΉ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ ΠΊ Π΄Π°Π½Π½ΠΎΠΌΡƒ диску основноС мСстополоТСниС нахоТдСния Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ пСрСмСщаСтся Π² Ceph, Π³Π΄Π΅ ΠΎΠ½ ΠΈΠΌΠ΅Π΅Ρ‚ большСС ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π°Π΄ Ρ‚Π΅ΠΌ ΠΊΠ°ΠΊΠΎΠΉ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ ΠΈΠΌΠ΅Π΅Ρ‚ опСрация Π²Π²ΠΎΠ΄Π°/ Π²Ρ‹Π²ΠΎΠ΄Π°. Рассмотрим ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

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

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

COMMON

И Π΅Ρ‰Π΅ нСсколько настроСк ядра, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π²Π°ΡˆΡƒ Ρ‚Π°Ρ‡ΠΊΡƒ мягкой ΠΈ ΡˆΠ΅Π»ΠΊΠΎΠ²ΠΈΡΡ‚ΠΎΠΉ Π²Ρ‹ΠΆΠ°Ρ‚ΡŒ Π΅Ρ‰Π΅ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈΠ· ΠΆΠ΅Π»Π΅Π·Π°

cat /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

Настройки, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ Π±Ρ‹ Π·Π°Π΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒΡΡ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅:

cat /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, ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Π² вСрсии ceph 12.2.2, ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ osd_recovery_threads. ΠŸΠΎΡ‚ΠΎΠΌΡƒ Π² ΠΏΠ»Π°Π½Ρ‹ Π±Ρ‹Π»ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΡ€ΠΎΠ΄Π΅ Π΄ΠΎ 12.2.12. ΠŸΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° ΠΏΠΎΠΊΠ°Π·Π°Π»Π° ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ Π² ΠΎΠ΄Π½ΠΎΠΌ кластСрС вСрсий 12.2.2 ΠΈ 12.2.12, Ρ‡Ρ‚ΠΎ позволяСт ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ rolling update.

ВСстовый кластСр

ЕстСствСнно, для тСстирования Π±Ρ‹Π»ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ‚Ρƒ-ΠΆΠ΅ Π²Π΅Ρ€ΡΠΈΡŽ Ρ‡Ρ‚ΠΎ ΠΈ Π½Π° бою, Π½ΠΎ Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π½Π°Ρ‡Π°Π»Π° ΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с кластСром Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ имСлась лишь Π±ΠΎΠ»Π΅Π΅ новая. ΠŸΠΎΡΠΌΠΎΡ‚Ρ€Π΅Π², Ρ‡Ρ‚ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΡ‚Π΅ Π² ΠΌΠΈΠ½ΠΎΡ€Π½ΠΎΠΉ вСрсии Π½Π΅ сильно большоС (1393 строки Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³Π°Ρ… ΠΏΡ€ΠΎΡ‚ΠΈΠ² 1436 Π² Π½ΠΎΠ²ΠΎΠΉ вСрсии), Ρ€Π΅ΡˆΠΈΠ»ΠΈ Π½Π°Ρ‡Π°Ρ‚ΡŒ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ (всС Ρ€Π°Π²Π½ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒΡΡ, Ρ‡Π΅Π³ΠΎ Π΅Ρ…Π°Ρ‚ΡŒ Π½Π° старом Ρ…Π»Π°ΠΌΠ΅)

ЕдинствСнноС, Ρ‡Ρ‚ΠΎ ΠΏΠΎΡΡ‚Π°Ρ€Π°Π»ΠΈΡΡŒ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ старой вСрсии β€” это ΠΏΠ°ΠΊΠ΅Ρ‚ ceph-deploy, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρ‡Π°ΡΡ‚ΡŒ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ (ΠΈ Ρ‡Π°ΡΡ‚ΡŒ сотрудников) Π±Ρ‹Π»Π° Π·Π°Ρ‚ΠΎΡ‡Π΅Π½Π° ΠΏΠΎΠ΄ Π΅Ρ‘ синтаксис. Новая вСрсия достаточно сильно ΠΎΡ‚Π»ΠΈΡ‡Π°Π»Π°ΡΡŒ, Π½ΠΎ Π½Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ самого кластСра Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ влияла, ΠΈ Π΅Ρ‘ оставили вСрсии 1.5.39

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΊΠΎΠΌΠ°Π½Π΄Π° ceph-disk явно Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° deprecated ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ-ΠΊΠ°, ΡƒΠ²Π°ΠΆΠ°Π΅ΠΌΡ‹Π΅, ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ ceph-volume β€” ΠΌΡ‹ Π½Π°Ρ‡Π°Π»ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ OSD ΠΈΠΌΠ΅Π½Π½ΠΎ этой ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ, Π½Π΅ тратя врСмя Π½Π° ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠ΅Π΅.

План Π±Ρ‹Π» Ρ‚Π°ΠΊΠΎΠ² β€” ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π·Π΅Ρ€ΠΊΠ°Π»ΠΎ ΠΈΠ· Π΄Π²ΡƒΡ… SSD дисков, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… размСстим ΠΆΡƒΡ€Π½Π°Π»Ρ‹ OSD, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚ΡΡ Π½Π° ΡˆΠΏΠΈΠ½Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… SASΠ°Ρ…. Π’Π°ΠΊ подстрахуСмся ΠΎΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΏΡ€ΠΈ ΠΏΠ°Π΄Π΅Π½ΠΈΠΈ диска с ΠΆΡƒΡ€Π½Π°Π»ΠΎΠΌ.

Π‘ΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ кластСр стали ΠΏΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ

cat /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 ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΎΡˆΠΈΠ±ΠΊΡƒ (которая, кстати, Π½Π° бою Π½Π΅ Π²ΠΎΡΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠ»Π°ΡΡŒ)

ΠΏΡ€ΠΈ создании OSD Ρ‚ΠΈΠΏΠ° bluestore Π±Π΅Π· указания ΠΏΡƒΡ‚ΠΈ ΠΊ 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

Посоздавали ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€Ρ‹, ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Ρ‹ ΠΈ OSD. Π’Π΅ΠΏΠ΅Ρ€ΡŒ хочСтся ΠΈΡ… ΠΏΠΎΠ³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎ Ρ€Π°Π·Π½ΠΎΠΌΡƒ, ΠΈΠ±ΠΎ Π² ΠΏΠ»Π°Π½Π°Ρ… ΠΈΠΌΠ΅Ρ‚ΡŒ диски Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² β€” быстрыС ΠΏΡƒΠ»Ρ‹ Π½Π° SSD ΠΈ большиС, Π½ΠΎ ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹Π΅ Π½Π° Π±Π»ΠΈΠ½Π°Ρ… SAS.

Π‘ΡƒΠ΄Π΅ΠΌ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ Π½Π° сСрвСрах ΠΏΠΎ 20 дисков, пСрвая дСсятка это ΠΎΠ΄ΠΈΠ½ Ρ‚ΠΈΠΏ, вторая β€” Π΄Ρ€ΡƒΠ³ΠΎΠΉ.
ΠŸΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½Π°Ρ, дСфолтная, ΠΊΠ°Ρ€Ρ‚Π° выглядит Ρ‚Π°ΠΊ:

ceph osd tree

root@сeph01-q:~# ceph osd tree
ID CLASS WEIGHT TYPE NAME STATUS REWEIGHT PRI-AFF
-1 14.54799 root default
-3 9.09200 host ceph01-q
0 ssd 1.00000 osd.0 up 1.00000 1.00000
1 ssd 1.00000 osd.1 up 1.00000 1.00000
2 ssd 1.00000 osd.2 up 1.00000 1.00000
3 ssd 1.00000 osd.3 up 1.00000 1.00000
4 hdd 1.00000 osd.4 up 1.00000 1.00000
5 hdd 0.27299 osd.5 up 1.00000 1.00000
6 hdd 0.27299 osd.6 up 1.00000 1.00000
7 hdd 0.27299 osd.7 up 1.00000 1.00000
8 hdd 0.27299 osd.8 up 1.00000 1.00000
9 hdd 0.27299 osd.9 up 1.00000 1.00000
10 hdd 0.27299 osd.10 up 1.00000 1.00000
11 hdd 0.27299 osd.11 up 1.00000 1.00000
12 hdd 0.27299 osd.12 up 1.00000 1.00000
13 hdd 0.27299 osd.13 up 1.00000 1.00000
14 hdd 0.27299 osd.14 up 1.00000 1.00000
15 hdd 0.27299 osd.15 up 1.00000 1.00000
16 hdd 0.27299 osd.16 up 1.00000 1.00000
17 hdd 0.27299 osd.17 up 1.00000 1.00000
18 hdd 0.27299 osd.18 up 1.00000 1.00000
19 hdd 0.27299 osd.19 up 1.00000 1.00000
-5 5.45599 host ceph02-q
20 ssd 0.27299 osd.20 up 1.00000 1.00000
21 ssd 0.27299 osd.21 up 1.00000 1.00000
22 ssd 0.27299 osd.22 up 1.00000 1.00000
23 ssd 0.27299 osd.23 up 1.00000 1.00000
24 hdd 0.27299 osd.24 up 1.00000 1.00000
25 hdd 0.27299 osd.25 up 1.00000 1.00000
26 hdd 0.27299 osd.26 up 1.00000 1.00000
27 hdd 0.27299 osd.27 up 1.00000 1.00000
28 hdd 0.27299 osd.28 up 1.00000 1.00000
29 hdd 0.27299 osd.29 up 1.00000 1.00000
30 hdd 0.27299 osd.30 up 1.00000 1.00000
31 hdd 0.27299 osd.31 up 1.00000 1.00000
32 hdd 0.27299 osd.32 up 1.00000 1.00000
33 hdd 0.27299 osd.33 up 1.00000 1.00000
34 hdd 0.27299 osd.34 up 1.00000 1.00000
35 hdd 0.27299 osd.35 up 1.00000 1.00000
36 hdd 0.27299 osd.36 up 1.00000 1.00000
37 hdd 0.27299 osd.37 up 1.00000 1.00000
38 hdd 0.27299 osd.38 up 1.00000 1.00000
39 hdd 0.27299 osd.39 up 1.00000 1.00000
-7 6.08690 host ceph03-q
40 ssd 0.27299 osd.40 up 1.00000 1.00000
41 ssd 0.27299 osd.41 up 1.00000 1.00000
42 ssd 0.27299 osd.42 up 1.00000 1.00000
43 ssd 0.27299 osd.43 up 1.00000 1.00000
44 hdd 0.27299 osd.44 up 1.00000 1.00000
45 hdd 0.27299 osd.45 up 1.00000 1.00000
46 hdd 0.27299 osd.46 up 1.00000 1.00000
47 hdd 0.27299 osd.47 up 1.00000 1.00000
48 hdd 0.27299 osd.48 up 1.00000 1.00000
49 hdd 0.27299 osd.49 up 1.00000 1.00000
50 hdd 0.27299 osd.50 up 1.00000 1.00000
51 hdd 0.27299 osd.51 up 1.00000 1.00000
52 hdd 0.27299 osd.52 up 1.00000 1.00000
53 hdd 0.27299 osd.53 up 1.00000 1.00000
54 hdd 0.27299 osd.54 up 1.00000 1.00000
55 hdd 0.27299 osd.55 up 1.00000 1.00000
56 hdd 0.27299 osd.56 up 1.00000 1.00000
57 hdd 0.27299 osd.57 up 1.00000 1.00000
58 hdd 0.27299 osd.58 up 1.00000 1.00000
59 hdd 0.89999 osd.59 up 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 crush move ceph01-host root=rack01 зависала, ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€Ρ‹ Π½Π°Ρ‡ΠΈΠ½Π°Π»ΠΈ ΠΏΠ°Π΄Π°Ρ‚ΡŒ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ. ΠŸΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ простым CTRL+C Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π»ΠΎ кластСр Π² ΠΌΠΈΡ€ ΠΆΠΈΠ²Ρ‹Ρ….

Поиск ΠΏΠΎΠΊΠ°Π·Π°Π» Ρ‚Π°ΠΊΡƒΡŽ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ: https://tracker.ceph.com/issues/23386

РСшСниСм оказалось ΡΠ΄Π°ΠΌΠΏΠΈΡ‚ΡŒ crushmap ΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΎΡ‚Ρ‚ΡƒΠ΄Π° ΡΠ΅ΠΊΡ†ΠΈΡŽ rule 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 #Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌ Π² кластСр

Ахтунг: данная опСрация ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ рСбаланс placement group ΠΌΠ΅ΠΆΠ΄Ρƒ OSD. Π£ нас это Π²Ρ‹Π·Π²Π°Π»ΠΎ, Π½ΠΎ ΠΎΡ‡Π΅Π½ΡŒ нСбольшой.

А ΡΡ‚Ρ€Π°Π½Π½ΠΎΡΡ‚ΡŒ, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΡ‹ ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΠ»ΠΈΡΡŒ Π² тСстовом кластСрС β€” это Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ послС ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ сСрвСра OSD Π·Π°Π±Ρ‹Π²Π°Π»ΠΈ, Ρ‡Ρ‚ΠΎ ΠΈΡ… ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠ½ΡƒΠ»ΠΈ Π² Π½ΠΎΠ²Ρ‹Π΅ сСрвСра ΠΈ стойки, ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π»ΠΈΡΡŒ Π² root default.
Π’ ΠΈΡ‚ΠΎΠ³Π΅, собрав ΠΊΠΎΠ½Π΅Ρ‡Π½ΡƒΡŽ схСму, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΡ‹ создали ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ root для ssd дисков ΠΈ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ для ΡˆΠΏΠΈΠ½Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ…, ΠΌΡ‹ растащили всС ΠžΠ‘Π” ΠΏΠΎ стойкам Π° просто ΡƒΠ΄Π°Π»ΠΈΠ»ΠΈ default root. ПослС ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ OSD стали ΠΎΡΡ‚Π°Π²Π°Ρ‚ΡŒΡΡ Π½Π° своих мСстах.
Покопавшись ΠΏΠΎΠ·ΠΆΠ΅ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ нашли ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° это ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅. О Π½Π΅ΠΌ Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ части

Как ΠΌΡ‹ Π΄Π΅Π»Π°Π»ΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Π³Ρ€ΡƒΠΏΠΏΡ‹ ΠΏΠΎ Ρ‚ΠΈΠΏΠ°ΠΌ дисков.

Для Π½Π°Ρ‡Π°Π»Π° создали Π΄Π²Π° root-Π° β€” для 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-default пустым, ΠΏΠΎΡ‚ΠΎΠΌΡƒ ΠΌΠΎΠΆΠ΅ΠΌ Π΅Π³ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ

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

Π”Π°Π»Π΅Π΅ Π½Π°Π΄ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»Π° распрСдСлСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΡ€ΠΈΠ²ΡΠ·Ρ‹Π²Π°Ρ‚ΡŒ ΠΊ создаваСмым ΠΏΡƒΠ»Π°ΠΌ β€” Π² ΠΏΡ€Π°Π²ΠΈΠ»Π°Ρ… ΡƒΠΊΠ°ΠΆΠ΅ΠΌ Π² ΠΊΠ°ΠΊΠΈΠ΅ root ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠ»Π°ΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ нашСго ΠΏΡƒΠ»Π° ΠΈ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… сСрвСрах, ΠΈΠ»ΠΈ Π² Ρ€Π°Π·Π½Ρ‹Ρ… стойках (ΠΌΠΎΠΆΠ½ΠΎ Π΄Π°ΠΆΠ΅ Π² Ρ€Π°Π·Π½Ρ‹Ρ… root, Ссли ΠΈΠΌΠ΅Π΅ΠΌ Ρ‚Π°ΠΊΠΎΠ΅ распрСдСлСниС)

ΠŸΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ ΠΊΠ°ΠΊ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏ Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ:
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

К Π²Ρ‹Π±ΠΎΡ€Ρƒ количСства плСйсмСнт Π³Ρ€ΡƒΠΏΠΏ Π½Π°Π΄ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ с Π·Π°Ρ€Π°Π½Π΅Π΅ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΌΡΡ Π²ΠΈΠ΄Π΅Π½ΠΈΠ΅ΠΌ Π½Π° свой кластСр β€” сколько ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ ΠžΠ‘Π” Ρ‚Π°ΠΌ Π±ΡƒΠ΄Π΅Ρ‚, ΠΊΠ°ΠΊΠΎΠ΅ количСство Π΄Π°Π½Π½Ρ‹Ρ… (Π² ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚Π°Ρ… ΠΎΡ‚ ΠΎΠ±Ρ‰Π΅Π³ΠΎ объСма) Π±ΡƒΠ΄Π΅Ρ‚ Π² ΠΏΡƒΠ»Π΅, ΠΊΠ°ΠΊΠΎΠ΅ количСство Π΄Π°Π½Π½Ρ‹Ρ… всСго.

Π‘ΡƒΠΌΠΌΠ°Ρ€Π½ΠΎ ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π΅ ΠΈΠΌΠ΅Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ 300 плСйсмСнт Π³Ρ€ΡƒΠΏΠΏ Π½Π° диск, ΠΈ ΠΏΡ€ΠΎΡ‰Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π±Π°Π»Π°Π½ΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ малСнькими плСйсмСнт Π³Ρ€ΡƒΠΏΠΏΠ°ΠΌΠΈ β€” Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Ссли вСсь ваш ΠΏΡƒΠ» Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ 10 Tb ΠΈ Π² Π½Π΅ΠΌ 10 PG β€” Ρ‚ΠΎ Π±Π°Π»Π°Π½ΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΊΠΈΠ΄Ρ‹Π²Π°Π½ΠΈΠ΅ΠΌ Ρ‚Π΅Ρ€Π°Π±Π°ΠΉΡ‚Π½Ρ‹Ρ… ΠΊΠΈΡ€ΠΏΠΈΡ‡Π΅ΠΉ (pg) Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ β€” ΠΏΠ΅Ρ€Π΅ΡΡ‹ΠΏΠ°Ρ‚ΡŒ пСсок с малСньким Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ пСсчинок ΠΏΠΎ Π²Ρ‘Π΄Ρ€Π°ΠΌ ΠΏΡ€ΠΎΡ‰Π΅ ΠΈ Ρ€ΠΎΠ²Π½Π΅Π΅).

Но Π½Π°Π΄ΠΎ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ Ρ‡Ρ‚ΠΎ Ρ‡Π΅ΠΌ большС количСство PG β€” Ρ‚Π΅ΠΌ большС рСсурсов тратится Π½Π° вычислСниС ΠΈΡ… располоТСния β€” Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ ΡƒΡ‚ΠΈΠ»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΈ ЦПУ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π°Ρ‚ΡŒ ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€, прСдоставлСнный Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ 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/

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com