Ceph - bho "air a' ghlùin" gu "cinneasachadh"

Roghainn CEPH. Pàirt 1

Bha còig racaichean againn, deich suidsichean optigeach, BGP air an rèiteachadh, dusan SSDs no dhà agus dòrlach de dhràibhearan SAS de gach dath is meud, a bharrachd air proxmox agus am miann a h-uile statach a chuir nar stòradh S3 fhèin. Chan e gu robh seo uile riatanach airson virtualization, ach aon uair ‘s gun do thòisich thu a’ cleachdadh opensource, an uairsin falbh nad chur-seachad gu deireadh. B’ e BGP an aon rud a chuir dragh orm. Chan eil dad air an t-saoghal nas neo-chomasach, neo-chùramach agus mì-mhoralta na slighe BGP a-staigh. Agus bha fios agam gum biodh sinn gu math luath a’ dol a-steach dha.

Ceph - bho "air a' ghlùin" gu "cinneasachadh"

Bha an obair banal - bha CEPH ann, cha do dh'obraich e glè mhath. Dh'fheumadh e a bhith air a dhèanamh gu math.
Bha an cruinneachadh a fhuair mi ioma-ghnèitheach, air a ghleusadh ann an cabhaig agus cha mhòr nach deach a ghleusadh. Bha e air a dhèanamh suas de dhà bhuidheann de nodan eadar-dhealaichte, le aon chliath cumanta ag obair an dà chuid mar bhuidheann agus mar lìonra poblach. Chaidh na nodan a lìonadh le ceithir seòrsaichean diosc - dà sheòrsa SSD, air an cruinneachadh ann an dà riaghailt suidheachaidh fa leth, agus dà sheòrsa HDD de dhiofar mheudan, air an cruinneachadh ann an treas buidheann. Chaidh an duilgheadas le diofar mheudan fhuasgladh le diofar chuideaman OSD.

Tha an rèiteachadh fhèin air a roinn ann an dà phàirt - gleusadh siostam-obrachaidh и a’ gleusadh an CEPH fhèin agus na roghainnean aige.

Ùrachadh luath air ìre OS

lìonra

Thug latency àrd buaidh air gach cuid clàradh agus cothromachadh. Nuair a bhios tu a’ sgrìobhadh, oir chan fhaigh an neach-dèiligidh freagairt mu sgrìobhadh soirbheachail gus am bi mac-samhail dàta ann am buidhnean suidheachaidh eile a’ dearbhadh soirbheachas. Leis gu robh na riaghailtean airson a bhith a’ sgaoileadh mac-samhail ann am mapa CRUSH mar aon mhac-samhail airson gach aoigh, bha an lìonra air a chleachdadh an-còmhnaidh.

Mar sin, b 'e a' chiad rud a chuir mi romhpa an lìonra làithreach atharrachadh beagan, aig an aon àm a 'feuchainn ri toirt a chreidsinn orm gluasad gu lìonraidhean fa leth.

An toiseach, thionndaidh mi na roghainnean cairt lìonraidh. Air tòiseachadh le bhith a’ stèidheachadh ciudha:

Dè thachar:

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

Chìthear gu bheil na paramadairean gnàthach fada bho na h-ìrean as àirde. Àrdachadh:

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

Air a stiùireadh le artaigil sàr-mhath

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

leudaich fad a’ chiudha cur txqueuelen bho 1000 gu 10 000

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

Uill, a’ leantainn sgrìobhainnean ceph fhèin

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

àrdachadh DUINE gu 9000.

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

Air a chur ri /etc/network/interfaces gus am bi a h-uile rud gu h-àrd air a luchdachadh aig àm tòiseachaidh

cat / etc / lìonra / eadar-aghaidh

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

Às deidh sin, às deidh an aon artaigil, thòisich mi gu smaoineachail a’ tionndadh làmhan an kernel 4.15. Leis gu bheil 128G RAM aig na nodan, fhuair sinn faidhle rèiteachaidh sònraichte airson 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 пакете. В нашем случае является плацебо, просто
# выглядит красиво)

