Код за изтриване

Ако вече сте прочели моята история по-рано за това как работи NDFS, Nutanix Distributed File System, основата на това как се прави всичко в Nutanix, тогава вероятно сте забелязали, че консумацията на дисково пространство в NDFS като цяло е доста „щедра“.
Нека ви напомня, че не използваме RAID в класическия му смисъл, когато например се съхранява огледално копие на диска (RAID-1) или когато се изчислява допълнителен код на резервиране (RAID-5 или 6) за група дискове. Вместо това съхраняваме блок данни, записани на дискове на две (или дори три) места на различни дискове и дори различни възли. Ние наричаме тази схема ДЪЖД (Излишен масив от независими възли, въпреки RAID, което е същото, но ... Дискове). Но от гледна точка на капацитета на системните дискове, RF = 2, т.е. опцията, когато копие се съхранява за всеки блок, консумацията на пространство е еквивалентна на RAID-1, т.е. 50% от суров капацитет ни е на разположение за данни (минус някои други, променливи, процент за структурите на услуги и информация, но тук ще пропуснем това).
Да, толерантност към грешки, надеждност, бърз (минутен) отказ, всичко е вярно. Но все пак разходите са доста големи. Особено за хора, които все още са свикнали да мислят за дискове от гледна точка на суров капацитет или RAID-5. И можете да кажете колкото искате, че RAID-5 е лош и ненадежден, че е бавен за писане, че накрая, при сегашните цени на твърдите дискове, плащането за повишена надеждност и производителност в гигабайта, разпределени за толерантност към грешки, е малко, в сравнение с това, което ни се дава в замяна на тях. Няма значение. „В нашата система има четири терабайтови диска. Защо ни остават дори по-малко от два терабайта за нашите данни? "
Ето защо Nutanix излезе с идея, която сега се прилага активно. Тя е ангажирана с нея в Nutanix, между другото, "нашата", рускоговорящ програмист.
Това се нарича „код за изтриване“. Както често се случва с инженерите, името „не се описва“ и вече никой не знае защо. На руски ще бъде, най-правилно - "код на резервиране". Ето как става това.
Ако разполагаме с данни, които жабата ни притиска, за да запазим в "RAID-1", тоест в режим Replication Factor (RF) = 2, тогава можем да превключим режима на съхранение на тези данни от RF = 2 (или = 3 ) за изтриване на код. В същото време за нас започва да работи специален фонов процес, подобен на начина, по който извършваме дедупликация в клъстера и след известно време вместо блокиране и копиране на нашите дискове, той започва да се съхранява на дисковете на клъстера възли block-block-block- ... -and_excess_information_for_them, което ви позволява недвусмислено да възстановите съдържанието на блок в тази верига, ако той е загубен, например в резултат на повреда на диска на един от възлите.