Ceph/Vitastor cluster AFR calculator
 
 
Go to file
Vitaliy Filippov 3f52f73608 Improve calculation by using birthday paradox formulae, describe logic in readme 2021-11-26 02:39:26 +03:00
dist Wrap cluster AFR calculator in a webpage 2021-01-15 15:46:33 +03:00
.babelrc Wrap cluster AFR calculator in a webpage 2021-01-15 15:46:33 +03:00
README.md Improve calculation by using birthday paradox formulae, describe logic in readme 2021-11-26 02:39:26 +03:00
afr.js Improve calculation by using birthday paradox formulae, describe logic in readme 2021-11-26 02:39:26 +03:00
index.html Add meta viewport 2021-01-16 00:15:52 +03:00
main.js Improve calculation by using birthday paradox formulae, describe logic in readme 2021-11-26 02:39:26 +03:00
package.json Wrap cluster AFR calculator in a webpage 2021-01-15 15:46:33 +03:00
webpack.config.js Wrap cluster AFR calculator in a webpage 2021-01-15 15:46:33 +03:00

README.md

Калькулятор вероятности потери данных в кластере Ceph/Vitastor

Установлен тут:

https://yourcmc.ru/afr-calc/

А что такое Vitastor

Это мой быстрый цефозаменитель.

https://yourcmc.ru/git/vitalif/vitastor/

Логика расчёта

  • Вероятность потери данных равна вероятности того, что в течение года выйдет из строя любой 1 диск и при этом в течение времени, которое восстанавливается недостающая копия данных, выйдут из строя все оставшиеся диски любой из PG, бывших на указанном диске...
  • ...Либо из строя выйдет целый хост и в течение времени его восстановления выйдут из строя оставшиеся диски любой из PG, бывших на одном из его дисков.
  • Вероятность выхода из строя одной PG = (вероятность выхода из строя диска = P) ^ (N-1), где N - фактор репликации. Либо вероятность выхода из строя любых K из N-1 дисков в случае EC.
  • Все PG, бывшие на указанном диске, для упрощения мы считаем не имеющими других общих OSD. Это, естественно, не совсем корректно, так как в Ceph они, наоборот, почти гарантированно пересекаются. Однако, теоретически, вероятность выхода из строя любой из непересекающихся PG всегда выше, чем если бы какие-то из них пересекались, то есть у нас будет оценка сверху.
  • Степень пересечения мы попробуем учесть через парадокс дней рождений, см. ниже.
  • В таком случае события выхода из строя разных PG независимы и вероятность выхода из строя любой из K PG, имевших в своём составе отказавший диск, равна единице минус вероятность того, что ни одна из K PG не выйдет из строя, то есть, (1 - (1 - P^(N-1)) ^ K).
  • Итого (Умерло) = (1 - (не умерло ни из-за диска, ни из-за хоста)) = (1 - (1 - (умерло из-за диска))^(общее число дисков) * (1 - (умерло из-за хоста))^(число хостов)).
  • (Умерло из-за диска) = (Умер диск) * (1 - (не умерла ни одна из его PG)) = (Умер диск) * (1 - (1 - умерла PG)^(число PG)).
  • (Умерла PG) = ((AFR диска) + (AFR сервера)/(число дисков)) * (Время восстановления в годах). AFR сервера эмпирически поделен на число дисков, чтобы "размазать" вероятность отказа сервера по его дискам.

Парадоксы дней рождений:

  • PG почти гарантированно пересекаются, особенно в небольших кластерах. Степень их пересечения очень полезно учитывать.
  • Из задачи о парадоксе дней рождения мы знаем, что если в году N дней, а в группе K человек, то среднее число дней, являющихся хоть чьим-то днём рождения равно U(N,K) = N*(1 - (1 - 1/N)^K). Это даёт нам возможность узнать, сколько в среднем уникальных элементов при K случайных выборах из N.
  • На 1 диске в среднем размещается (число PG) групп чётности по (размер PG) дисков.
  • 1 диск в среднем имеет примерно U((число хостов-1) * (число дисков), (число PG) * (размер PG - 1)) дисков, которые работают с ним в паре. Поделим это число на (размер PG - 1) и получим среднее число PG на диск с учётом пересечений.
  • 1 хост в среднем имеет примерно U((число хостов-1) * (число дисков), (число дисков) * (число PG) * (размер PG - 1)) дисков, которые работают с ним в паре. Поделим это число на (размер PG - 1) и получим среднее число PG на сервер с учётом пересечений.
  • При выходе из строя 1 диска и его мгновенной замене на другой все данные восстанавливаются на единственном новом заменном диске. В этом случае число дисков, участвующих в процессе восстановления - 1.
  • При выходе из строя 1 диска без замены в Ceph по умолчанию его данные восстанавливаются на других дисках того же хоста. В этом случае число дисков, участвующих в процессе восстановления - U(число дисков-1, число PG).
  • При выходе из строя 1 диска без замены в Vitastor или гипотетической иной системе его данные восстанавливаются на любых других дисках в кластере. В этом случае число дисков, участвующих в процессе восстановления - U((число хостов-1) * (число дисков), (число PG)).
  • При выходе из строя целого хоста без возврата его дисков в строй в других хостах в восстановлении участвует U((число хостов-1) * (число дисков), (число дисков) * (число PG)) дисков.
  • Зная число участвующих в восстановлении дисков, среднюю скорость восстановления в пересчёте на 1 диск, оцениваемую с учётом пропускной способности сети, а также объём дисков, мы можем рассчитать ожидаемое время восстановления данных одного диска или одного хоста.