Сlìonra luster air a riarachadh air eadar-aghaidh lìonra 10Gbps air leth gu lìonra còmhnard air leth. Chaidh cairtean lìonra dà-phort a thoirt do gach inneal mellanox 10/25 Gbps air a phlugadh a-steach do dhà suidse 10Gbps air leth. Chaidh co-chruinneachadh a dhèanamh a’ cleachdadh OSPF, leis gu robh ceangal le lacp airson adhbhar air choireigin a’ sealltainn trochur iomlan de 16 Gbps aig a’ char as àirde, fhad ‘s a bha ospf gu soirbheachail a’ cleachdadh an dà dhusan gu tur air gach inneal. Bha planaichean eile ann airson ROCE a chleachdadh air na melanoxes sin gus latency a lughdachadh. Mar a chaidh am pàirt seo den lìonra a rèiteachadh:

  1. Leis gu bheil IPan taobh a-muigh aig na h-innealan fhèin air BGP, feumaidh sinn bathar-bog - (no an àite, aig àm sgrìobhaidh, bha e frr = 6.0-1 ) bha e na sheasamh mu thràth.
  2. Gu h-iomlan, bha dà eadar-aghaidh lìonra aig na h-innealan, dà eadar-aghaidh gach fear - 4 puirt gu h-iomlan. Sheall aon chairt lìonra air an fhactaraidh le dà phort agus chaidh BGP a rèiteachadh air, choimhead an dàrna fear air dà suidse eadar-dhealaichte le dà phort agus chaidh OSPF a shuidheachadh air.

Barrachd mu bhith a’ stèidheachadh OSPF: Is e am prìomh obair dà cheangal a chruinneachadh agus fulangas sgàinidhean a bhith agad.
dà eadar-aghaidh lìonra air an rèiteachadh ann an dà lìonra còmhnard sìmplidh - 10.10.10.0/24 agus 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

leis am faic càraichean a chèile.

DISC

