{"id":54505,"date":"2024-05-13T23:00:37","date_gmt":"2024-05-13T22:00:37","guid":{"rendered":"https:\/\/www.n-able.com\/?p=54505"},"modified":"2024-06-10T18:16:13","modified_gmt":"2024-06-10T17:16:13","slug":"how-and-why-we-applied-machine-learning-to-cove-continuity-part-1","status":"publish","type":"post","link":"https:\/\/www.n-able.com\/es\/blog\/how-and-why-we-applied-machine-learning-to-cove-continuity-part-1","title":{"rendered":"How, and Why, We Applied Machine Learning to Cove Continuity, Part 1"},"content":{"rendered":"<p>Over the next two blogs, I want to explain how we used machine learning to increase Cove Continuity boot-check accuracy to 99%.<\/p>\n<p class=\"p2\"><span class=\"s1\">Cove Continuity offers the ability to restore source (protected) servers\/workstations to virtual machines (VMs) in Hyper-V, ESXi, or Azure. After a VM is restored, Cove performs a boot-check test to prove that the system was properly restored. Then, it takes a screenshot of the restored VM\u2019s boot screen and collects part of the system event log to later display it to customers. It also detects the boot status\u2014whether it is successful or failed. If it is successfully booted, services inside are running and available for customers.<\/span><\/p>\n<p class=\"p2\"><span class=\"s1\">It is essential for our customers as they also provide those reports directly to their end-customers. So, the boot-check test must be robust as this is one of the first things that our product is assessed by.<\/span><\/p>\n<h2 class=\"p3\"><span class=\"s1\">Is it colorful enough?<\/span><\/h2>\n<p class=\"p2\"><span class=\"s1\">To address the above challenge, we used several different approaches. It all started with the very simple idea\u2014when a VM is booted, a colorful login screen is displayed. While if there is a problem it is usually some error shown on a black or blue screen. So, we can understand if this is a login screen or not, by simply making a screenshot and checking its size. If it is above a certain size, we can consider it is a login screen. If not, it\u2019s probably an error screen. Simple enough, right? So, that is what we did, and it worked well at first.<\/span><\/p>\n<p class=\"p2\"><span class=\"s1\">At the end of 2019, we introduced Recovery Testing\u2014which allows users to test recovery and boot check test at our N&#8209;able hosted env. The setup of that solution is very simple and straightforward\u2014via a wizard in our centralized web management console. As a result, we started to have a huge increase in the number of restores. Today, we are doing more than 60k restores a month in our secure environment.<\/span><\/p>\n<p class=\"p2\"><span class=\"s1\">That\u2019s when we realized our initial approach for boot-check testing had a flaw. Different machines have different screenshot resolutions, and sometimes there is a lot of text on the blue screen of death as well. In other cases, the login screen might look minimalistic and \u00abgreyish\u00bb with only a few numbers (current time) on it. So, in many cases simply checking the size of the screen did not help\u2014we got both false positive and false negative results.<\/span><\/p>\n<h2 class=\"p3\"><span class=\"s1\">Injection<\/span><\/h2>\n<p class=\"p2\"><span class=\"s1\">At that time, we introduced another approach. When restoring the VM, we injected a tool into the restored VM and configured it to auto-start. Then, when booting the VM, we attempted to establish a connection with that tool. If we are successful, then it means it is running, which in turn means that the OS is also running, so we can prove it is booted, right?<\/span><\/p>\n<p class=\"p2\"><span class=\"s1\">This approach also came with some issues. In Recovery Testing, we do not enable networking, as we do not want to potentially expose services running inside to the outside world. So, to establish that connection, we used a COM port for that communication. However, there were cases when we were not able to establish that connection due to permissions or other technical issues. Sometimes, even when OS had started and services were running, we were able to communicate with our tool, Windows was still displaying some kind of \u00abApplying computer changes\u00bb screen (rather than a boot screen). Customers want a proper login screen.<\/span><\/p>\n<h2 class=\"p3\"><span class=\"s1\">Maybe Microsoft could tell us if it was booted?<\/span><\/h2>\n<p class=\"p2\"><span class=\"s1\">To avoid the above issues, we also tried to analyze Windows event logs, looking for some specific entries that could indicate the OS was booted. The issue with that approach is that you are always restoring a VM that was backed up in the past. So, it might have an improper system timer or events might not be logged with the actual time, until it is synchronized. This complicates understanding whether the VM was booted now, or if it was an event written on the source (backed up) machine.\u00a0<\/span><\/p>\n<h2 class=\"p4\"><span class=\"s1\">Hold on. What about ESXi and Azure?<\/span><\/h2>\n<p class=\"p2\"><span class=\"s1\">Previously, we were mainly talking about two major features we had\u2014Recovery Testing and Standby Image (SBI) using Hyper-V. In 2023, we introduced Standby Image (SBI) to Azure. Boot check in Azure uses completely different tools and methods. You must rely on Azure services to properly collect a screenshot and detect if that is booted using Azure boot diagnostics and Azure VM agent.<\/span><\/p>\n<p class=\"p2\"><span class=\"s1\">Recently we&#8217;ve released SBI to ESXi as well. And in the preview version of that feature, we were using the old approach with a screenshot size check, as implementing a COM port-like approach for ESXi requires additional efforts and it proved itself to be error-prone. So, we ended up with three different complex approaches for different recovery targets. Not ideal.<\/span><\/p>\n<p class=\"p2\"><span class=\"s1\">Thankfully, we solved this issue \u2026 we\u2019ll look at our solution in detail <a href=\"https:\/\/www.n-able.com\/blog\/how-and-why-we-applied-machine-learning-to-cove-continuity-part-2\" target=\"_blank\" rel=\"noopener\">in the next blog<\/a>.<\/span><\/p>\n<p class=\"p2\"><span class=\"s1\">\u00a0<\/span><span class=\"s1\"><i>Sergey Shaminko is Cove Engineering Manager at N&#8209;able<\/i><\/span><\/p>\n<p class=\"p2\"><span class=\"s1\"><b>To learn more about how Cove keeps your customers\u2019 data safe, don\u2019t hesitate to <\/b><a href=\"https:\/\/www.n-able.com\/products\/cove-data-protection\/demo\"><span class=\"s4\"><b>schedule a call<\/b><\/span><\/a><b> with us!<\/b><\/span><\/p>\n<p class=\"p5\"><strong>If you are interested in learning more about Cove\u2019s approach to cyber resilience, please don\u2019t hesitate to\u00a0schedule a demo.<\/strong><\/p>\n<p class=\"p2\"><strong>To FIND OUT MORE about Cove Data Protection visit\u00a0<a href=\"https:\/\/www.n-able.com\/products\/cove-data-protection\" target=\"_blank\" rel=\"noopener\">www.n-able.com\/products\/cove-data-protection<\/a>\u00a0Or simply start a FREE TRIAL at\u00a0<a href=\"https:\/\/www.n-able.com\/products\/cove-data-protection\/trial\" target=\"_blank\" rel=\"noopener\">www.n-able.com\/products\/cove-data-protection\/trial<\/a><\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In this two-part blog series, Cove engineering manager Sergey Shaminko details how we used machine learning to increase Cove Continuity boot-check accuracy to 99%.<\/p>\n","protected":false},"author":117,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"class_list":["post-54505","post","type-post","status-publish","format-standard","hentry","topic-backup-disaster-recovery"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.2) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>How, and Why, We Applied Machine Learning to Cove Continuity, Part 1 - N-able<\/title>\n<meta name=\"description\" content=\"Cove engineering manager Sergey Shaminko details how N-able used machine learning to increase Cove Continuity boot-check accuracy to 99%.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.n-able.com\/es\/blog\/how-and-why-we-applied-machine-learning-to-cove-continuity-part-1\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How, and Why, We Applied Machine Learning to Cove Continuity, Part 1 - N-able\" \/>\n<meta property=\"og:description\" content=\"Cove engineering manager Sergey Shaminko details how N-able used machine learning to increase Cove Continuity boot-check accuracy to 99%.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.n-able.com\/es\/blog\/how-and-why-we-applied-machine-learning-to-cove-continuity-part-1\" \/>\n<meta property=\"og:site_name\" content=\"N-able\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/NableMSP\" \/>\n<meta property=\"article:published_time\" content=\"2024-05-13T22:00:37+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-06-10T17:16:13+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.n-able.com\/wp-content\/uploads\/2024\/05\/051524_BlogBanner_CoveSergey_PD_Final-scaled.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"2560\" \/>\n\t<meta property=\"og:image:height\" content=\"1340\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Sergey Shaminko\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@Nable\" \/>\n<meta name=\"twitter:site\" content=\"@Nable\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Sergey Shaminko\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.n-able.com\/es\/blog\/how-and-why-we-applied-machine-learning-to-cove-continuity-part-1#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.n-able.com\/es\/blog\/how-and-why-we-applied-machine-learning-to-cove-continuity-part-1\"},\"author\":{\"name\":\"Sergey Shaminko\",\"@id\":\"https:\/\/www.n-able.com\/es#\/schema\/person\/be8a50517f9c02f02d7bf1fc8b413d37\"},\"headline\":\"How, and Why, We Applied Machine Learning to Cove Continuity, Part 1\",\"datePublished\":\"2024-05-13T23:00:37+01:00\",\"dateModified\":\"2024-06-10T17:16:13+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.n-able.com\/es\/blog\/how-and-why-we-applied-machine-learning-to-cove-continuity-part-1\"},\"wordCount\":910,\"publisher\":{\"@id\":\"https:\/\/www.n-able.com\/es#organization\"},\"articleSection\":[\"Backup &amp; Disaster Recovery\"],\"inLanguage\":\"es\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.n-able.com\/es\/blog\/how-and-why-we-applied-machine-learning-to-cove-continuity-part-1\",\"url\":\"https:\/\/www.n-able.com\/es\/blog\/how-and-why-we-applied-machine-learning-to-cove-continuity-part-1\",\"name\":\"How, and Why, We Applied Machine Learning to Cove Continuity, Part 1 - N-able\",\"isPartOf\":{\"@id\":\"https:\/\/www.n-able.com\/es#website\"},\"datePublished\":\"2024-05-13T23:00:37+01:00\",\"dateModified\":\"2024-06-10T17:16:13+00:00\",\"description\":\"Cove engineering manager Sergey Shaminko details how N-able used machine learning to increase Cove Continuity boot-check accuracy to 99%.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.n-able.com\/es\/blog\/how-and-why-we-applied-machine-learning-to-cove-continuity-part-1#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.n-able.com\/es\/blog\/how-and-why-we-applied-machine-learning-to-cove-continuity-part-1\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.n-able.com\/es\/blog\/how-and-why-we-applied-machine-learning-to-cove-continuity-part-1#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Backup &amp; Disaster Recovery\",\"item\":\"https:\/\/www.n-able.com\/es\/blog\/category\/backup-disaster-recovery\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How, and Why, We Applied Machine Learning to Cove Continuity, Part 1\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.n-able.com\/es#website\",\"url\":\"https:\/\/www.n-able.com\/es\",\"name\":\"N-able\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/www.n-able.com\/es#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.n-able.com\/es?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.n-able.com\/es#organization\",\"name\":\"N-able\",\"url\":\"https:\/\/www.n-able.com\/es\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.n-able.com\/es#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.n-able.com\/wp-content\/uploads\/2021\/02\/logo-n-able-vertical-dark.svg\",\"contentUrl\":\"https:\/\/www.n-able.com\/wp-content\/uploads\/2021\/02\/logo-n-able-vertical-dark.svg\",\"width\":\"1024\",\"height\":\"1024\",\"caption\":\"N-able\"},\"image\":{\"@id\":\"https:\/\/www.n-able.com\/es#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/NableMSP\",\"https:\/\/x.com\/Nable\",\"https:\/\/www.linkedin.com\/company\/n-able\",\"https:\/\/www.youtube.com\/channel\/UClnp77HHg4aME-S-3fWQhFw\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.n-able.com\/es#\/schema\/person\/be8a50517f9c02f02d7bf1fc8b413d37\",\"name\":\"Sergey Shaminko\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/0784e248351258662634b20e7fb36273b4eb3f6c88ad38eda3472cf2949cd3c5?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/0784e248351258662634b20e7fb36273b4eb3f6c88ad38eda3472cf2949cd3c5?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/0784e248351258662634b20e7fb36273b4eb3f6c88ad38eda3472cf2949cd3c5?s=96&d=mm&r=g\",\"caption\":\"Sergey Shaminko\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"How, and Why, We Applied Machine Learning to Cove Continuity, Part 1 - N-able","description":"Cove engineering manager Sergey Shaminko details how N-able used machine learning to increase Cove Continuity boot-check accuracy to 99%.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.n-able.com\/es\/blog\/how-and-why-we-applied-machine-learning-to-cove-continuity-part-1","og_locale":"es_ES","og_type":"article","og_title":"How, and Why, We Applied Machine Learning to Cove Continuity, Part 1 - N-able","og_description":"Cove engineering manager Sergey Shaminko details how N-able used machine learning to increase Cove Continuity boot-check accuracy to 99%.","og_url":"https:\/\/www.n-able.com\/es\/blog\/how-and-why-we-applied-machine-learning-to-cove-continuity-part-1","og_site_name":"N-able","article_publisher":"https:\/\/www.facebook.com\/NableMSP","article_published_time":"2024-05-13T22:00:37+00:00","article_modified_time":"2024-06-10T17:16:13+00:00","og_image":[{"width":2560,"height":1340,"url":"https:\/\/www.n-able.com\/wp-content\/uploads\/2024\/05\/051524_BlogBanner_CoveSergey_PD_Final-scaled.jpg","type":"image\/jpeg"}],"author":"Sergey Shaminko","twitter_card":"summary_large_image","twitter_creator":"@Nable","twitter_site":"@Nable","twitter_misc":{"Escrito por":"Sergey Shaminko","Tiempo de lectura":"4 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.n-able.com\/es\/blog\/how-and-why-we-applied-machine-learning-to-cove-continuity-part-1#article","isPartOf":{"@id":"https:\/\/www.n-able.com\/es\/blog\/how-and-why-we-applied-machine-learning-to-cove-continuity-part-1"},"author":{"name":"Sergey Shaminko","@id":"https:\/\/www.n-able.com\/es#\/schema\/person\/be8a50517f9c02f02d7bf1fc8b413d37"},"headline":"How, and Why, We Applied Machine Learning to Cove Continuity, Part 1","datePublished":"2024-05-13T23:00:37+01:00","dateModified":"2024-06-10T17:16:13+00:00","mainEntityOfPage":{"@id":"https:\/\/www.n-able.com\/es\/blog\/how-and-why-we-applied-machine-learning-to-cove-continuity-part-1"},"wordCount":910,"publisher":{"@id":"https:\/\/www.n-able.com\/es#organization"},"articleSection":["Backup &amp; Disaster Recovery"],"inLanguage":"es"},{"@type":"WebPage","@id":"https:\/\/www.n-able.com\/es\/blog\/how-and-why-we-applied-machine-learning-to-cove-continuity-part-1","url":"https:\/\/www.n-able.com\/es\/blog\/how-and-why-we-applied-machine-learning-to-cove-continuity-part-1","name":"How, and Why, We Applied Machine Learning to Cove Continuity, Part 1 - N-able","isPartOf":{"@id":"https:\/\/www.n-able.com\/es#website"},"datePublished":"2024-05-13T23:00:37+01:00","dateModified":"2024-06-10T17:16:13+00:00","description":"Cove engineering manager Sergey Shaminko details how N-able used machine learning to increase Cove Continuity boot-check accuracy to 99%.","breadcrumb":{"@id":"https:\/\/www.n-able.com\/es\/blog\/how-and-why-we-applied-machine-learning-to-cove-continuity-part-1#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.n-able.com\/es\/blog\/how-and-why-we-applied-machine-learning-to-cove-continuity-part-1"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.n-able.com\/es\/blog\/how-and-why-we-applied-machine-learning-to-cove-continuity-part-1#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Backup &amp; Disaster Recovery","item":"https:\/\/www.n-able.com\/es\/blog\/category\/backup-disaster-recovery"},{"@type":"ListItem","position":2,"name":"How, and Why, We Applied Machine Learning to Cove Continuity, Part 1"}]},{"@type":"WebSite","@id":"https:\/\/www.n-able.com\/es#website","url":"https:\/\/www.n-able.com\/es","name":"N-able","description":"","publisher":{"@id":"https:\/\/www.n-able.com\/es#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.n-able.com\/es?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/www.n-able.com\/es#organization","name":"N-able","url":"https:\/\/www.n-able.com\/es","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.n-able.com\/es#\/schema\/logo\/image\/","url":"https:\/\/www.n-able.com\/wp-content\/uploads\/2021\/02\/logo-n-able-vertical-dark.svg","contentUrl":"https:\/\/www.n-able.com\/wp-content\/uploads\/2021\/02\/logo-n-able-vertical-dark.svg","width":"1024","height":"1024","caption":"N-able"},"image":{"@id":"https:\/\/www.n-able.com\/es#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/NableMSP","https:\/\/x.com\/Nable","https:\/\/www.linkedin.com\/company\/n-able","https:\/\/www.youtube.com\/channel\/UClnp77HHg4aME-S-3fWQhFw"]},{"@type":"Person","@id":"https:\/\/www.n-able.com\/es#\/schema\/person\/be8a50517f9c02f02d7bf1fc8b413d37","name":"Sergey Shaminko","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/secure.gravatar.com\/avatar\/0784e248351258662634b20e7fb36273b4eb3f6c88ad38eda3472cf2949cd3c5?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/0784e248351258662634b20e7fb36273b4eb3f6c88ad38eda3472cf2949cd3c5?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/0784e248351258662634b20e7fb36273b4eb3f6c88ad38eda3472cf2949cd3c5?s=96&d=mm&r=g","caption":"Sergey Shaminko"}}]}},"_links":{"self":[{"href":"https:\/\/www.n-able.com\/es\/wp-json\/wp\/v2\/posts\/54505","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.n-able.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.n-able.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.n-able.com\/es\/wp-json\/wp\/v2\/users\/117"}],"replies":[{"embeddable":true,"href":"https:\/\/www.n-able.com\/es\/wp-json\/wp\/v2\/comments?post=54505"}],"version-history":[{"count":0,"href":"https:\/\/www.n-able.com\/es\/wp-json\/wp\/v2\/posts\/54505\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.n-able.com\/es\/wp-json\/wp\/v2\/media?parent=54505"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}