From fe06536dd032289655b5aaffa13a737d031ffee7 Mon Sep 17 00:00:00 2001 From: Vitaliy Filippov Date: Mon, 29 Nov 2021 14:32:00 +0300 Subject: [PATCH] Note about PG failure event probability --- README.md | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index ba9723c..8398efd 100644 --- a/README.md +++ b/README.md @@ -19,6 +19,16 @@ https://yourcmc.ru/git/vitalif/vitastor/ диски любой из PG, бывших на одном из его дисков. - Вероятность выхода из строя одной PG = (вероятность выхода из строя диска = P) ^ (N-1), где N - фактор репликации. Либо вероятность выхода из строя любых K из N-1 дисков в случае EC. +- Это не на 100% верно, т.к. за время восстановления первого диска выйти из строя может не N-1 + дисков, а, например, только 1, и тогда к исходному времени восстановления добавляется в среднем + ещё какое-то время (в среднем 1/2 исходного, но в любом случае <= исходного), в течение которого + первый диск уже будет восстановлен, но второй ещё не будет, и данные снова будут потеряны, если + из строя выйдет N-1 других дисков. И если за это время опять выйдет из строя какой-то диск, + то время опять будет продлено, в среднем уже на 3/4 исходного, и так может быть до бесконечности. + Однако пока считаем, что этими величинами можно пренебречь, т.к. они обычно меньше исходной + вероятности минимум на порядок, т.к. исходная - условно P^N, а "повторная" начинается от P^(N+1). + Подлянка может ожидать нас в случае EC с неразумным N и вероятностью отказа (N >= 1/P) - исходная + C(n,k) * P^(k+1), а "повторная" - C(n,1) * C(n,k+1) * P^(k+2). - Все PG, бывшие на указанном диске, для упрощения мы считаем не имеющими других общих OSD. Это, естественно, не совсем корректно, так как в Ceph они, наоборот, почти гарантированно пересекаются. Однако, теоретически, вероятность выхода из строя любой из непересекающихся PG всегда выше, чем @@ -31,7 +41,7 @@ https://yourcmc.ru/git/vitalif/vitastor/ (1 - (1 - (умерло из-за диска))^(общее число дисков) * (1 - (умерло из-за хоста))^(число хостов)). - (Умерло из-за диска) = (Умер диск) * (1 - (не умерла ни одна из его PG)) = (Умер диск) * (1 - (1 - умерла PG)^(число PG)). -- (Умерла PG) = ((AFR диска) + (AFR сервера)/(число дисков)) * (Время восстановления в годах). +- (Умер диск) = ((AFR диска) + (AFR сервера)/(число дисков)) * (Время восстановления в годах). AFR сервера эмпирически поделен на число дисков, чтобы "размазать" вероятность отказа сервера по его дискам.