B’ e an ath cheum coileanadh diosc a bharrachadh. Airson SSD, dh'atharraich mi an clàr-ama gu noop, airson HDD - Ceann-latha. Ma tha e garbh, bidh NOOP ag obair air a’ phrionnsapal “cò a dh’ èiricheas an toiseach - sin na slipers ”, a tha sa Bheurla a’ faireachdainn mar “FIFO (First In, First Out)”. Tha iarrtasan air an ciudha nuair a thig iad. Tha DEADLINE nas fhasa a leughadh, agus tha am pròiseas bhon ciudha a’ faighinn cothrom cha mhòr a-mhàin air an diosc aig àm an obrachaidh. Airson an t-siostam againn, tha seo fìor mhath - às deidh a h-uile càil, chan eil ach aon phròiseas ag obair le gach diosc - an daemon OSD.
(Faodaidh an fheadhainn a tha airson dàibheadh ​​​​a-steach don chlàr-ama I / O leughadh mu dheidhinn an seo:
http://www.admin-magazine.com/HPC/Articles/Linux-I-O-Schedulers

An fheadhainn as fheàrr leotha leughadh ann an Ruisis: https://www.opennet.ru/base/sys/linux_shedulers.txt.html)

Anns na molaidhean airson gleusadh Linux, thathas cuideachd a’ moladh àrdachadh nr_request

nr_iarrtasan
Bidh luach nr_requests a’ dearbhadh na tha de dh’ iarrtasan I / O a gheibh bufair mus cuir an clàr-ama I / O / a gheibh dàta chun inneal bloca, ma tha thu a’ cleachdadh cairt RAID / Inneal Bloc as urrainn ciudha nas motha a làimhseachadh na tha an I / I Tha clàr-ama / O air a shuidheachadh gu, is dòcha gun cuidich àrdachadh luach nr_requests le bhith ag adhartachadh air feadh agus a’ lughdachadh luchd an fhrithealaiche nuair a thachras tòrr I/O air an fhrithealaiche. Ma tha thu a’ cleachdadh Ceann-latha no CFQ mar an clàr-ama, thathas a’ moladh gum bu chòir dhut an luach nr_request a shuidheachadh gu 2 uiread luach doimhneachd a’ chiudha.

ACH! Tha saoranaich iad fhèin, luchd-leasachaidh CEPH, a’ toirt a chreidsinn oirnn gu bheil an siostam phrìomhachasan aca ag obair nas fheàrr.

Ceph - bho "air a' ghlùin" gu "cinneasachadh"

WBtrottle agus/no nr_requests

WBtrottle agus/no nr_requests
Bidh stòradh faidhle a’ cleachdadh I/O bufair airson sgrìobhadh; bheir seo grunn bhuannachdan ma tha an loga stòraidh faidhle air meadhanan nas luaithe. Thathas a’ cur fios gu iarrtasan teachdaiche cho luath ‘s a thèid an dàta a sgrìobhadh chun loga, agus an uairsin air a shruthladh chun diosc dàta fhèin nas fhaide air adhart a’ cleachdadh gnìomhachd àbhaisteach Linux. Tha seo ga dhèanamh comasach do dhràibhearan fearsaid OSD a bhith a’ toirt seachad sgrìobhadh latency coltach ri SSDs nuair a bhios iad a’ sgrìobhadh ann an spreadhaidhean beaga. Tha an dàil sgrìobhaidh seo cuideachd a’ leigeil leis an kernel fhèin iarrtasan I/O gu diosc ath-eagrachadh, leis an dòchas an cur còmhla no leigeil leis na cinn diosc a th’ ann mar-thà slighe nas fheàrr a ghabhail thairis air na truinnsearan aca. Is e a’ bhuaidh mu dheireadh gur dòcha gum bi e comasach dhut beagan a bharrachd I/O a bhrùthadh a-mach às gach diosc na bhiodh comasach le I/O dìreach no sioncronaich.

Ach, bidh duilgheadas sònraichte ag èirigh ma tha na tha de sgrìobhadh a-steach gu brabhsair Ceph sònraichte a’ dol thairis air comasan nan diosgan bunaiteach. Ann an suidheachadh mar sin, faodaidh an àireamh iomlan de I/Os a tha a’ feitheamh ri bhith air a sgrìobhadh gu diosc fàs gu neo-riaghlaidh agus leantainn gu ciudha I/O a lìonas an diosc gu lèir agus ciudhaichean Ceph. Tha iarrtasan leughaidh gu sònraichte dona leis gu bheil iad a’ dol an sàs eadar iarrtasan sgrìobhaidh, a bheir grunn dhiog airson gluasad chun phrìomh dhràibhear.

Gus faighinn thairis air an duilgheadas seo, tha inneal smeòrach ath-sgrìobhaidh aig Ceph a chaidh a thogail a-steach do stòradh fhaidhlichean ris an canar WBThrottle. Tha e air a dhealbhadh gus an àireamh iomlan de sgrìobhadh leisg I/O a chuingealachadh as urrainn ciudha a dhèanamh agus am pròiseas sruthadh aca a thòiseachadh nas luaithe na bhiodh an kernel fhèin mar as trice air a chomasachadh. Gu mì-fhortanach, tha deuchainnean a 'sealltainn gur dòcha nach bi na h-uireasbhaidhean fhathast a' gearradh a 'ghiùlan gu ìre a dh' fhaodadh a 'bhuaidh seo air latency leughaidh a lùghdachadh. Faodaidh tweking an giùlan seo atharrachadh agus faid ciudha sgrìobhaidh iomlan a lughdachadh agus a dhèanamh comasach nach bi a’ bhuaidh cho dona. Ach, tha malairt dheth ann: le bhith a’ lughdachadh na h-àireimh iomlan de chlàran a tha ceadaichte a bhith air an ciudha, faodaidh tu lùghdachadh a dhèanamh air comas an kernel fhèin gus a h-èifeachdas a mheudachadh ann a bhith ag òrdachadh iarrtasan a tha a’ tighinn a-steach. Is fhiach smaoineachadh beagan mu na tha a dhìth ort airson an tagradh sònraichte agad, an eallach obrach agad, agus atharrachadh gus a bhith co-ionnan.

Gus smachd a chumail air doimhneachd ciudha sgrìobhaidh air ais, faodaidh tu an dàrna cuid an cùl-taic iomlan de I/Os a lughdachadh le bhith a’ cleachdadh suidheachadh WBThrottle, no lughdaich an luach as àirde airson cùl-stòran aig an ìre as motha den kernel agad. Faodaidh an dà chuid smachd èifeachdach a chumail air an aon ghiùlan, agus is e na roghainnean agad a bhios mar bhunait airson an suidheachadh seo a bhuileachadh.
Bu chòir a thoirt fa-near cuideachd gu bheil siostam prìomhachas gnìomhachd Ceph nas èifeachdaiche airson ceistean ìre diosc nas giorra. Nuair a lùghdaicheas tu an ciudha iomlan gu diosc sònraichte, thèid prìomh àite a’ chiudha a ghluasad gu Ceph, far a bheil barrachd smachd aige air dè am prìomhachas a th’ aig gnìomhachd I/O. Beachdaich air an eisimpleir a leanas:

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

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

COIMHEARSNACHD

Agus beagan a bharrachd atharrachaidhean kernel gus do chàr a dhèanamh bog agus silidh gus barrachd coileanaidh a bhrùthadh a-mach à iarann

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
# Ну и открытых файлов у нас,вероятно, будет сильно больше, чем указано по дефолту. 

Bogadh ann an CEPH

Suidhichidhean air am bu mhath leam fuireach ann am barrachd mionaideachd:

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

Tha cuid de na paramadairean a chaidh a dhearbhadh air QA air dreach 12.2.12 a dhìth ann an dreach ceph 12.2.2, mar eisimpleir osd_recovery_threads. Mar sin, bha na planaichean a’ toirt a-steach ùrachadh air a’ phrothaid gu 12.2.12. Tha cleachdadh air co-chòrdalachd a nochdadh ann an aon bhuidheann de dhreachan 12.2.2 agus 12.2.12, a leigeas leat ùrachadh leantainneach a dhèanamh.

Buidheann deuchainn

Gu nàdarra, airson deuchainn bha feum air an aon dreach ’s a bha anns a’ bhlàr, ach aig an àm a thòisich mi ag obair leis a’ bhraisle, cha robh aig an taigh-tasgaidh ach fear nas ùire. Às deidh dhut coimhead air na chì thu anns an dreach bheag, chan eil e glè mhòr (1393 loidhnichean ann an configs an aghaidh 1436 anns an dreach ùr), chuir sinn romhainn tòiseachadh air deuchainn a dhèanamh air an fhear ùr (ùrachadh co-dhiù, carson a thèid thu air an t-seann stuth)

Is e an aon rud a dh’ fheuch iad ris an t-seann dreach fhàgail a’ phacaid ceph-deploy oir bha cuid de na goireasan (agus cuid den luchd-obrach) air an dèanamh freagarrach airson a cho-chòrdadh. Bha an dreach ùr gu math eadar-dhealaichte, ach cha tug e buaidh air obrachadh a’ bhraisle fhèin, agus chaidh fhàgail leis na dreachan 1.5.39

Leis gu bheil an àithne ceph-disk ag ràdh gu soilleir gu bheil e air a mholadh agus cleachd an àithne ceph-volume, feadhainn a ghràidh - thòisich sinn air OSD a chruthachadh leis an àithne seo, gun a bhith a’ caitheamh ùine air an t-seann fhear.

Bha am plana mar a leanas - gus sgàthan de dhà dhiosca SSD a chruthachadh, air an cuir sinn logaichean OSD, a tha, an uair sin, suidhichte air fearsaid SAS. Mar sin nì sinn àrachas an aghaidh duilgheadasan dàta nuair a thuiteas an diosc iris.

Cruthaich cruinneachadh stàilinn a rèir na sgrìobhainnean

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

Is e mearachd a’ chiad rud air an do thuit mi ann an obair an tionndaidh seo de ceph-deploy le cruinneachadh de dhreach 12.2.12 nuair a bha mi a’ feuchainn ri OSD a chruthachadh le db air ionnsaigh bathar-bog -

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

Gu dearbh, chan eil blkid a’ sealltainn PARTUUID, bha agam ri sgaraidhean a chruthachadh le làimh:

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

Tha e coltach gu bheil a h-uile dad deiseil, bidh sinn a ’feuchainn ris an OSD a chruthachadh a-rithist agus a’ faighinn a ’mhearachd a leanas (nach deach, leis an t-slighe, ath-riochdachadh ann am blàr)

nuair a chruthaicheas tu bluestore OSD gun a bhith a’ sònrachadh an t-slighe gu WAL, ach a’ sònrachadh 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

A bharrachd air an sin, ma chruthaicheas tu air an aon sgàthan (no ann an àite eile, airson taghadh) sgaradh eile airson WAL agus sònraich e nuair a chruthaicheas tu an OSD, thèid a h-uile càil gu rèidh (ach a-mhàin coltas WAL air leth, is dòcha nach eil agad. ag iarraidh).

Ach, leis gu robh e fhathast anns na planaichean fad às gus WAL a thoirt gu NVMe, cha robh an cleachdadh gun fheum.

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

Cruthaich sgrùdairean, manaidsearan agus OSD. A-nis tha mi airson an cruinneachadh ann an diofar dhòighean, oir tha mi an dùil diofar sheòrsaichean de dhioscaichean a bhith agam - amaran luath air SSD agus mòr, ach slaodach air pancagan SAS.

Gabhaidh sinn ris gu bheil 20 diosc air na frithealaichean, is e a’ chiad deich aon seòrsa, is e an dàrna fear fear eile.
Tha am mapa bunaiteach a’ coimhead mar seo:

ceph osd craobh

root@ceph01-q: ~# craobh ceph osd
ID CLASS WEIGHT TYPE NAME STATUS REWEIGHT PRI-AFF
-1 14.54799 freumh bunaiteach
-3 9.09200 aoigheachd ceph01-q
0 ssd 1.00000 osd.0 suas 1.00000 1.00000
1 ssd 1.00000 osd.1 suas 1.00000 1.00000
2 ssd 1.00000 osd.2 suas 1.00000 1.00000
3 ssd 1.00000 osd.3 suas 1.00000 1.00000
4 hdd 1.00000 osd.4 suas 1.00000 1.00000
5 hdd 0.27299 osd.5 suas 1.00000 1.00000
6 hdd 0.27299 osd.6 suas 1.00000 1.00000
7 hdd 0.27299 osd.7 suas 1.00000 1.00000
8 hdd 0.27299 osd.8 suas 1.00000 1.00000
9 hdd 0.27299 osd.9 suas 1.00000 1.00000
10 hdd 0.27299 osd.10 suas 1.00000 1.00000
11 hdd 0.27299 osd.11 suas 1.00000 1.00000
12 hdd 0.27299 osd.12 suas 1.00000 1.00000
13 hdd 0.27299 osd.13 suas 1.00000 1.00000
14 hdd 0.27299 osd.14 suas 1.00000 1.00000
15 hdd 0.27299 osd.15 suas 1.00000 1.00000
16 hdd 0.27299 osd.16 suas 1.00000 1.00000
17 hdd 0.27299 osd.17 suas 1.00000 1.00000
18 hdd 0.27299 osd.18 suas 1.00000 1.00000
19 hdd 0.27299 osd.19 suas 1.00000 1.00000
-5 5.45599 aoigheachd ceph02-q
20 ssd 0.27299 osd.20 suas 1.00000 1.00000
21 ssd 0.27299 osd.21 suas 1.00000 1.00000
22 ssd 0.27299 osd.22 suas 1.00000 1.00000
23 ssd 0.27299 osd.23 suas 1.00000 1.00000
24 hdd 0.27299 osd.24 suas 1.00000 1.00000
25 hdd 0.27299 osd.25 suas 1.00000 1.00000
26 hdd 0.27299 osd.26 suas 1.00000 1.00000
27 hdd 0.27299 osd.27 suas 1.00000 1.00000
28 hdd 0.27299 osd.28 suas 1.00000 1.00000
29 hdd 0.27299 osd.29 suas 1.00000 1.00000
30 hdd 0.27299 osd.30 suas 1.00000 1.00000
31 hdd 0.27299 osd.31 suas 1.00000 1.00000
32 hdd 0.27299 osd.32 suas 1.00000 1.00000
33 hdd 0.27299 osd.33 suas 1.00000 1.00000
34 hdd 0.27299 osd.34 suas 1.00000 1.00000
35 hdd 0.27299 osd.35 suas 1.00000 1.00000
36 hdd 0.27299 osd.36 suas 1.00000 1.00000
37 hdd 0.27299 osd.37 suas 1.00000 1.00000
38 hdd 0.27299 osd.38 suas 1.00000 1.00000
39 hdd 0.27299 osd.39 suas 1.00000 1.00000
-7 6.08690 aoigheachd ceph03-q
40 ssd 0.27299 osd.40 suas 1.00000 1.00000
41 ssd 0.27299 osd.41 suas 1.00000 1.00000
42 ssd 0.27299 osd.42 suas 1.00000 1.00000
43 ssd 0.27299 osd.43 suas 1.00000 1.00000
44 hdd 0.27299 osd.44 suas 1.00000 1.00000
45 hdd 0.27299 osd.45 suas 1.00000 1.00000
46 hdd 0.27299 osd.46 suas 1.00000 1.00000
47 hdd 0.27299 osd.47 suas 1.00000 1.00000
48 hdd 0.27299 osd.48 suas 1.00000 1.00000
49 hdd 0.27299 osd.49 suas 1.00000 1.00000
50 hdd 0.27299 osd.50 suas 1.00000 1.00000
51 hdd 0.27299 osd.51 suas 1.00000 1.00000
52 hdd 0.27299 osd.52 suas 1.00000 1.00000
53 hdd 0.27299 osd.53 suas 1.00000 1.00000
54 hdd 0.27299 osd.54 suas 1.00000 1.00000
55 hdd 0.27299 osd.55 suas 1.00000 1.00000
56 hdd 0.27299 osd.56 suas 1.00000 1.00000
57 hdd 0.27299 osd.57 suas 1.00000 1.00000
58 hdd 0.27299 osd.58 suas 1.00000 1.00000
59 hdd 0.89999 osd.59 suas 1.00000 1.00000

Cruthaichidh sinn na racaichean brìgheil agus na frithealaichean againn fhèin le blackjack agus rudan eile:

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

Na duilgheadasan a choinnich sinn ann an sabaid brabhsair, nuair a tha thu a’ feuchainn ri aoigheachd ùr a chruthachadh agus a ghluasad gu raca gnàthaichte - an àithne ceph osd crush gluasad ceph01-host root = raca01 crochte, agus thòisich na faireadairean air tuiteam aon às deidh aon. Le bhith a’ cur stad air an àithne le CTRL + C sìmplidh thill am buidheann gu saoghal nam beò.

Nochd an rannsachadh an duilgheadas a leanas: https://tracker.ceph.com/issues/23386

B 'e am fuasgladh a bhith a' tilgeil a 'mhapa pronn agus a' toirt air falbh an earrann às an sin riaghailt 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 #загружаем в кластер

Achd: dh’ fhaodadh an gnìomhachd seo ath-chothromachadh buidhne suidheachaidh adhbhrachadh eadar OSDn. Tha sinn air adhbhrachadh, ach glè bheag.

Agus is e an rud neònach a choinnich sinn anns a’ bhuidheann deuchainn, às deidh dhaibh am frithealaiche OSD ath-thòiseachadh, dhìochuimhnich iad gun deach an gluasad gu frithealaichean agus racaichean ùra, agus gun do thill iad gu root default.
Mar thoradh air an sin, an dèidh dhuinn an sgeama mu dheireadh a chur ri chèile, anns an do chruthaich sinn freumh fa leth airson diosgan ssd agus air leth airson feadhainn fearsaid, tharraing sinn a h-uile OSD air na racaichean agus dìreach sguab sinn às am freumh bunaiteach. Às deidh an ath-thòiseachadh, thòisich na OSDs a’ fuireach nan àiteachan.
Lorg rummaging nas fhaide air adhart anns na sgrìobhainnean paramadair a tha an urra ris a’ ghiùlan seo. Mu dheidhinn anns an dàrna pàirt

Mar a rinn sinn diofar bhuidhnean a rèir seòrsaichean diosc.

An toiseach, chruthaich sinn dà fhreumh - airson ssd agus airson hdd

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

Leis gu bheil na frithealaichean suidhichte gu corporra ann an diofar racaichean, airson goireasachd, chruthaich sinn racaichean agus tha frithealaichean ann mu thràth

# Стойки:
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

agus diosgan sgapte a rèir an seòrsa ann an diofar luchd-frithealaidh

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:~# аналогично с другими серверами

Às deidh dhuinn na diosgan a sgapadh thairis air na freumhan ssd-root agus hdd-root, dh’ fhàg sinn am freumh bunaiteach falamh, gus an cuir sinn às dha

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

An ath rud, feumaidh sinn riaghailtean cuairteachaidh a chruthachadh a cheanglas sinn ris na linneachan cruthaichte - anns na riaghailtean sònraichidh sinn dè am freumh as urrainn dhuinn dàta an amar a chuir agus ìre àraid a’ mhac-samhail - mar eisimpleir, feumaidh mac-samhail a bhith air diofar frithealaichean, no ann an racaichean eadar-dhealaichte (faodaidh tu eadhon ann am freumhan eadar-dhealaichte, ma tha an leithid de chuairteachadh againn)

Mus tagh thu seòrsa, tha e nas fheàrr na sgrìobhainnean a leughadh:
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

Uill, bidh sinn a’ cruthachadh amaran anns a bheil sinn airson ìomhaighean diosc den virtualization againn a stòradh san àm ri teachd - 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

Agus bidh sinn ag innse dha na linneachan sin dè na riaghailtean suidheachaidh a bu chòir a chleachdadh

 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

Bu chòir dèiligeadh ris an àireamh de bhuidhnean suidheachaidh le sealladh a tha ann mu thràth airson do bhuidheann - dè an ìre de OSD a bhios ann, dè an ìre de dhàta (mar cheudad den iomlan) a bhios anns an amar, cia mheud dàta gu h-iomlan .

Gu h-iomlan, tha e ion-mhiannaichte gun a bhith nas motha na buidhnean suidheachaidh 300 gach diosc, agus bidh e nas fhasa a chothromachadh le buidhnean suidheachaidh beaga - is e sin, ma tha an amar gu lèir agad ann an 10 Tb agus 10 PG ann - bidh e na dhuilgheadas. gus cothromachadh le bhith a 'tilgeil bricichean terabyte (pg) - a' dòrtadh gainmheach le gràn gainmhich de mheud beag ann am bucaidean nas sìmplidh agus nas slaodaiche).

Ach feumaidh sinn cuimhneachadh mar as motha a tha an àireamh de PGn - mar as motha de ghoireasan a thèid a chosg air an àite aca obrachadh a-mach - bidh an cuimhne agus an CPU a’ tòiseachadh air an cleachdadh.

Faodaidh tuigse tuairmseach thoir àireamhair, air a thoirt seachad le luchd-leasachaidh na sgrìobhainnean CEPH.

Liosta de stuthan:

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/

Source: www.habr.com

Cuir beachd ann