ВОССТАНОВЛЕНИЕ ПРИЛОЖЕНИЯ ИЗ МОМЕНТАЛЬНОГО СНИМКА
RECOVERY OF APPLICATION FROM SNAPSHOT

УРОВЕНЬ ТЕХНИКИ
[0001] Компьютеры и вычислительные системы оказывают влияние почти на каждый аспект современной жизни. Компьютеры в целом задействованы в работе, отдыхе, заботе о здоровье, перевозках, развлечениях, управлении хозяйством и другом. Функциональность компьютера, как правило, являются результатом исполнения программного кода компьютерными системами. Компьютер использует том для хранения программного кода, а также для хранения данных.
[0002] Время от времени том может быть испорчен или сам том может быть поврежден. В любом случае том становится неиспользуемым. Для того чтобы подготовиться к такого рода событию возникновения ошибки, вычислительная система может вызывать получение периодических моментальных снимков тома. Если событие возникновения ошибки происходит, том может быть заменен, если поврежден, и модуль восстановления может содействовать восстановлению тома посредством копирования обратно из последнего действующего моментального снимка в том. Таким образом, несмотря на ошибку тома, том возвращается к предыдущему состоянию, позволяющему вернуть функциональность компьютера.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[0003] В соответствии с по меньшей мере одним вариантом осуществления, описанном в данном документе, описывается целевое восстановление данных приложения, соответствующих приложению. В качестве примера приложение может быть виртуальной машиной, в то время как данные приложения могут быть виртуальным жестким диском, относящимся к виртуальной машине. Восстановление данных приложения осуществляется без выполнения восстановления всего тома.
[0004] Восстановление инициируется началом копирования предыдущего состояния содержимого контейнера данных приложения из предыдущего моментального снимка в контейнер данных приложения в операционном томе, доступном приложению. Однако в то время как содержимое контейнера данных приложения копируется из моментального снимка в контейнер данных приложения, приложению все еще разрешено выполнять операции записи и чтения в контейнере данных приложения. Таким образом, контейнер данных приложения является полностью доступным приложению, даже если восстановление содержимого контейнера данных приложения все еще продолжается в фоновом режиме.
[0005] Данная сущность не подразумевает определения ключевых признаков или существенных признаков заявленного изобретения, а также не подразумевает использования в качестве помощи в определении объема заявленного изобретения.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0006] Для описания того, каким образом могут быть получены вышеуказанные и другие преимущества и признаки, более подробное описание различных вариантов осуществления будет представлено со ссылкой на прилагаемые чертежи. Понятно, что эти чертежи изображают только выборочные варианты осуществления и, следовательно, не должны рассматриваться как ограничивающие объем изобретения, варианты осуществления будут описаны и пояснены с дополнительной спецификой и детальностью посредством использования прилагаемых чертежей, на которых:
[0007] Фиг. 1 абстрактно иллюстрирует вычислительную систему, в которой могут быть применены некоторые варианты осуществления, описанные в данном документе;
[0008] Фиг. 2 схематично иллюстрирует примерную систему, в которой целевое восстановление приложения может происходить без восстановления всей системы, в соответствии с принципами, описанными в данном документе;
[0009] Фиг. 3 иллюстрирует блок-схему последовательности операций способа для восстановления данных приложения, соответствующих приложению;
[0010] Фиг. 4 иллюстрирует блок-схему последовательности операций способа для выполнения операции чтения, в то время как все еще продолжается операция восстановления; и
[0011] Фиг. 5 иллюстрирует блок-схему последовательности операций способа для выполнения операции записи, в то время как все еще продолжается операция восстановления.
ПОДРОБНОЕ ОПИСАНИЕ
[0012] В соответствии с вариантами осуществления, описанными в данном документе, описывается целевое восстановление данных приложения, соответствующих приложению, без выполнения восстановления всего тома. Восстановление инициируется посредством начала копирования предыдущего состояния содержимого контейнера данных приложения из предыдущего моментального снимка в контейнер данных приложения в операционном томе, доступном приложению. Однако в то время как содержимое контейнера данных приложения все еще копируется из моментального снимка в контейнер данных приложения, приложению все еще разрешается выполнять операции записи и чтения в контейнере данных приложения с использованием принципов, дополнительно описанных ниже. Таким образом, контейнер данных приложения является полностью доступным приложению, даже если восстановление содержимого контейнера данных приложения все еще продолжается в фоновом режиме.
[0013] Со ссылкой на фигуру 1 представлено некоторое предварительное обсуждение вычислительной системы. Затем описано целевое восстановление в представленном выше порядке относительно фигур 2-5.
[0014] В настоящее время существует все больше различных форм вычислительных систем. Например, вычислительные системы могут быть мобильными устройствами, оборудованием, ноутбуками, настольными компьютерами, мэйнфреймами, распределенными вычислительными системами, и даже устройствами, которые традиционно не рассматривались как вычислительные системы. В данном описании и формуле изобретения термин «вычислительная система» определен широко, как включающий в себя любое устройство или систему (или их комбинацию), которое включает в себя по меньшей мере один физический и вещественный процессор и физическую и вещественную память, выполненную с возможностью хранения в себе исполняемые компьютером инструкции, которые могут быть исполнены процессором. Память может принимать любую форму и зависеть от природы и формы вычислительной системы. Вычислительная система может быть распределена по сетевой среде и может включать в себя множественные составляющие вычислительные системы.
[0015] Как показано на фиг. 1, в своей наиболее базовой конфигурации вычислительная система 100 выключает в себя по меньшей мере один блок 102 обработки и считываемые компьютером носители (среда) 104. Традиционно предполагается, что считываемые компьютером носители 104 могут включать в себя физическую системную память, которая может быть энергозависимой, энергонезависимой, или некоторой комбинацией из двух упомянутых. Считываемые компьютером носители 104 также обычно включают в себя энергонезависимую массовую память. Если вычислительная система является распределенной, возможность обработки, запоминания и/или хранения также могут быть распределенными.
[0016] Согласно данному документу, термин «исполняемый модуль» или «исполняемый компонент» могут относиться к объектам программного обеспечения, маршрутизации, или способам, которые могут быть исполнены на вычислительной системе. Различные компоненты, модули, подсистемы и службы, описанные в данном документе, могут быть реализованы как объекты или процессы, которые исполняют на вычислительной системе (например, отдельные потоки). Такие исполняемые модули могут быть управляемым кодом, в случае их исполнения в управляемой среде, в которой принудительно используется безопасность типов, и в которой процессы выделяются своим собственным отдельным объектам памяти. Такие исполняемые модули могут также быть неуправляемым кодом, в случае, если исполняемые модули созданы в собственном коде, таком как С или С++.
[0017] В последующем описании варианты осуществления описаны со ссылкой на этапы, выполняемые одной или более вычислительными системами. Если такие этапы реализуются в программном обеспечении, один или более процессоров ассоциированной вычислительной системы, которая выполняет этап, управляет операцией вычислительной системы в ответ на исполнение исполняемых компьютером инструкций. Например, такие исполняемые компьютером инструкции могут быть реализованы на одном или более считываемых компьютером носителях, которые формируют компьютерный программный продукт. Пример такой операции включает манипуляцию данными. Исполняемые компьютером инструкции (и подвергаемые манипуляции данные) могут храниться в памяти 104 вычислительной системы 100. Вычислительная система 100 также может содержать каналы 108 связи, которые позволяют вычислительной системе 100 осуществлять связь с другими процессорами, например, по сети 110.
[0018] Варианты осуществления, описанные в данном документе, могут содержать или использовать компьютер специального назначения или общего назначения, в том числе аппаратное обеспечение компьютера, такое как, например, один или более процессоров и системную память, как подробно описано ниже по тексту. Варианты осуществления, описанные в данном документе, также включают в себя физический и другие считываемые компьютером носители для переноса или хранения исполняемых компьютером инструкций и/или структур данных. Такие считываемые компьютером носители могут быть любыми доступными носителями, доступ к которым может осуществляться компьютерной системой общего назначения или специального назначения. Считываемые компьютером носители, хранящие исполняемые компьютером инструкции являются физическими носителями данных. Считываемые компьютером носители, переносящие исполняемые компьютером инструкции являются средами передачи. Таким образом, в качестве примера, но не ограничения, варианты осуществления изобретения могут содержать по меньшей мере два совершенно различных вида считываемых компьютером носителей: носители данных компьютера и среду передачи.
[0019] Носители данных компьютера включают в себя RAM, ROM, EEPROM, CD-ROM или другое средство хранения на оптическом диске, средство хранения на магнитном диске или другие магнитные устройства хранения, или любой другой вещественный носитель данных, которые могут использоваться для хранения желаемых средств программного кода в форме исполняемых компьютером инструкций или структур данных, и доступ к которым может осуществляться компьютером общего назначения или компьютером особого назначения.
[0020] Под термином «сеть» понимают одну или более линий передачи данных, обеспечивающих транспортировку компьютерных данных между компьютерными системами и/или модулями и/или другими электронными устройствами. Когда информация пересылается или обеспечивается по сети или другому соединению связи (будь то проводное, беспроводное или комбинация проводного и беспроводного) в компьютер, компьютер должным образом рассматривает соединение в качестве носителя передачи. Среда передач может включать в себя сеть и/или линии передачи данных, которые могут использоваться для переноса желаемых средств программного когда в форме исполняемых компьютером инструкций или структур данных, и к которым может осуществляться доступ компьютером общего назначения или специального назначения. Комбинации вышеупомянутого также должны быть включены в объем считываемых компьютером носителей.
[0021] Далее, по достижении различных компонентов компьютерной системы, средства программного кода в форме исполняемых компьютером инструкций или структур данных могут автоматически пересылаться из среды передачи в носители данных компьютера (или наоборот). Например, исполняемые компьютером инструкции или структуры данных, принимаемые по сети или линии передачи данных, могут быть помещены в буфер в RAM в сетевой интерфейсной плате (например, «NIC»), и затем в конечном счете пересылаться в RAM компьютерной системы и/или в менее энергозависимые носители данных компьютера в компьютерной системе. Таким образом, следует понимать, что носители данных компьютера могут быть включены в компоненты компьютерной системы, которые также (или даже в первую очередь) используют среду передачи.
[0022] Исполняемые компьютером инструкции содержат, например, инструкции и данные, которые, при исполнении на процессоре, предписывают компьютеру общего назначения, компьютеру специального назначения или устройству обработки специального назначения выполнять некоторую функцию или группу функций. Исполняемые компьютером инструкции могут быть, например, двоичными файлами, инструкциями промежуточного формата, такими как язык ассемблера, или даже исходный код. Хотя изобретение, описано на языке, характерном для конструктивных признаков и/или методологических этапов, следует понимать, что изобретение определено в прилагаемой формуле изобретения, и не ограничено описанными выше признаками и этапами. В свою очередь, описанные признаки и этапы раскрыты в качестве примерных форм реализации формулы изобретения.
[0023] Для специалистов в уровне техники понятно, что изобретение может быть осуществлено на практике в сетевых вычислительных окружениях с множеством типов конфигураций компьютерных систем, в том числе персональные компьютеры, стационарные компьютеры, ноутбуки, процессоры сообщений, карманные устройства, многопроцессорные системы, микропроцессорная или программируемая бытовая электроника, сетевые ПК, мини-компьютеры, мэйнфреймы, мобильные телефоны, КПК, пейджеры, маршрутизаторы, коммутаторы и другое. Изобретение также может быть осуществлено на практике в распределенных системных окружениях, где и локальные, и удаленные компьютерные системы, которые связаны (проводными линиями передачи данных, беспроводными линиями передачи данных или их комбинацией проводных и беспроводных линий передачи данных) по сети, выполняют задания. В распределенном системном окружении программные модули могут быть размещены как в локальных, так и в удаленных запоминающих устройствах хранения.
[0024] Фиг. 2 схематично иллюстрирует примерную систему 200, в которой целевое восстановление приложения может происходить без восстановления всей системы в соответствии с принципами, описанными в данном документе. Система 200 включает в себя операционный том 210, доступный многочисленным приложениям 201 так, что приложения 201 могут записывать в операционный том 210 и считывать его. Например, приложения 201 проиллюстрированы, включающими в себя четыре приложения 201А, 201В, 201С и 201D, хотя многоточие 201Е представляет то, что принципы, описанные в данном документе, вовсе не ограничены системой, которая работает с конкретным количеством приложений. Система 200 может работать с единственным приложением 201А, или, возможно, с тысячами приложений, все из которых совместно используют операционный том 210. Термин «том» является единым пространством имен, которое распознается файловой системой как включающее в себя последовательные логические или физические адреса.
[0025] Операционный том 210 хранит контейнер 211А данных приложения, хотя операционный том 210 может хранить огромные объемы данных, помимо контейнера данных приложения, о чем говорит многоточие 211В. Контейнер 211А данных приложения ассоциирован с приложением 201А, что представлено линией 212. Контейнер 211А данных приложения может быть, например, файлом приложения.
[0026] В одном примере каждое из приложений 201 может быть виртуальной машиной. В этом случае приложение 201А может быть виртуальной машиной, и контейнер 211А данных приложения может быть виртуальным жестким диском, ассоциированным с приложением 201А. В этом случае система 200 может быть частью главной вычислительной системы, которая размещает у себя многочисленные виртуальные машины. Главная вычислительная система может иметь многочисленные тома, хотя только один том 210 проиллюстрирован на фигуре 2.
[0027] Принципы, описанные в данном документе, позволяют осуществлять удобное восстановление контейнера данных приложения без восстановления всего тома, в котором хранится упомянутый контейнер данных приложения. Например, на фигуре 2, контейнер 211А данных приложения может быть восстановлен без восстановления всего тома 210. Это полезно тем, что иногда контейнер 211А данных приложения может стать поврежденным или ненадежным, в то время как сам по себе том 210 в целом остается неповрежденным. Кроме того, восстановление всего тома может занять намного больше времени, чем восстановление только части тома.
[0028] Немаловажно, что система 200 дополнительно работает так, что приложение 201А может продолжать работать с контейнером 211А данных приложения, в то время как восстановление контейнера 211А данных приложения идет в фоновом режиме. Таким образом, с точки зрения приложения 201А, восстановление происходит быстро, а, возможно, и за очень незначительное время, в то время как в действительности восстановление происходит в фоновом режиме в течение гораздо большего времени.
[0029] Для содействия этому целевому и быстрому восстановлению, система 200 включает в себя некоторое количество исполнимых модулей, в том числе модуль 221 управления, модуль 222 моментального снимка и модуль 223 восстановления. Каждый из этих модулей ниже будет описан более подробно.
[0030] Экземпляр каждого из модулей 221-223 может создаваться и/или управляться вычислительной системой (такой как вычислительная система 100) в ответ на исполнение процессорами (например процессором(ами) 102) вычислительной системы одной или более исполняемых компьютером инструкций, хранящихся на считываемых компьютером носителях данных, представляющих собой компьютерный программный продукт. Хотя конкретные этапы описаны как ассоциированные с модулями 221 и 223, такие этапы не обязательно выполняются конкретными описанными модулями.
[0031] В целях подготовки к возможной необходимости восстановления, модуль 222 моментального снимка получает моментальные снимки, по меньшей мере, контейнера 211А данных приложения, но возможно и большего сегмента тома 210, или даже возможно всего тома 210 в целом. Эти моментальные снимки могут быть периодическими и/или в ответ на конкретные события. В любом случае фигура 2 иллюстрирует пример, в котором модуль моментального снимка получил три моментальных снимка 231А, 231В и 231С контейнера 211А данных приложения и обеспечил моментальные снимки 231А, 231В и 231С в томе 230 моментальных снимков, что представлено многоголовой стрелкой 241. В этом примере, моментальный снимок 231А является самым старым моментальным снимком, моментальный снимок 231В является вторым полученным моментальным снимком, моментальный снимок 231С является самым последним моментальным снимком контейнера 211А данных приложения.
[0032] Модуль 221 управления определяет, подвержен ли и когда контейнер данных приложения восстановлению из моментального снимка в томе 230 моментального снимка. В ответ модуль 223 восстановления выполняет восстановление контейнера 211А данных приложения из моментального снимка 231С в томе 230 моментальных снимков для того, чтобы осуществить повторное заполнение содержимым контейнера 221А данных приложения, что представлено стрелкой 242. Пока контейнер 211А данных приложения может не быть моментально доступным приложению 201А, в то время как инициируется восстановление, сразу после того, как восстановление инициировано, модуль 221 управления может разрешать приложению 201А выполнять операции записи и чтения в контейнере 211А данных приложения.
[0033] Фигура 3 иллюстрирует блок-схему последовательности операций способа 300 для восстановления данных приложения, соответствующих приложению. Поскольку способ 300 может быть выполнен в системе 200 с фигуры 2, способ 300 будет описан со ссылкой на фигуру 2.
[0034] Способ 300 инициируется после определении того, что конкретный контейнер данных приложения некоторого приложения должен подвергаться восстановлению из моментального снимка (этап 301). Например, со ссылкой на фигуру 2, модуль 221 управления определяет, что контейнер 211A данных приложения некоторого приложения 201А должен подвергаться восстановлению из моментального снимка 231С.
[0035] В ответ способ временно делает контейнер данных приложения недоступным приложению, например, закрывая контейнер данных приложения (этап 302). Например, со ссылкой на фигуру 2, компонент 221 управления может закрыть контейнер 211А данных приложения. Контейнер 211А данных приложения будет оставаться закрытым короткое время, в сравнении с общим временем операции восстановления. Кроме того, контейнер 211А данных приложения закрывается без закрытия операционного тома 210, таким образом оставляя операционный том 210 доступным по меньшей мере одному другому приложению (например приложению 201В), в то время как контейнер 211А данных приложения закрыт.
[0036] Затем инициируется операция восстановления (этап 303). Например, со ссылкой фигуру 2, модуль 223 восстановления инициирует восстановление посредством начала копирования предыдущего состояния содержимого контейнера 201А данных приложения из предыдущего моментального снимка 231С, что представлено стрелкой 242. Модуль 223 восстановления будет продолжать копирование из предыдущего моментального снимка 231С одной области контейнера 201А данных приложения за раз. До восстановления области, модуль 223 восстановления осуществит блокировку диапазона для этой области.
[0037] Когда операция восстановления инициирована, контейнер данных приложения открывается (этап 305), посредством чего приложению разрешается выполнять операции записи и чтения в контейнере данных приложения, поскольку отсутствуют блокировки диапазона, устанавливаемые модулем восстановления на область, которая содержит считываемую или записываемую ячейку памяти. Контейнер данных приложения открывается, даже если продолжается операция восстановления (этап 304), и фактически, она могла начаться лишь несколько мгновений назад. Таким образом, со ссылкой фигуру 2, модуль 223 восстановления продолжает восстановление в фоновом режиме (что представлено стрелкой 242) , в то время как модуль 221 управления продолжает допускать приложение 201А к выполнению операций записи и чтения в контейнере 211А данных приложения.
[0038] В то время как восстановление все еще происходит (этап 304), модуль 221 управления работает, чтобы отвечать на запросы на запись и чтение от приложения 201А таким образом, что запросы на запись и чтение обеспечиваются совместимыми с восстановлением, как описано в данном документе.
[0039] Например, после обнаружения того, что приложение 201А выдает запрос на чтение адресной области содержимого из контейнера данных приложения («Да» в блоке 311 принятия решения), модуль 221 управления предписывает немедленную приостановку восстановления для этой адресной области (этап 312), так что если восстановление приближается близко к этой адресной области, или даже достигает этой адресной области, восстановление приостанавливается. Выполняется операция чтения (этап 313), и после этого возобновляется восстановление для этой адресной области, так что если восстановление приблизилось или достигло бы области, восстановление не было бы приостановлено (этап 314). Как пример, операция чтения может быть выполнена проиллюстрированным и описанным относительно фигуры 4 образом. Этапы 312-314 могут выполняться каждый раз, когда приложение 201А выдает запрос на чтение контейнеру 211А данных приложения.
[0040] При обнаружении того, что приложение 201А выдает запрос на запись в адресную область контейнера данных приложения («Да» в блоке 321 принятия решения), модуль 221 управления снова предписывает немедленную приостановку восстановления для этой адресной области (этап 322), так что если восстановление приближается близко к этой адресной области, или даже достигает этой адресной области, восстановление приостанавливается. Выполняется операция записи (этап 323), и после этого восстановление возобновляется, так что если восстановление приблизилось или достигло бы области, восстановление не было бы приостановлено (этап 324). Как пример, операция записи может быть выполнена проиллюстрированным и описанным относительно фигуры 5 образом. Этапы 312-314 могут выполняться каждый раз, когда приложение 201А выдает запрос на чтение контейнеру 211А данных приложения.
[0041] Фигура 4 иллюстрирует способ 400 для ответа на запрос на чтение в то время, как все еще продолжается операция восстановления. Способ 400 может быть выполнен для того, чтобы выполнить операцию чтения согласно этапу 313 на фигуре 3. Таким образом, способ 400 может быть инициирован после этапа 312 на фигуре 3.
[0042] Способ 400 определяет, восстановлена ли уже адресная область, соответствующая запросу на чтение, в контейнер данных приложения в операционном томе (блок 401 принятия решения). Это может быть выполнено модулем 223 восстановления, принимающим во внимание статус 251 прогресса восстановления. Например, если модуль 223 восстановления копирует содержимое из моментального снимка 231С последовательно, то статус 251 прогресса восстановления может представлять высшую точку, представляющую старший адрес, восстанавливаемый в контейнер данных приложения. Кроме того, это может быть выполнено модулем 223 восстановления, принимающим во внимание указание 252 выполненной записи, что адресная область контейнера данных приложения записана с начала восстановления. Например, адресная область может быть записана в ответ на выполнение способа 500 или в ответ на этап 406 на фигуре 4, дополнительно описанной ниже, даже если адресная область еще не была достигнута нормальным восстановлением, выполняемым посредством этапа 304.
[0043] Если адресная область для запроса на чтение уже восстановлена в контейнер данных приложения («Да» в блоке 401 принятия решения), содержимое адресной области считывается из контейнера данных приложения в операционном томе (этап 402), и таким образом становится доступным приложению 201А в ответ на запрос на чтение (этап 403). Если адресная область для запроса на чтение еще не восстановлена в контейнер данных приложения («Нет» в блоке 401 принятия решения), то вместо упомянутого содержимое считывается из соответствующей части моментального снимка (этап 404), и содержимое обеспечивается приложению (этап 403) в то время как считываемое содержимое также по выбору обеспечивается в контейнер данных приложения (этап 405). Кроме того, указание выполненной записи по выбору обновляется (этап 406) для отражения того, что имела место запись в адресную область контейнера данных приложения с начала восстановления. Когда операция чтения завершается, способ 400 возвращается к этапу 314 с фигуры 3, где возобновляется операция восстановления. Способ 400 может повторяться множество раз для каждого запроса на чтение, принимаемого во время процесса восстановления. Как только процесс восстановления завершается (этап 306), операции чтения могут продолжаться в нормальном режиме, без вмешательства со стороны модуля 221 управления.
[0044] Фигура 5 иллюстрирует способ 500 для ответа на запрос на запись в то время, как все еще продолжается операция восстановления. Способ 500 может быть выполнен для того, чтобы выполнить операцию записи согласно этапу 313 на фигуре 3. Таким образом, способ 500 может быть инициирован после этапа 322 на фигуре 3.
[0045] Способ 500 выполняет операцию записи посредством записи ассоциированного содержимого запроса на запись в адресную область контейнера данных приложения в операционном томе (этап 501). Способ 500 также определяет, восстановлена ли уже адресная область, соответствующая запросу на запись, в контейнер данных приложения в операционном томе (блок 502 принятия решения). Это снова может быть выполнено модулем 223 восстановления, принимающим во внимание статус 251 прогресса восстановления. Кроме того, это может быть выполнено модулем 223 восстановления, принимающим во внимание указание 252 выполненной записи, что адресная область контейнера данных приложения записана с начала восстановления. Например, адресная область может быть записана в ответ на предшествующее выполнение способа 500 или в ответ на этап 406 на фигуре 4, даже если адресная область еще не была достигнута нормальным восстановлением, выполненным посредством этапа 304.
[0046] Если адресная область для запроса на запись уже восстановлена в контейнер данных приложения («Да» в блоке 502 принятия решения), это завершает операцию записи, посредством чего происходит возврат к этапу 324 на фигуре 3 для возобновления операции восстановления. Если адресная область для запроса на запись еще не восстановлена в контейнер данных приложения («Нет» в блоке 502 принятия решения), то обновляется индикатор 252 выполненной записи для отражения того, что адресная область уже записана с начала операции восстановления (этап 503). После этого снова посредством этого происходит возврат к этапу 324 на фигуре 3 для возобновления операции восстановления. Способ 500 может повторяться множество раз для каждого запроса на запись, принимаемого во время процесса восстановления. Как только процесс восстановления завершается (этап 306), операции записи могут продолжаться в нормальном режиме, без вмешательства со стороны модуля 221 управления.
[0047] Со стороны модуля восстановления, модуль 223 восстановления определяет, что конкретный контейнер данных приложения некоторого приложения должен подлежать восстановлению из моментального снимка. Например, модуль 223 восстановления может принять инструкцию на восстановление от модуля 221 управления в ответ на выполнение модулем 221 управления этапа 301 на фигуре 3. В ответ модуль восстановления инициирует восстановление.
[0048] Модуль восстановление продолжает восстановление посредством копирования содержимого из моментального снимка в контейнер данных приложения по одной части за раз, что аналогично этапу 304 на фигуре 3. Модуль восстановления отвечает на инструкции на приостановку и возобновление восстановления в ответ на этапы 312, 314, 322 и 324, или иначе просто производит восстановление. Несмотря на мимолетные приостановки, операция восстановления все еще считается продолжающейся, как показано на этапе 304.
[0049] Модуль восстановления также отслеживает по меньшей мере одну адресную область, соответствующую запросу на запись, сделанному в контейнере данных приложения в операционном томе, отдельно от восстановления. Например, это может быть выполнено с использованием индикатора 252 выполненной записи на фигуре 2. При копировании одной части за раз из моментального снимка, модуль восстановления пропускает копирование для любых адресов, которые уже были записаны, как указано в рамках индикатора 252. При восстановлении это препятствует перезаписи более новых данных, создаваемых посредством разрешения приложению 201А продолжать обработку во время восстановления.
[0050] Пример реализации того, как можно содействовать избеганию конфликтных ситуаций, будет описан ниже, сначала со стороны операции записи/чтения, а затем со стороны восстановления.
[0051] Когда приложение выдает запрос на запись или чтение, система получает блокировку диапазона для области, к которой адресован упомянутый запрос на запись или чтение. Если восстановление работает в том же самом диапазоне, тогда эта операция записи/чтения будет отложена для возобновления в более позднее время. Затем, для определения подходящего действия оценивается высшая точка восстановления (пример статуса 251 прогресса восстановления), наравне с этим оценивается “грязная” карта (пример индикатора 252 выполненной записи), как описано выше. Например, для операции чтения определяется, осуществлять ли чтение из контейнера данных (этап 402), или осуществлять чтение из моментального снимка (этап 403). Для операции записи определяется, надо ли обновить “грязную” карту для отражения записи (этап 503). Затем выполняется надлежащая операция ввода/вывода (I/O), и затем для области снимается блокировка диапазона. Если восстановление было отложено для этой области, то восстановление для области возобновляется.
[0052] Избегание конфликтных ситуаций со стороны восстановления имеет место в одном диапазоне адресов за раз. Для каждой области, которая должна быть восстановлена, процесс восстановления получает блокировку диапазона для области, которая должна быть восстановлена. Если операция записи/чтения уже имеет блокировку диапазона в этой области, восстановление в этой области откладывается для возобновления в более позднее время по завершении записи/чтения. Как только восстановление способно получить блокировку диапазона в этой области, восстановление выполняется на основе “грязной” карты. Например, восстановление будет пропускать копирование из моментального снимка для всех адресов из тех, которые отмечены как уже записанные в “грязной” карте. Как только диапазон восстановлен, процесс восстановления снимает блокировку диапазона. Это позволяет любому отложенному запросу на запись/чтение завершиться в этом диапазоне.
[0053] Таким образом, принципы, описанные в данном документе, обеспечивают эффективный и действенный механизм целевого восстановления контейнера данных приложения, не требующий восстановления всего тома, и в то же время также позволяющий приложению продолжать работу в контейнере данных приложения, который восстанавливают в настоящий момент.
[0054] Настоящее изобретение может быть реализовано в других особых формах без отклонения от его основных или существенных характеристик. Описанные варианты осуществления должны быть рассмотрены во всех отношениях только как иллюстративные, а не ограничивающие. Таким образом, объем изобретения указан формулой изобретения, а не предшествующим описанием. Все изменения в пределах значений и области эквивалентности формулы должны быть охвачены в полном объеме.