ОТСЛЕЖИВАНИЕ "ГРЯЗНЫХ" ОБЛАСТЕЙ ЭНЕРГОНЕЗАВИСИМЫХ НОСИТЕЛЕЙ
TRACKING "DIRTY" AREAS OF NONVOLATILE MEDIA

Уровень техники
[0001] В области вычислений множество сценариев подразумевают набор хранения, предоставленный посредством множества устройств хранения данных (например, массив накопителей на жестких дисках, взаимодействующий согласно массиву недорогих дисковых накопителей с избыточностью (RAID)-массиву), и к которому могут осуществлять доступ различные устройства и процессы, чтобы сохранять и извлекать различные типы данных. Во многих таких сценариях данные, сохраненные в различных сегментах набора хранения, могут иметь взаимосвязь. В качестве первого примера, первый набор данных и второй набор данных, сохраненные в наборе хранения, могут ссылаться друг на друга, например, связанные записи в системе базы данных. В качестве второго примера, две или более идентичных версий данных могут быть сохранены для того, чтобы предоставлять различные преимущества. Например, два устройства хранения данных могут хранить и предоставлять доступ к одному и тому же набору данных, тем самым эффективно удваивая скорость доступа к данным. Идентичные копии данных могут также сохраняться для того, чтобы защищать целостность данных; например, если первая копия данных теряется вследствие сбоя, такого как повреждение данных или отказ аппаратных средств (например, поломка накопителя на жестком диске), может быть осуществлен доступ к идентичной второй копии набора данных и выполнена ее репликация для восстановления в результате сбоя.
[0002] В качестве третьего такого примера, данные могут быть ассоциированы для того, чтобы обнаруживать и/или защищаться от ошибок или непреднамеренных изменений в данных. Например, ошибка в логике считывания или сохранения устройства, опустошение или переполнение буфера, дефект на носителе хранения или внешнее повреждение (такое как космическое излучение) может иногда вызывать непредвиденное изменение в данных, сохраненных на носителе хранения, или изменение при считывании данных с носителя хранения. Поэтому, во многих таких сценариях для соответствующих фрагментов данных, сохраненных в устройствах хранения данных, верификатор, такой как контрольная сумма, может быть вычислен и сохранен и может быть использован, чтобы подтверждать, что содержимое набора данных было правильно сохранено в и/или считано из устройства хранения данных. В качестве одного такого примера, в контексте сохранения набора данных, содержащего набор битов, операция исключающего ИЛИ (XOR) может быть применена к битам, давая в результате однобитную контрольную сумму, которая может быть сохранена и ассоциирована с этим набором данных. Когда набор данных позже считывается, другая операция XOR может быть применена к нему, и результат может быть сравнен с однобитной контрольной суммой. Изменение любого одного бита дает в результате несовпадение этих XOR-вычислений, указывая, что данные были некорректно сохранены, изменены или некорректно считаны из устройства хранения данных. Может быть идентифицировано множество типов верификаторов, которые могут варьироваться по некоторым признакам (например, легкость вычисления, возможность идентификации того, какой бит набора данных был изменен, и возможность исправления ошибки, посредством которой некорректно считанный фрагмент данных может быть исправлен).
[0003] Различные формы репликации данных зачастую достигаются посредством использования массивов недорогих дисков с избыточностью, (RAID)-массивов, таких как набор накопителей на жестких дисках, которые объединены вместе, чтобы добиваться различных совокупных свойств, таких как улучшенная производительность и автоматическое зеркальное отображение данных. В качестве первого такого примера, в массиве RAID 1, набор из двух или более накопителей на жестких дисках одинакового размера хранит идентичные копии набора хранения, и любое обновление в наборе хранения идентично распространяется между всеми накопителями на жестких дисках. Набор хранения, поэтому, остается доступным в случае отказов накопителя на жестком диске (даже в случае множества таких отказов), пока хотя бы один накопитель на жестком диске остается функционирующим и доступным. В качестве второго такого примера, массив RAID 4 подразумевает набор из двух или более дисков, где один диск включается в массив не для того, чтобы хранить пользовательские данные, а чтобы хранить верификаторы данных, сохраненных на других дисках. Например, для массива RAID 4, подразумевающего четыре диска, каждый из которых хранит один терабайт данных, объем первых трех дисков объединяется, чтобы формировать трехтерабайтное пространство для хранения пользовательских данных, в то время как четвертый диск включается в массив, чтобы хранить верификаторы для наборов данных, сохраненных на первых трех дисках (например, для каждых трех 64-битных слов, соответственно сохраненных на других трех дисках, четвертый диск включает в себя 64-битный верификатор, который верифицирует целостность трех 64-битных слов). Контроллер RAID-массива содержит схему, которая конфигурируется, чтобы реализовывать детали выбранного уровня RAID для предоставленного набора накопителей на жестких дисках (например, при приеме набора данных автоматически распределяет данные между тремя дисками пользовательских данных, вычисляет верификатор набора данных и сохраняет верификатор на четвертом диске). Используемые RAID-технологии могут также предоставлять возможность дополнительной защиты или признаков; например, если любое одно устройство хранения данных в массиве RAID 4 отказывает, данные, сохраненные на отказавшем устройстве, могут быть полностью восстановлены с помощью оставшихся устройств хранения данных.
Сущность изобретения
[0004] Данная сущность предусмотрена для того, чтобы в упрощенной форме представить набор идей, которые дополнительно описываются ниже в подробном описании. Эта сущность не имеет намерением ни идентифицировать ключевые факторы или важнейшие признаки заявляемого объекта патентования, ни использоваться так, чтобы ограничивать рамки заявляемого объекта патентования.
[0005] При записи ассоциированных наборов данных в системе хранения во время записи могут возникать проблемы, которые вызывают несогласованность между ассоциированными наборами данных. В качестве первого примера, в зеркально отображенном наборе данных во время записи в одно из зеркал может возникать ошибка, такая как непреднамеренное изменение данных вследствие космических лучей, дефекта на физическом носителе или логической ошибки в процессе чтения/записи. В результате зеркальные отображения набора данных могут не совпадать, и может быть затруднительным выбрать корректную версию данных. В качестве второго примера проблемы могут возникать вследствие задержки между сохранением набора данных и его верификатора (или наоборот). Например, многие устройства хранения данных поддерживают лишь запись в одно местоположение за раз (например, местоположение под записывающей головкой накопителя на жестком диске или местоположение, указанное посредством адресного регистра в твердотельном устройстве хранения данных), и последовательное сохранение данных подразумевает запись набора данных перед верификатором, или наоборот. В качестве другого примера, если набор данных и верификатор сохраняются на различных устройствах хранения данных, может быть затруднительным синхронизировать момент, когда первое устройство хранения данных сохраняет набор данных, с моментом, когда второе устройство хранения данных сохраняет верификатор набора данных. В результате сохранение набора данных и соответствующего верификатора происходит не синхронным образом, а последовательным образом. Процесс сохранения может прерываться множеством источников отказов, например, при потере электропитания, отказе аппаратных средств, сбое программного обеспечения или при неожиданном удалении устройства хранения данных из массива. Если такие отказы возникают в момент после сохранения набора данных и перед сохранением верификатора, тогда ошибка верификатора может позже возникать во время считывания, что ставит под угрозу достоверность точности данных. В дополнение к данным, активно записываемым устройством(ами) хранения данных, отказ может также искажать другие записи, которые не были завершены, например, данные, сохраненные в буфере записи или запланированные для предстоящей записи.
[0006] В этих и других сценариях согласованность набора данных может быть определена посредством процесса верификации, например, посредством сравнения идентичных наборов данных или сравнения верификаторов с соответствующими данными. Соответственно, при обнаружении катастрофического отказа данные на одном или более устройствах хранения данных могут быть "очищены" посредством верификации данных и возможного исправления несогласованностей. Однако, в то время как возникновение отказа может быть легко обнаружено (например, некорректное завершение работы или замена отказавшего устройства хранения данных), может быть невозможно определить, какие сегменты набора хранения записывались во время записи и могли быть скомпрометированы отказом. Без такой информации полный набор хранения может быть необходимо очистить посредством верификации каждого набора данных в наборе хранения (например, сравнивая полноту каждой копии зеркально отображенного набора данных, чтобы обнаруживать несогласованности, и тестируя верификаторы каждого набора данных в наборе хранения). Очистка всего набора хранения может занимать длительное время, в частности, принимая во внимание рост объемов набора хранения до диапазона петабайтов, приводя в результате к длительному периоду восстановления, следующего даже за коротким периодом катастрофического отказа; и хотя этот дорогостоящий процесс очистки может гарантировать целостность набора хранения, протяженность процесса очистки всего объема (часто подразумевающего наборы данных и даже устройства хранения данных, на которые не велась запись длительное время) может быть несоразмерным сравнительно небольшому числу операций записи, которые могли выполняться во время отказа.
[0007] В данном документе представляются технологии для фокусировки очистки набора хранения на данных, которые могли быть скомпрометированы отказом. В соответствии с этими технологиями, перед записью в местоположение в наборе хранения устройство хранения данных может сохранять на тот же энергонезависимый физический носитель дескриптор, указывающий местоположение, где запись должна произойти, и может затем стирать дескриптор, после того как запись была завершена. Таким образом, устройства хранения данных могут отслеживать "грязные" области набора хранения и при восстановлении в результате отказа могут инициировать очистку только "грязных" областей набора хранения. Однако, следует понимать, что записывание (и сброс на диск) адреса на энергонезависимый физический носитель каждой записи и стирание (и сброс на диск) адреса после подтверждения завершения записи на физический носитель может значительно увеличивать (например, утраивать) число операций подвода головки и записи, подразумеваемых при записи каждого набора данных, тем самым снижая производительность (например, время ожидания и пропускную способность) набора хранения. В другом крайнем случае отслеживание "грязной" информации только на высоком уровне, например, для каждого устройства хранения данных, раздела или тома, может в недостаточной степени фокусировать процесс очистки. Например, если "грязная" информация отслеживается для каждого тома, процесс очистки может фокусироваться на конкретном томе, который использовался во время записи, но том может содержать множество терабайт данных, что приводит в результате к экстенсивному процессу очистки, даже если записывались только несколько мегабайт данных. Поэтому согласно технологиям, представленным в данном документе, набор хранения может быть разделен на области с размером области, и "грязная" информация может отслеживаться для каждой области. Например, разделение набора хранения на области по одному гигабайту может предоставлять возможность сравнительно точного отслеживания областей, в то же время также уменьшая частоту обновления информации "грязной" области (например, когда запись инициируется в области, она отмечается как "грязная" и может оставаться отмеченной таким образом посредством экстенсивных последовательных операций записи в области). Выбор размера области может, поэтому, рассматриваться как компромисс между точностью в информации "грязной" области, ведущей к более сфокусированным и более коротким процессам очистки, и снижением производительности, обусловленной реализацией процесса отслеживания "грязной" области.
[0008] Дополнительные технологии могут дополнительно уменьшать частоту обновлений информации "грязной" области. В качестве первого примера, перед записью дескриптора "грязной" области для области, в которую была запрошена запись, вариант осуществления может определять, помечена ли уже область как "грязная" на носителе хранения, и может избегать избыточной пометки области как "грязной". В качестве второго примера, область, в которую запись была недавно завершена, может представлять высокую вероятность близкой последующей записи в ту же область. Поэтому, вместо безотлагательной пометки области как "чистой" следом за завершением записи, пометка как "чистой" может быть отложена на короткий срок; и если принимается последующая запись в ту же область, область может оставаться помеченной как "грязная" вместо необходимости помечать область как "грязную" вскоре после пометки области как "чистой". В одном таком варианте осуществления представление дескрипторов "грязных" областей в энергозависимой памяти может быть сформировано и использовано для того, чтобы определять, когда помечать такие области как "грязные" или "чистые". Например, представление в памяти может регистрировать моменты последнего запроса записи в каждую область и может помечать как "чистые" любые области, в которые запись не производилась в течение определенного периода. Дополнительно, представление в оперативной памяти может предоставлять возможность пакетной записи "чистых" областей, дополнительно уменьшая количество операций записи на носители хранения, подразумеваемых в процессе отслеживания "грязной" области. Эти и другие использования отслеживания в оперативной памяти "рабочего набора" "грязных" областей может уменьшать число операций доступа к устройствам хранения данных и, следовательно, эксплуатационные затраты на отслеживание энергонезависимой "грязной" области без значительного снижения точности процесса очистки. Эти и другие технологии могут дополнительно уменьшать эксплуатационные затраты на реализацию отслеживания "грязной" области без значительного удлинения процесса очистки во время восстановления в результате отказа набора хранения.
[0009] Для достижения вышеописанного и связанных с этим результатов, последующее описание и присоединенные чертежи излагают некоторые иллюстративные аспекты и реализации. Они показывают некоторые различные способы, которыми один или более аспектов могут быть использованы. Другие аспекты, преимущества и новые признаки раскрытия сущности должны становиться очевидными из последующего подробного описания при рассмотрении вместе с прилагаемыми чертежами.
Краткое описание чертежей
[0010] Фиг. 1 является иллюстрацией примерного сценария, изображающего отказ набора хранения, который может компрометировать зеркально отображаемый набор данных, сохраненный на нескольких устройствах хранения данных.
[0011] Фиг. 2 является иллюстрацией примерного сценария, изображающего отказ набора хранения, который может компрометировать согласованность набора данных и верификатора (например, контрольной суммы) набора данных.
[0012] Фиг. 3 является иллюстрацией двух технологий, которые могут уменьшать инцидентность скомпрометированных данных в наборе данных, вызванную отказом, но которые могут делать это со значительными затратами и/или неэффективностями.
[0013] Фиг. 4 является иллюстрацией примерного сценария, изображающего использование технологий, представленных в данном документе, чтобы отслеживать "грязные" области на физических носителях набора хранения.
[0014] Фиг. 5 является иллюстрацией блок-схемы последовательности операций примерного способа отслеживания и записи на энергонезависимые носители "грязных" областей набора хранения согласно технологиям, представленным в данном документе.
[0015] Фиг. 6 является иллюстрацией блок-схемы последовательности операций примерного способа очистки набора хранения согласно "грязным" областям, указанным на энергонезависимом носителе хранения набора хранения согласно технологиям, представленным в данном документе.
[0016] Фиг. 7 - это иллюстрация примерного машиночитаемого носителя, содержащего исполняемые процессором инструкции, сконфигурированные, чтобы осуществлять одно или более положений, изложенных в данном документе.
[0017] Фиг. 8 является иллюстрацией примерного сценария, изображающего один тип структуры данных, которая может быть использована, чтобы отслеживать "грязные" области на энергонезависимом физическом носителе набора хранения согласно технологиям, представленным в данном документе.
[0018] Фиг. 9 является иллюстрацией примерного процесса обновления таблицы "грязных" областей на устройстве хранения данных, чтобы отслеживать "грязные" области набора хранения в соответствии с технологиями, представленными в данном документе.
[0019] Фиг. 10 является иллюстрацией примерного конечного автомата, осуществляющего процесс отслеживания "грязных" областей набора хранения в соответствии с технологиями, представленными в данном документе.
[0020] Фиг. 11 иллюстрирует примерное вычислительное окружение, в котором одно или более положений, изложенных в данном документе, могут быть реализованы.
Подробное описание изобретения
[0021] Заявленный объект патентования далее описывается со ссылками на чертежи, на которых аналогичные номера ссылок используются для того, чтобы ссылаться на аналогичные элементы. В последующем описании, в целях пояснения, многие конкретные детали изложены для того, чтобы обеспечивать полное понимание заявленного объекта патентования. Тем не менее, очевидно, что заявленный объект патентования может быть применен на практике без этих конкретных деталей. В других случаях, структуры и устройства показаны в форме блок-схем для того, чтобы облегчать описание заявленного объекта патентования.
[0022] A. Введение
[0023] В области вычислений множество сценариев подразумевает хранилище данных, содержащее набор хранения на одном или более энергонезависимых устройствах хранения данных (например, накопители на пластинчатых магнитных и/или оптических жестких дисках, твердотельные устройства хранения данных и схемы энергонезависимой памяти). Многие детали хранилища данных могут изменяться, такие как размер слова, способ адресации, разделение пространства хранения устройства хранения данных на один или более разделов, и раскрытие выделенных пространств в устройстве хранения данных как одного или более томов в вычислительном окружении. Дополнительно, устройства хранения данных могут работать независимо или со слабым взаимодействием, чтобы предоставлять набор хранения. Для анализа, в массиве, структурированном согласно схеме RAID 0, набор хранения может быть просто объединен из объема, предоставляемого каждым устройством хранения данных, каждое из которых может работать независимо от других дисков. Альтернативно, устройства хранения данных могут быть сконфигурированы, чтобы предоставлять различные признаки посредством изменения степеней тесного взаимодействия. Например, в массиве, структурированном согласно схеме RAID 1, в наборе устройств хранения данных каждое может хранить идентичную копию всего набора хранения; например, однотерабайтный набор хранения может быть сохранен как четыре идентичных копии на четырех однотерабайтных устройствах хранения данных, которые могут взаимодействовать, чтобы гарантировать, что любой запрос на изменение набора хранения эквивалентно применяется ко всем четырем устройствам хранения данных для того, чтобы поддерживать синхронность. "Зеркально отображаемый" архив такой природы может представлять улучшенные скорости доступа; например, различные процессы могут осуществлять доступ к набору хранения через различные устройства хранения данных, потенциально учетверяя скорость доступа к набору хранения, которая может быть достижима любым одним устройством. Дополнительно, этот тип массива демонстрирует надежный срок службы; если один или более накопителей на жестких дисках отказывает (например, вследствие искажения данных, повреждения или потери), набор хранения все еще доступен через другие накопители на жестких дисках и остается неповрежденным, пока, по меньшей мере, один накопитель на жестком диске остается действующим и доступным. Однако, преимуществами этих признаков является смещение в массиве RAID 1 посредством значительной потери объема (например, использование четырех терабайт пространства накопителя на жестком диске, чтобы хранить один терабайт данных). Другие схемы хранения могут предусматривать некоторые из этих признаков безопасности и работы с меньшим сокращением объема (например, в схеме RAID 4, набор из (n) накопителей с пространством (s) показывает полный объем хранения всех, кроме одного накопителя на жестком диске, который резервируется для того, чтобы хранить информацию контроля четности, и может восстанавливаться после отказа любого одного накопителя на жестком диске в массиве).
[0024] В этих и других сценариях, наборы данных могут быть сохранены в наборе хранения посредством различных устройств и процессов. Однако, множество форм отказов могут возникать во время использования набора хранения, который может содержать хранилище данных. Например, в то время как записи в набор хранения от имени различных процессов осуществляют доступ к набору данных, сбой программного обеспечения может происходить в процессе записывания, в процессе управления набором хранения, в драйвере устройства для программного обеспечения или в операционной системе; компьютер может терять связь с устройством хранения данных (например, устройство хранения данных может быть отсоединено, или проводное или беспроводное соединение компьютера и устройства хранения данных может отказывать); или устройство хранения данных может испытывать отказ аппаратных средств (например, разрушение головки в накопителе на жестком диске или прерывание электропитания). Эти и другие формы отказа в работе могут происходить внезапно и без предупреждения и могут прерывать процесс записывания данных в набор хранения.
[0025] В случае отказа набора хранения во время одной или более операций записи, некоторые типы отказов могут быть восстановимыми или могут приводить в результате к незначительной потере данных. Например, отказ может происходить вскоре после того, как данные были записаны в набор хранения, и является восстановимым; может вызывать потерю данных, которые могут быть восстановлены или которые не являются ценными; или может вызывать потерю небольшого объема данных в сравнительно большом наборе данных, такую как потерю нескольких сообщений электронной почты в очень большом архиве сообщений электронной почты. Однако, другие типы отказов могут представлять значительные проблемы. В частности, некоторые ассоциации могут существовать между двумя или более наборами данных, которые записываются в набор хранения, и отказ, который возникает во время записи первого набора данных, может приводить в результате к несогласованности в ассоциированном наборе данных. Такая несогласованность может не только компрометировать целостность набора данных, записываемого в момент отказа, но также ассоциированные наборы данных. Действительно, в некоторых сценариях, полный отказ записи и потеря данных, которые должны быть записаны, могут вызывать меньше проблем, чем незаконченная запись в набор хранения. В качестве первого примера, если отказ происходит во время обновления первой копии зеркально отображаемого набора данных, обнаруженная несогласованность между этой копией и другой копией может подвергать сомнению целостность обеих копий. Кроме того, если обе копии обновлялись в момент отказа, и несогласованность впоследствии обнаруживается, может быть затруднительным определять то, какая копия успешно завершила запись перед отказам, а какой копии не удалось сделать это. В качестве второго примера, если несогласованность обнаруживается между набором данных и его контрольной суммой, может быть затруднительным определять, является ли ошибочным набор данных или контрольная сумма. Кроме того, если контрольная сумма вычисляется из нескольких наборов данных, сбой в завершении записи одного набора данных может давать в результате некорректную контрольную сумму и снижение доверия не только к целостности набора данных и контрольной сумме, но и ко всем другим наборам данных, представленных контрольной суммой. В этих и других сценариях, сбой в завершении записи в набор данных может приводить в результате к несогласованностям, которые компрометируют достоверность большого диапазона данных в наборе хранилищ, даже включающих в себя другие наборы данных, которые лишь косвенно относятся к не полностью записанному набору данных.
[0026] Фиг. 1 и 2 представляют два различных сценария, иллюстрирующих последствия отказа во время записи в набор хранения. В примерном сценарии 100 на фиг. 1 набор 102 хранения, содержащий различные наборы 104 данных (например, биты, байты, слова, секторы, файлы или записи) сохраняется на множестве устройств 106 хранения данных, где существует соотношение зеркального отображения между наборами 104 данных. В частности, устройства 106 хранения данных в этом примерном сценарии 100 конфигурируются, чтобы хранить идентичные копии набора 104 данных, например, в схеме RAID 1. (Зеркальное отображение может выполняться физическим образом, например, запись одинаковых данных в каждое физическое местоположение на идентичном по размеру наборе устройств 106 хранения данных, или логическим образом, например, запись данных в физическое местоположение каждого устройства 106 хранения данных, соответствующее логическому адресу набора 102 хранения). Соответственно, в первый момент 112 времени, когда запись 110 запрашивается на конкретный набор 104 данных в конкретном местоположении 108 в наборе 102 хранения, устройства 106 хранения данных, каждое могут выполнять запись 110 в требуемое местоположение 108. Однако, как дополнительно иллюстрировано в этом примерном сценарии 100, проблемы могут возникать вследствие неполной синхронности устройств 106 хранения данных; например, запись 110 в каждое устройство 106 хранения данных может быть инициирована, выполнена и завершена в различные моменты времени различными устройствами 106 хранения данных. Такие временные разности могут возникать вследствие различий аппаратных средств (например, первое устройство 106 хранения данных может немедленно фиксировать набор 104 данных на физическом носителе, в то время как второе устройство 106 хранения данных может сначала сохранять набор 104 данных в буфере записи), но может возникать даже с идентично оснащенными устройствами хранения данных (например, различия в очередях ввода/вывода различных устройств 106 хранения данных или различия в позиции начального сектора записывающих головок накопителей на жестких дисках в начале запроса записи). В результате, во второй момент 114 времени, записи 110 в два из устройств 106 хранения данных могут быть завершены, в то время как третье устройство 106 хранения данных продолжает выполнять запись 110 (и может, в действительности, еще не начать передавать набор 104 данных в набор 102 хранения).
[0027] Такие отклонения в синхронности устройств 106 хранения данных могут приводить в результате к значительным проблемам, например, если отказ возникает после завершения записи 110 первым устройством 106 хранения данных и перед завершением той же записи 110 вторым устройством 106 хранения данных. Например, в третий момент 116 времени, в то время как третья запись 110 выполняется в устройства 106 хранения данных, возникает отказ 118, который прерывает запись 110 во все устройства 106 хранения данных. Даже если отказ 118 является временным (например, кратковременная потеря электропитания), и даже эфемерным, отказ 118 может приводить в результате к несогласованности 122 вследствие временных разностей в устройстве 106 хранения данных (например, запись 110 может быть завершена перед отказом 118 на первом и втором устройствах 106 хранения данных, но не на третьем устройстве 106 хранения данных). Во время восстановления в результате отказа 118, при идентификации несогласованности 122 между наборами 104 данных, которые, как предполагается, должны быть идентичными, может быть затруднительным выбирать определение того, какой набор 108 данных является точным. В этом примерном сценарии 100, может быть логичным выбирать версию из наборов 108 данных, сохраненных на большинстве устройств 106 хранения данных. Однако, незначительные изменения этого примерного сценария 100 могут сделать такой выбор менее логичным; например, несогласованность 122 может возникать в сценариях, затрагивающих четное число устройств 106 хранения данных, так что выбор большинства может не быть доступен.
[0028] В сценариях, таких как примерный сценарий 100 на фиг. 1, несогласованность 122 может применяться лишь к наборам 110 данных, которые были недавно записаны. Однако, в других сценариях, аналогичные отказы 118 могут также подвергать риску достоверность наборов 104 данных, которые не были записаны, или даже наборов данных, к которым не осуществлялся доступ длительное время, и даже наборов данных, сохраненных на других устройствах 106 хранения данных, которые не использовались во время отказа 118. В примерном сценарии 200 на фиг. 2 набор из четырех устройств 106 хранения данных конфигурируется в виде схемы RAID 4, при этом набор 102 хранения распределяется между тремя устройствами 106 хранения данных, а четвертое устройство 106 хранения данных конфигурируется, чтобы хранить набор верификаторов 202, соответствующих различным наборам 104 данных, сохраненным на первых трех устройствах 106 хранения данных. Верификаторы 202 могут содержать контрольную сумму, такую как бит четности, который вычисляется посредством операции XOR, вместе с битами, сохраненными в соответствующем местоположении на каждом из других устройств 106 хранения данных. (Например, для одномегабайтного набора 104 данных, сохраненного в конкретном физическом или логическом местоположении в наборе 102 хранения каждого устройства 106 хранения данных, каждый из одномегабайтных наборов 104 данных может быть подвергнут операции XOR вместе, чтобы формировать один мегабайт данных четности, которые сохраняются на четвертом устройстве 106 хранения данных). Это взаимодействие может предоставлять возможность устройствам 106 хранения данных поддерживать целостность набора 102 хранения ввиду некоторых форм потери данных. Например, если любое одно из первых трех устройств 106 хранения данных теряется, сегмент набора 120 хранения, сохраненный на потерянном устройстве 106 хранения данных, может быть восстановлен посредством операции XOR вместе с данными, сохраненными на других двух устройствах 106 хранения данных, и соответствующими данными четности, сохраненными на четвертом устройстве 106 хранения данных; а если четвертое устройство 106 хранения данных теряется, данные четности могут быть просто восстановлены на замещающее устройство 106 хранения данных из соответствующих наборов 104 данных, сохраненных на первых трех устройствах хранения данных.
[0029] Таким образом, взаимодействие устройств 106 хранения данных, как иллюстрировано в примерном сценарии 200 на фиг. 2, предоставляет возможность нечувствительности к сбоям даже в случае внезапной и долговременной потери любого одного устройства 106 хранения данных. Однако, устройства 106 хранения данных в этом примерном сценарии 200 также показывают неполную синхронность, представленную в примерном сценарии 100 на фиг. 1. Например, в первый момент 204 времени, запись 110 может быть инициирована в набор 104 данных, сохраненный на втором устройстве 106 хранения данных, что подразумевает обновление верификатора 202 для соответствующих наборов 104 данных, сохраненного на четвертом устройстве 106 хранения данных. Однако, записи 110 могут не завершаться в одно и то же время; например, во второй момент 206 времени, запись 110 во второе устройство 106 хранения данных может быть завершена, а запись 110 верификатора 202 на четвертое устройство 106 хранения данных может не быть завершена. Более того, отказ 118 может возникать прежде, чем последняя запись 110 завершится, и четвертое устройство 106 хранения данных может сохранять некорректный верификатор 118. Даже если он является ограниченным и кратким, этот отказ 118 может подвергать риску не только верификатор 116, который был неполностью записан на четвертое устройство 106 хранения данных, и набор 104 данных, сохраненный на втором устройстве 106 хранения данных, который был недавно, но полностью записан, но и наборы 104 данных, сохраненные на первом и третьем устройствах 106 хранения данных, которые также представляются посредством верификатора 122. Например, в третий момент 208 времени третье устройство 106 хранения данных может испытывать отказ 118; а в четвертый момент 210 времени может быть инициирован процесс восстановления, чтобы восстанавливать наборы 104 данных на замещающем устройстве хранения данных 118 посредством операции XOR вместе с соответствующими наборами 104 данных на первом и втором устройствах 106 хранения данных и соответствующим верификатором 202 на четвертом устройстве 106 хранения данных. Однако, вследствие несогласованности 122, вызванной отказом 118 записи 110 на четвертое устройство 106 хранения данных во второй момент 206 времени, операция XOR может приводить в результате к восстановлению некорректных данных 212 на третьем устройстве 106 хранения данных. Эти некорректные данные 212 могут быть сформированы, даже если этот набор 104 данных на третьем устройстве 106 хранения данных не был затронут в отказе 118 записи 110, даже если этот набор 104 данных не был записан в течение длительного времени, и даже если третье устройство 106 хранения данных не использовалось, или к нему не осуществлялся доступ во время отказа 118 записи 110 на четвертое устройство 106 хранения данных. Таким образом, единственный отказ записи 202 может содержать устойчивые к отказам способности набора 102 хранения (т.е., несмотря на реализацию схемы RAID 4, набор 102 хранения теряет способность восстановления после отказа 118 одного устройства 106 хранения данных). Даже более суровые последствия могут возникать в других сценариях; например, если неудачная запись 110 произошла в наборе 104 данных, содержащем основную загрузочную запись, весь том в наборе 106 хранения, возможно содержащий весь набор 106 хранения, может быть скомпрометирован и недоступен.
[0030] Вследствие потенциально катастрофических последствий отказов 118 операций 110 записи, могут быть использованы технологии, чтобы обнаруживать и исправлять получающиеся в результате несогласованности 122. В качестве первой такой технологии, могут быть использованы различные типы процессов очистки, чтобы обнаруживать несогласованность в наборе 102 хранения. Например, наборы 104 данных могут сравниваться с верификаторами 202, чтобы обнаруживать несовпадение, или могут сравниваться копии наборов 104, которые, как предполагается, должны быть идентичными. Даже наборы 104 данных, которые не ассоциированы с другим набором 104 данных или верификатором 202, могут быть изучены на предмет несогласованностей, таких как искажение данных, и могут порой быть автоматически восстановлены. Однако, сканирование всего набора 102 хранения может быть неэффективным и/или недопустимым во многих сценариях. Например, сканирование может быть длительным вследствие размера набора 102 хранения, производительности набора 102 хранения (например, географически распределенный набор 102 хранения может быть доступен через сетевые соединения со сравнительно низкой пропускной способностью) и/или сложности сканирования (например, математически интенсивное вычисление сложного контроля четности). Во время сканирования набор 102 хранения остается вероятно несогласованным и незащищенным в случае отказа 118 устройства 106 хранения данных, как изображено в примерном сценарии 200 на фиг. 2, и может быть неразумно предоставлять возможность процессам осуществлять доступ к набору 102 хранения вследствие вероятности предоставления некорректных данных. Такие процессы могут, поэтому, быть заблокированы до тех пор, пока сканирование не завершится (или, по меньшей мере, до тех пор, пока наборы 104 данных, используемые процессом, не будут очищены), приводя в результате к остановке работы служб или вынужденному простою. Дополнительно, это длительное и дорогостоящее сканирование всего набора 102 хранения может быть запущено посредством потенциально короткого отказа 118 даже одного устройства 106 хранения данных, и может быть несоразмерным числу незаконченных операций 110 записи во время отказа 118. Действительно, даже если операции 110 записи не находились в процессе выполнения во время отказа 118, может быть вызвано сканирование всего набора 102 хранения, если число незаконченных операций 110 записи не может быть определено, вследствие вероятности несогласованности 122, которая может иметь катастрофические результаты.
[0031] Принимая во внимание эти соображения, может быть желательным предоставлять механизмы, чтобы сохранять информацию о незаконченных операциях 110 записи во время обычной работы набора 102 хранения в случае внезапного отказа 118 аппаратных средств и/или программного обеспечения. Эта информация может быть записана как информация о "грязном" состоянии набора 102 хранения, которое может представлять несогласованность 122, если возникает отказ. Более того, может быть желательным записывать эту информацию в энергонезависимой памяти для того, чтобы сохранять информацию в случае отказа электропитания. Это отслеживание может активировать процесс очистки, запускаемый после отказа 118, так что процесс очистки может ограничиваться сканированием только областей набора 102 хранения, которые были затронуты в незаконченной операции 110 записи в момент отказа 118.
[0032] Фиг. 3 представляет две технологии регистрации "грязного" состояния в энергонезависимой памяти для набора 102 хранения, предоставленного посредством множества устройств 106 хранения данных. В качестве первой примерной технологии 300, для каждого бита данных, сохраненных в наборе 102 хранения, может быть сохранен "грязный" индикатор 302, который указывает незаконченную запись 202 в бит. "Грязный" индикатор 302 для бита может быть установлен перед инициированием записи 202 в бит, и может быть очищен после того, как запись 202 завершена. Для того, чтобы очищать набор 102 хранения, "грязные" индикаторы 302 битов могут быть изучены, и любые "грязные" индикаторы 302, которые установлены, могут инициировать очистку ассоциированного бита (например, посредством копирования поверх несогласованного бита соответствующего бита из идентичной копии набора 102 данных, сохраненного на другом устройстве 106 хранения данных).
[0033] Этот первый примерный способ 300 может представлять некоторые преимущества; например, он может осуществлять хранение информации о незаконченных операциях 104 записи в энергонезависимом носителе хранения, может вызывать сравнительно простой процесс очистки, подразумевающий небольшое количество дополнительных аппаратных средств или программного обеспечения, и может уменьшать вычислительную сложность очистки по сравнению с другими способами обнаружения (например, выполнение операции XOR на больших наборах 104 данных, извлеченных из нескольких устройств 106 хранения данных). Однако, этот первый примерный способ 300 также представляет множество недостатков. В качестве примера, "грязные" индикаторы 302 потребляют половину пространства хранения набора 102 хранения. В качестве второго примера, процесс сканирования все еще подразумевает сканирование всего набора 102 хранения, и даже если относительная простота сканирующего обнаружения уменьшает задействованную вычислительную мощность, осуществление доступа ко всему набору 102 хранения может все еще приводить в результате к длительному процессу очистки. Более того, если скорость доступа к набору 102 хранения является узким местом в процессе очистки, продолжительность процесса очистки может быть неизменной. В качестве третьего примера, если "грязные" индикаторы 302 хранятся в физической близости с отслеживаемыми битами устройства 106 хранения данных (например, следом за каждым битом или байтами на физическом носителе устройства 106 хранения данных), отказ 108, приводящий в результате к искажению бита, может также приводить в результате к искажению "грязного" индикатора 302. Альтернативно, если "грязные" индикаторы 302 хранятся в другой области того же устройства 106 хранения данных, тогда запись 202 одного бита подразумевает три операции доступа к трем различным сегментам устройства 106 хранения данных - например, первый подвод головки и осуществление доступа к области, хранящей "грязные" индикаторы 302, чтобы пометить бит как "грязный"; второй подвод головки и осуществление доступа к области, хранящей бит, чтобы выполнять запись 202; и третий подвод головки и осуществление доступа к области, хранящей "грязные" индикаторы 302, чтобы помечать бит как "чистый". Эти множественные операции доступа могут значительно снижать производительность (например, задержку и пропускную способность) устройства 106 хранения данных. Более того, повышенный физический износ, подразумеваемый при регулярном использовании устройства 106 хранения данных, вызванный этим вариантом отслеживания "грязных" битов, может непреднамеренно форсировать физический отказ 118 устройства 104 хранения данных.
[0034] Фиг. 3 также изображает второй примерный способ 304 для отслеживания "грязной" информации для набора 102 хранения, предоставленного посредством набора устройств 106 хранения данных. Этот второй примерный способ 304 подразумевает включение в себя отдельной энергонезависимой памяти 306, например, твердотельного устройства хранения данных, содержащего отдельный аккумулятор 308, куда могут быть записаны "грязные" индикаторы для соответствующих байтов набора 102 хранения. Например, запросы записей 202 соответствующих наборов 104 данных могут наблюдаться, записываться в отдельную энергонезависимую память 306 и очищаться, когда запись 202 завершена.
[0035] Этот второй примерный способ 304 представляет несколько преимуществ, как в целом, так и в отношении первого примерного способа 304, иллюстрированного на фиг. 3. В качестве первого примера, поскольку доступ к отдельной энергонезависимой памяти 306 может происходить одновременно с выполнением записи 202 в набор 102 хранения, производительность (например, задержка и пропускная способность) устройства 106 хранения данных может не снижаться посредством включения этого способа. В качестве второго примера, сохранение "грязных" индикаторов 306 в отдельном сегменте памяти может избегать уменьшения объема набора 102 хранения. В качестве третьего примера, отделение хранилища "грязных" индикаторов 302 от физических носителей устройств 106 хранения данных может сберегать "грязные" индикаторы 302 в случае отказа 118 набора 102 хранения; например, физический дефект в сегменте устройства 106 хранения данных может не влиять на хранение или извлечение "грязного" индикатора 302 для байтов, сохраненных в дефектном сегменте, а в случае отказа электропитания отдельная энергонезависимая память 306 может продолжать работать с помощью аккумулятора 308. В качестве четвертого примера, процесс очистки может быть значительно затянут посредством фокусировки только на байтах, указанных как "грязные" в отдельной энергонезависимой памяти 306.
[0036] Однако, этот второй примерный способ 304 также представляет отдельные недостатки. В качестве первого примера, включение отдельных аппаратных средств значительно увеличивает стоимость и сложность набора 102 хранения. В качестве второго примера, в дополнение к вероятности отказа устройства 106 хранения данных, управление набором 102 хранения может также бороться с отказом отдельной энергонезависимой памяти 306. Кроме того, поскольку отдельная энергонезависимая память 306 не хранится в наборе 102 хранения, она не включается в механизмы продвижения избыточности и отказоустойчивости набора 102 хранения, и единичный отказ отдельной энергонезависимой памяти 306 может приводить в результате к потере "грязных" индикаторов 302 для всего набора 102 хранения. В качестве третьего примера, отслеживание "грязных" индикаторов 302 для соответствующих байтов набора 102 хранения может подразумевать большое число и скорость доступов к отдельной энергонезависимой памяти 306, которая должна обеспечивать высокую пропускную способность и большой объем, чтобы удовлетворять этой задаче. Действительно, отдельная энергонезависимая память 306 должна обеспечивать достаточную пропускную способность, чтобы записывать действия записи не только для самого быстрого устройства 106 хранения данных в наборе 102 хранения, но и для комбинированной скорости действий всех устройств 106 хранения данных, обслуживаемых отдельной энергонезависимой памятью 306. В качестве четвертого примера, если отдельная энергонезависимая память 306 не объединена с устройством 106 хранения данных (например, если она реализуется в RAID-контроллере), "грязные" индикаторы 302 могут быть менее переносимыми, чем устройства 106 хранения данных. Например, в случае несвязанного отказа RAID-контроллера, устройства 106 хранения данных могут быть перенесены и доступны посредством другого RAID-контроллера, но "грязные" индикаторы 302 могут оставаться в отдельной энергонезависимой памяти 306 отказавшего RAID-контроллера, которая является полностью функционирующей. Действительно, пользователю может быть неясно, почему устройства 106 хранения данных, которые не были затронуты в отказе RAID-контроллера, могут быть несогласованными, и, поэтому, должны быть очищены, когда вставляются в отдельный RAID-контроллер. Эти и другие недостатки могут проявляться многими технологиями, сходных с технологией на фиг. 3, для обеспечения восстановления набора 102 хранения в результате отказа 118 посредством отслеживания состояния записей 202 в набор 102 хранения.
[0037] B. Представленные технологии
[0038] В данном документе представляются технологии для отслеживания состояния записей 202 в набор 102 хранения, представленный посредством множества устройств 106 хранения данных, которые могут предоставлять возможность быстрого процесса очистки отказоустойчивым, высокопроизводительным и экономически выгодным образом. В соответствии с этими способами, набор 102 хранения может быть разделен на области конкретного размера области (например, области по одному гигабайту), и дескриптор областей может быть сформирован, чтобы регистрировать незавершенность операций 110 записи в одно или более местоположений 108 в каждой области. Дескриптор областей может быть сохранен в том же устройстве 106 хранения данных, где располагаются области, или на другом устройстве 106 хранения данных набора 102 хранения. Когда принимается запрос записи 110 в конкретное местоположение 108, вариант осуществления этих технологий может сначала идентифицировать область, содержащую местоположение 108, и может затем определять, помечен ли уже индикатор области для области, содержащей местоположение 108, как "грязный". Если нет, вариант осуществления может сначала обновлять индикатор области, чтобы помечать область как "грязную"; а если да, то вариант осуществления может приступать к записи 110 без необходимости обновлять индикатор области. После того как запись 110 завершается, вариант осуществления может помечать индикатор области для области как "чистый". Причем, вариант осуществления может быть сконфигурирован, чтобы не обновлять область как "чистую" немедленным образом, а может ожидать в течение короткого периода, прежде чем выполнить это, в случае, когда последующие запросы записей 110 в ту же область (либо перезапись одного и того же местоположения 108, либо запись 110 в последовательно следующий набор 104 данных или иной соседний набор 104 данных) немедленно следуют за первой записью 110. Эта задержка может не допускать перезаписи индикатора области в состояние "чистый", за которым немедленно следует перезапись индикатора как "грязного", и может, поэтому, экономно использовать операции доступа к устройству 106 хранения данных для повышения производительности и долговечности устройства 106 хранения данных.
[0039] Фиг. 4 представляет иллюстрацию примерного сценария, изображающего отслеживание незаконченных записей 110 в набор 102 хранения, предоставленный двумя устройствами 106 хранения данных, согласно технологиям, описанным в данном документе, где устройства 106 хранения данных координируются, чтобы хранить идентичные копии набора 102 хранения (например, зеркальное отображение набора 102 хранения согласно схеме RAID 1). В этом примерном сценарии 400, и в соответствии с этими технологиями, набор 102 хранения, предоставленный устройствами 106 хранения данных, разделяется на области 402 с размером области (например, области в один гигабайт). Каждая область 402 содержит наборы 104 данных, сохраненные во множестве местоположений 108 (например, диапазон адресов) в наборе 102 хранения. На каждом устройстве 106 хранения данных может быть сформирован дескриптор 404 областей, где области 402 могут быть помечены как "грязные" или "чистые" согласно незавершенному или завершенному состоянию записей 110, выполненных по наборам 104 данных, содержащим область 402. Например, в первый момент 408 времени запрашивается первая запись 110 в первое местоположение 108 в наборе 102 хранения, и устройства 106 хранения данных начинают выполнять первую запись 110, сначала идентифицируя область 402, содержащую первое местоположение 108, и затем помечая 406 область 402 как "грязную" в дескрипторе 404 области. Пометив область 402 как "грязную", устройства 106 хранения данных затем инициируют первую запись 110 в местоположение 108 в наборе 102 хранения. Во второй момент 410 времени первое устройство 106 хранения данных может завершить первую запись 110, но может еще не пометить область 402 как "чистую" в дескрипторе 404 областей. Однако, вследствие несовершенной синхронности устройств 106 хранения данных, во второй момент 410 времени, второе устройство 106 хранения данных может еще не завершить первую запись 110.
[0040] Как дополнительно иллюстрировано в примерном сценарии 400 на фиг. 4, в третий момент 412 времени, вторая запись 110 может быть запрошена в другое местоположение 108 в наборе 102 хранения. Устройства 106 хранения данных, поэтому, идентифицируют область 402, ассоциированную с местоположением 106 второй записи 110, и определяют, что это местоположение 106 также находится в первой области 402. Кроме того, поскольку первая область 402 уже помечена как "грязная" в дескрипторе 404 областей, устройства 106 хранения данных удерживаются от избыточного обновления дескриптора 404 областей. Устройства 106 хранения данных затем начинают выполнение записи 110, и второе устройство 106 хранения данных, в конечном счете, завершает запись 110 и затем (возможно после короткой задержки, во время которой дополнительные записи 110 в первую область 402 не запрашиваются) обновляет дескриптор 404 областей, чтобы помечать первую область 402 как "чистую". Однако, запись 110, выполняемая первым устройством 106 хранения данных, прерывается отказом 118 (например, временным отсоединением, программным сбоем или отказом электропитания). В четвертый момент 414 времени первое устройство 106 хранения данных снова становится доступным, и задача очистки 416 первого устройства 106 хранения данных инициируется, чтобы гарантировать исправление записей 110, которые были прерваны отказом 118, и которые, если не исправлены, могут представлять потенциальную катастрофическую несогласованность 122 в наборе 102 хранения (например, расхождение идентичных копий набора 102 хранения, сохраненного в устройстве 106 хранения данных). Однако, вместо сравнения всех наборов 104 данных с соответствующим набором 104 данных второго устройства 106 хранения данных, очистка 416 может использовать дескриптор 404 областей и может очищать лишь области 402, помеченные как "грязные". Таким образом, в четвертый момент 414 времени, поскольку только первая область 402 помечена как "грязная" в дескрипторе 404 областей первого устройства 106 хранения данных, очистка 416 может сравнивать наборы 102 данных первой области 402 с соответствующими наборами 416 данных второго устройства 106 хранения данных и при нахождении несогласованности может копировать набор 104 данных поверх некорректного набора 104 данных в первом устройстве 106 хранения данных.
[0041] Таким образом, технологии, представленные в данном документе, один пример которых изображается в примерном сценарии 400 на фиг. 4, могут предоставлять возможность очистки 416 устройства 106 хранения данных следом за отказом 118. Кроме того, эти технологии выполняют эту очистку 416 преимущественным образом по сравнению с другими технологиями, включающими в себя иллюстрированные на фиг. 3. В качестве первого иллюстративного примера, очистка 416 первого устройства 106 хранения данных ограничивается наборами 104 данных, сохраненными в подмножестве областей 402, где, по меньшей мере, одна запись 110 недавно произошла во время сбоя 118; например, поскольку вторая область 402 не подвергалась записи 110 ни разу, вторая область 402 не включается в очистку 416. В качестве второго иллюстративного преимущества, пометка 406 "грязной" и "чистой" информации для областей 406, содержащих множество областей 402, а также отложенная пометка таких областей 402 как "чистых" следом за записью 110, может значительно уменьшать потерю производительности, вызванную отслеживанием "грязных" областей. Например, оставляя пометку 406 первой области 402 как "грязной" на короткий период следом за первой записью 110, устройства 106 хранения данных имеют возможность пропускать пометку 406 области 402 как "грязной", чтобы помечать ее как "грязную" снова лишь при приеме второй записи 110 в другое местоположение 106 в той же области 402, тем самым сокращая операции доступа каждого устройства 106 хранения данных к дескриптору 404 областей с трех до одной. Это повышение эффективности может не быть достигнуто, либо если информация о "грязной" области отслеживалась для каждого местоположения 108, либо если устройства 106 хранения данных немедленно обновляли дескриптор 404 областей следом за каждой записью 110 (например, как иллюстрировано в первом примерном методе 300 на фиг. 3). В качестве третьего иллюстративного преимущества, хранение дескриптора 404 областей для областей 406, в противоположность единственным местоположениям 108, значительно не уменьшает доступный объем устройств 106 хранения данных (по сравнению с первым примерным методом 300 на фиг. 3, в котором 50% общего объема устройства 106 хранения данных используется, чтобы отслеживать "грязное" или "чистое" состояние доступного пространства). В качестве четвертого иллюстративного преимущества, отслеживание "грязных" областей выполняется без дополнительных аппаратных средств и, таким образом, уменьшает стоимость, сложность, потребление энергии и возможности неудачи отслеживающих технологий по сравнению со вторым примерным методом 304 на фиг. 3. Эти и другие примерные преимущества могут быть достижимы посредством отслеживания информации о "грязной" области для устройств 106 хранения данных, предоставляющих набор 102 хранения, в соответствии с технологиями, представленными в данном документе.
[0042] C. Примерные варианты осуществления
[0043] Фиг. 5 представляет иллюстрацию первого примерного варианта осуществления этих технологий, изображенных как примерный способ 500 регистрации незаконченных операций записи в набор 104 хранения. Примерный способ 500 может быть реализован, например, как набор инструкций, сохраненных в компоненте памяти устройства (например, запоминающей схеме, пластине накопителя на жестком диске, компоненте твердотельной памяти или магнитном или оптическом диске), которые, когда выполняются процессором устройства, инструктируют устройству выполнять технологии, описанные в данном документе. Примерный способ 500 начинается с этапа 502 и подразумевает выполнение 504 инструкций в процессоре. В частности, инструкции конфигурируются, чтобы, на по меньшей мере одном устройстве 106 хранения данных формировать 506 дескриптор 404 областей, разделяющий набор 102 хранения, сохраненный на устройстве 106 хранения данных, на по меньшей мере две области 402 согласно размеру области. Инструкции также конфигурируются, чтобы, при приеме 508 набора 104 данных, который должен быть сохранен в местоположении 108 в наборе 102 хранения, идентифицировать 510 область 402 в наборе 102 хранения, содержащую местоположение 108 набора 102 данных; помечать 512 область 402 как "грязную" в дескрипторе 404 областей; и инициировать 514 сохранение набора 104 данных в местоположении 108 в наборе 102 хранения. Инструкции также конфигурируются, чтобы, после сохранения набора 104 данных в местоположении 108 в наборе 102 хранения, помечать 516 область 402 как "чистую" в дескрипторе 404 областей. Таким образом, инструкции выполняют регистрацию незавершенности записей 110 в наборе 102 хранения согласно технологиям, представленным в данном документе, и примерный способ 500, таким образом, заканчивается на этапе 518.
[0044] Фиг. 6 представляет иллюстрацию второго примерного варианта осуществления этих технологий, изображенного как примерный способ 600 очистки 416 набора 102 хранения, сохраненного, по меньшей мере, посредством одного устройства 106 хранения данных, доступного компьютеру, имеющему процессор. Примерный способ 600 может быть реализован, например, как набор инструкций, сохраненных в компоненте памяти устройства (например, запоминающей схеме, пластине накопителя на жестком диске, компоненте твердотельной памяти или магнитном или оптическом диске), которые, когда выполняются процессором устройства, инструктируют устройству выполнять технологии, описанные в данном документе. Примерный способ 600 начинается с этапа 602 и подразумевает выполнение 604 инструкций в процессоре. В частности, инструкции конфигурируются, чтобы, из по меньшей мере одного устройства 106 хранения данных извлекать 606 дескриптор 404 областей, разделяющий набор 102 хранения, сохраненный в устройстве 106 хранения данных, на по меньшей мере две области 402 согласно размеру области. Инструкции также конфигурируются, чтобы, для соответствующих 608 областей 402, помеченных как "грязные" в дескрипторе 404 областей, инициировать 610 очистку 416 наборов 104 данных в области 402; и после завершения очистки наборов 104 данных в области 402 помечать 612 область 402 как "чистую" в дескрипторе 404 областей. Таким образом, инструкции выполняют очистку набора 102 хранения, исправляя несогласованности 122, вызванные записями 110, прерванными отказом, согласно технологиям, представленным в данном документе, и примерный способ 600, таким образом, заканчивается на этапе 518.
[0045] Фиг. 7 представляет третий примерный вариант осуществления этих технологий, иллюстрированный как машиночитаемый носитель 700, содержащий исполняемые процессором инструкции 702, сконфигурированные, чтобы применять технологии, представленные в данном документе. Такие машиночитаемые носители могут включать в себя, например, машиночитаемые носители хранения информации, подразумевающие материальное устройство, такое как полупроводниковая память (например, технологии полупроводникового статического оперативного запоминающего устройства (SRAM), динамического оперативного запоминающего устройства (DRAM) и/или синхронного динамического оперативного запоминающего устройства (SDRAM)), пластина накопителя на жестком диске, устройство флэш-памяти или магнитный или оптический диск (такой как CD-R, DVD-R или гибкий диск), кодирующее набор машиночитаемых инструкций, которые, когда выполняются процессором 712 устройства 710, инструктируют устройству 710 реализовывать технологии, описанные в данном документе. Такие машиночитаемые носители могут также включать в себя (как класс технологий, которые отличаются от машиночитаемых носителей хранения) различные типы среды передачи данных, такие как сигнал, который может распространяться посредством различных физических явлений (например, электромагнитный сигнал, сигнал звуковой волны или оптический сигнал) и в различных проводных сценариях (например, через Ethernet или волоконно-оптический кабель) и/или беспроводных сценариях (например, беспроводная локальная вычислительная сеть (WLAN), такая как WiFi, персональная вычислительная сеть (PAN), такая как Bluetooth, или сотовая или радио сеть), и которые кодируют набор машиночитаемых инструкций, которые, когда выполняются процессором устройства, инструктируют устройству реализовывать технологии, представленные в данном документе. В одном таком варианте осуществления исполняемые процессором инструкции 702 могут быть сконфигурированы, чтобы выполнять способ регистрации незавершенности операций 110 записи в устройства 106 хранения данных, содержащие набор 102 хранения, такой как примерный способ 500 на фиг. 5. В другом таком варианте осуществления исполняемые процессором инструкции 702 могут быть сконфигурированы, чтобы выполнять способ очистки устройств 106 хранения данных, содержащих набор 102 хранения, с помощью дескриптора 404 области, сохраненного, на по меньшей мере одном из устройств 106 хранения данных, такой как примерный способ 600 на фиг. 6. Многие такие машиночитаемые носители могут быть придуманы обычными специалистами в данной области техники и могут быть сконфигурированы, чтобы работать в соответствии с технологиями, представленными в данном документе.
[0046] D. Варианты
[0047] Технологии, поясненные в данном документе, могут быть разработаны с вариантами во многих аспектах, и некоторые варианты могут представлять дополнительные преимущества и/или уменьшать недостатки относительно других вариантов этих и других технологий.
Кроме того, некоторые варианты могут быть реализованы в комбинации, и некоторые комбинации могут демонстрировать дополнительные преимущества и/или уменьшенные недостатки через синергетическое взаимодействие. Варианты могут быть включены в различные варианты осуществления (например, примерный способ 500 по фиг. 5 и примерный способ 600 по фиг. 6), чтобы предоставлять отдельные и/или синергетические преимущества таким вариантам осуществления.
[0048] D1. Сценарии
[0049] Первый аспект, который может изменяться между вариантами осуществления этих технологий, относится к сценариям, в которых такие технологии могут быть использованы. В качестве первого варианта этого первого аспекта, эти технологии могут быть использованы в связи с множеством типов наборов 102 хранения, содержащими различные типы наборов 104 данных, включающими в себя бинарные системы хранения, хранящие различные типы бинарных объектов; файловые системы, хранящие файлы; мультимедийные библиотеки, хранящие мультимедийные объекты; объектные системы, хранящие множество типов объектов; базы данных, хранящие записи; и системы электронной почты, хранящие сообщения электронной почты. В качестве второго варианта этого первого аспекта, эти технологии могут быть использованы с множеством типов устройств 106 хранения данных, включающих в себя накопители на жестких дисках, твердотельные устройства хранения данных, энергонезависимые схемы памяти, ленточные устройства хранения данных и магнитные и оптические диски. Такие устройства 106 хранения данных могут также быть непосредственно соединены с устройством 710 (таким как компьютер), реализующим эти технологии; могут быть доступны через проводную или беспроводную локальную вычислительную сеть (например, 802.11 WiFi-сеть или специальное соединение, или инфракрасное соединение); и/или могут быть доступны через проводную или беспроводную глобальную вычислительную сеть (например, сотовую сеть или интернет). Кроме того, эти технологии могут быть использованы с двумя или более устройствами 106 хранения данных, работающими независимо (например, устройствами 106 хранения данных, к которым доступ осуществляется независимо через процесс программного обеспечения); работающими со слабым взаимодействием (например, устройства 106 хранения данных, которые работают независимо, но которые информируются и могут связываться с другими устройствами 106 хранения данных, совместно использующими набор 102 хранения); или работающими в тесном взаимодействии (например, контроллер массива недорогих дисковых накопителей с избыточностью (RAID), управляющий несколькими устройствами 106 хранения данных в качестве компонентов системы хранения). В качестве четвертого варианта этого первого аспекта, фрагменты или все эти технологии могут быть реализованы в одном или более компонентах в вычислительном окружении, таком как набор инструкций программного обеспечения, сохраненный в энергозависимой или энергонезависимой памяти компьютера или устройства, имеющего доступ к устройствам 106 хранения данных (например, процесс операционной системы или драйвер аппаратных средств); посредством системы хранения, сконфигурированной, чтобы взаимодействовать с устройствами 106 хранения данных (например, RAID-контроллер); или в соответствующих устройствах 106 хранения данных набора 102 хранения.
[0050] В качестве пятого варианта этого первого аспекта, множество типов технологий очистки могут быть использованы, чтобы очищать наборы 104 данных в области 102. В качестве первого примера, и как иллюстрировано в примерном сценарии 100 на фиг. 1, набор 102 хранения может хранить (на одном и том же устройстве 106 хранения данных и/или на разных устройствах 106 хранения данных) идентичные копии набора 104 данных. В этом варианте, метод зеркальной очистки может быть использован, чтобы очищать копию набора 104 данных посредством сравнения ее с другой копией набора 104 данных, чтобы обнаруживать и исправлять несогласованности 122 (например, для соответствующих наборов 104 данных области 402, соответствующих зеркальному набору данных, сохраненному во второй области 402 набора 102 хранения, синхронизируя набор 104 данных с зеркальным набором данных). В качестве второго примера, и как иллюстрировано в примерном сценарии 200 на фиг. 2, набор 102 хранения может хранить (на одном и том же устройстве 106 хранения данных и/или различных устройствах 106 хранения данных) верификаторы 202 соответствующих наборов 104 данных, такие как контрольная сумма или хэш-код, которые могут сравниваться с содержимым набора 104 данных (и возможно другими наборами 104 данных в наборе 102 хранения), чтобы обнаруживать несогласованности 122. Множество типов верификаторов могут быть включены в такие сценарии. Например, более простые верификаторы 202, такие как бит четности, могут быть эффективно вычислены для набора 104 данных и могут приводить к быстрому обнаружению наличия или отсутствия несогласованности 122 в наборе 104 данных. Альтернативно, могут быть использованы сложные верификаторы 202, которые представляют дополнительные признаки, такие как повышенная надежность, повышенная детализация (например, указывающая фрагмент набора 104 данных, который является несогласованным) и/или возможности исправления ошибок. В этих вариантах, метод очистки верификатора может быть использован, чтобы очищать набор 104 данных, верифицируя верификатор набора 104 данных, чтобы идентифицировать и возможно исправлять несогласованности 122. В качестве третьего примера, набор 104 данных может быть очищен просто посредством изучения содержимого, такого как искажение набора 104 данных, которое не существовало в более раннее время. Когда несогласованности 122 обнаруживаются, технологии восстановления могут быть использованы, чтобы восстанавливать поврежденные данные и/или спасать оставшиеся данные в наборе 104 данных. Обычные специалисты в области техники могут идентифицировать множество типов и вариантов сценариев, в которых технологии, представленные в данном документе, могут быть полезны.
[0051] D2. Структурные варианты дескриптора областей
[0052] Второй аспект, который может изменяться между вариантами осуществления этих технологий, относится к природе дескриптора 404 областей. В качестве первого варианта этого второго аспекта, набор 102 хранения может быть разделен на области 402, идентифицированные в дескрипторе 404 областей множеством способов. В качестве первого примера этого первого варианта, выбор размера области может влиять на различные аспекты этих технологий. Например, следует понимать (особенно, принимая во внимание примерные технологии, иллюстрированные на фиг. 3), что отслеживание "грязного" или "чистого" состояния каждого местоположения 108 в наборе 102 хранения может приводить в результате к значительной потере объема набора 102 хранения - возможно до 50% - и, действительно, может не улучшать значительно продолжительность процесса очистки, поскольку сканирование всего набора 102 хранения, чтобы считывать "грязные" и "чистые" биты для каждого бита, может продолжаться так же долго, как и сканирование всего набора 102 хранения, чтобы обнаруживать несогласованности 122. Следует также понимать, что отслеживание "чистого" или "грязного" состояния для очень большого сегмента набора 102 хранения, такое как сохранение одной "чистой" или "грязной" пометки 406 для каждого тома, каждого раздела или каждого устройства 106 хранения данных, может неприемлемо сокращать очень затянутую природу восстановления, поскольку запись в одно местоположение 206 в большом томе или устройстве 106 хранения данных может вести к очистке 416 всего тома или устройства 106 хранения данных. Принимая во внимание эти соображения, следует понимать, что выбор размера области может значительно влиять на производительность технологий, представленных в данном документе. Однако, может существовать диапазон приемлемых вариантов для размера области, каждый из которых может представлять некоторые компромиссы. Например, выбор более крупного размера области может предоставлять возможность отслеживания "грязных" и "чистых" областей на более грубом уровне детализации, что снижает потребление объема набора 102 хранения для использования отслеживания незаконченных операций 110 записи, а также уменьшает частоту, с которой дескриптор 404 областей обновляется, чтобы помечать области 402 как "чистые" или "грязные", но может также влечь за собой более длительную очистку 416 после отказа 118, поскольку пометка 406 области 402 как "грязной" приводит в результате к очистке 416 более крупной области 402. Наоборот, выбор меньшего размера области может приводить в результате к отслеживанию незаконченных операций 110 записи с более точной степенью детализации, предоставляя возможность сравнительно быстрой очистки 416 после отказа 118 вследствие более ограниченных и точных спецификаций наборов 104 данных, которые должны быть очищены, но может приводить в результате к большему потреблению емкости набора 102 хранения (поскольку дескриптор 404 областей содержит информацию для большего числа областей 402) и/или большему ухудшению производительности в штатной работе набора 102 хранения (поскольку множество операций 110 записи в различные местоположения 108 вероятно должны быть ассоциированы с большим числом областей 402, соответственно охватывающих меньшие по размеру сегменты набора хранения).
[0053] Принимая во внимание эти соображения, множество технологий может быть использовано так, чтобы выбирать или указывать размер(ы) области для областей 402 набора 102 хранения. Например, размер области может быть фиксированно определен для конкретного набора 102 хранения или устройства 106 хранения данных. Различные размеры области могут также быть выбраны для различных устройств 106 хранения данных (например, устройства 106 хранения данных, используемые в обстоятельствах, когда эксплуатационные характеристики не влияют значительно на вычислительное окружение, например, при архивировании, могут использовать меньший размер области, который значительно снижает производительность, но обеспечивает более быструю очистку 416 и восстановление после отказов 118) и/или для различных наборов 102 хранения (например, данные, для которых доступность имеет большое значение, могут отслеживаться с помощью меньшего размера области, который предоставляет более быструю очистку 416 и восстановление после отказов 118) и могут даже использовать различные размеры областей для различных областей 402 в одном и том же наборе 102 хранения. Размер области может также регулироваться на основе характеристик производительности устройств 106 хранения данных и/или наборов 102 хранения и/или на основе пользовательских предпочтений. Альтернативно или дополнительно, пользователю может быть разрешено выбирать размер области; например, вариант осуществления может представлять несколько вариантов размеров области пользователю и может прогнозировать время восстановления, задействованное при восстановлении после отказа 118, принимая во внимание каждый размер области. В качестве другой альтернативы, пользователь может указывать максимальный приемлемый период восстановления, и вариант осуществления этих технологий может выбирать размер области, который вероятно предоставляет возможность восстановления в результате отказов 118 в пределах максимального приемлемого периода восстановления.
[0054] В качестве второго варианта этого второго аспекта, дескриптор 404 областей может быть структурирован различными способами, например, как массив, список указателей, таблица, база данных или битовый массив. Различные структуры данных могут представлять конкретные преимущества. В качестве одного такого примера, для наборов 102 хранения, содержащих адреса, сохраненные с помощью системы адресации, имеющей одно измерение (например, единую, числовую последовательность адресов), дескриптор 404 областей может быть реализован как массив "грязных" областей, содержащий множество элементов массива, которые последовательно соответствуют областям 402 набора 102 хранения, и может помечать область 402 как "грязную" или "чистую", просто посредством осуществления доступа к элементу массива для массива "грязных" областей, тем самым достигая O(1) времени доступа, чтобы помечать 406 какую-либо область 402. Альтернативно, дескриптор 404 области может быть реализован как последовательный журнал, где каждая пометка 406 записывается последовательно следом за ранее совершенной пометкой 406, несмотря на местоположение 108 в наборе 102 хранения набора 104 данных, помеченного таким образом. Дескриптор 404 областей может давать в результате более медленный доступ на чтение к пометке 406 для конкретной области (поскольку идентификация текущей метки 406 для записи журнала влечет за собой сканирование значительного сегмента журнала, и, возможно, всего журнала, для того, чтобы находить запись журнала), но может предоставлять возможность дополнительного эксплуатационного преимущества последовательных записей в дескриптор 402 областей. Дополнительно, семантика содержимого дескриптора 404 областей может содержать информацию различными способами. Например, дескриптор 404 областей может помечать область 402 как "чистую", специально помечая 406 запись или бит, представляющий область 402, или может делать это, исключая из дескриптора 404 областей записи для областей 402, которые были очищены. Эти варианты представляют семантическое различие относительно того, что область 402 либо не имеет запись в дескрипторе 404 областей, которая была помечена как "чистая" (возможно недавно), либо просто не была помечена как "грязная" или "чистая" (например, не подвергалась записи 104 в течение значительного интервала времени).
[0055] В качестве третьего варианта этого второго аспекта, дескриптор 404 областей может указывать местоположения 108 областей 402 в наборе 102 хранения различными способами. Фиг. 8 представляет иллюстрацию примерного сценария 800, характеризующего некоторые различные технологии для указания местоположений 106 в наборе 102 хранения, которые представлены соответствующими областями 402. В этом примерном сценарии 800 устройство 106 хранения данных, такое как накопитель на жестком диске, конфигурируется, чтобы хранить данные, содержащие, по меньшей мере, сегмент набора 102 хранения. Устройство 106 хранения данных конфигурируется, чтобы хранить данные по соответствующим физическим адресам 802, и содержит аппаратные средства, которые транслируют адреса в физические местоположения на носителе хранения (например, пластину, сектор и дорожку). Данные, сохраненные в устройстве 106 хранения данных, могут также быть сохранены согласно стандартизированному формату; например, данные, сохраненные на физическом носителе, могут начинаться с таблицы разделов, указывающей местоположения и описания одного или более разделов 804, каждый из которых содержит один или более логических томов 806 (например, накопители, представленные в операционном окружении компьютера). Набор 102 хранения может храниться в одном или более логических томах 806 и может распределять наборы 104 данных в логический том 806 или между несколькими логическими томами 806. Соответственно, дескриптор 404 областей может идентифицировать области 402 для различных местоположений в наборе 102 хранения различными способами. Например, дескриптор 404 областей может использовать схему физической привязки области, которая идентифицирует физические местоположения соответствующих областей 402 на устройствах 106 хранения данных набора 102 хранения. В качестве первого такого примера, дескриптор 404 областей может быть реализован как первая таблица 808 областей, содержащая записи, которые указывают диапазон физических местоположений 106 на носителе хранения устройства 106 хранения данных, которые представлены каждой областью 402. В качестве второго такого примера, дескриптор 404 областей может быть реализован как вторая таблица 810 областей, содержащая записи, указывающие, для соответствующих областей 402, раздел 804 и смещение в разделе 804, где начинается каждая область 402. Дескриптор 404 областей может также хранить и представлять размер(ы) области для одной или более областей 402 (например, как часть записи об области или отдельный дескриптор набора 102 хранения). В качестве третьего примера, дескриптор 404 областей может быть реализован как битовый массив 812 областей, где разделы 804 могут быть разделены на последовательности областей 402 конкретного размера области, и битовый массив может хранить однобитный индикатор "грязного" или "чистого" состояния области 402. Альтернативно, дескриптор 404 областей может использовать схему логической привязки областей, которая идентифицирует логические местоположения соответствующих областей 402 в логическом размещении данных в наборе 102 хранения. В качестве одного такого примера, дескриптор 404 областей может быть реализован как третья таблица 814 областей, которая идентифицирует логическое местоположение в каждом логическом томе 806, где начинается каждая область 402. Следует понимать, что технологии адресации, которые более близко идентифицируются с помощью физических местоположений 106 на носителе хранения устройства 106 хранения данных, могут подразумевать небольшое вычисление для устройства 106 хранения данных, но больше вычислений для процессов, которые осуществляют доступ к областям 402 логически, и наоборот.
[0056] В качестве четвертого варианта этого второго аспекта, варианты осуществления этих технологий могут быть сконфигурированы, чтобы хранить дескриптор 404 областей в различных местоположениях на устройстве 106 хранения данных. В качестве первого примера этого четвертого варианта, дескриптор 404 областей может храниться в конкретном местоположении на устройстве 404 хранения данных (например, в верхней части раздела 804, хранящего наборы 104 данных набора 102 хранения, или в определенном местоположении за пределами разделов 804, хранящих наборы 104 данных). В качестве второго примера этого четвертого варианта, дескриптор 404 областей может быть сохранен на первом устройстве 106 хранения данных, чтобы отслеживать незаконченные операции 110 записи в области 402 второго устройства 106 хранения данных.
[0057] В качестве пятого варианта этого второго примера, вариант осуществления этих технологий может быть сконфигурирован, чтобы хранить два или более дескрипторов 404 областей для набора 102 хранения. В качестве первого примера этого пятого варианта, две или более идентичных копий дескриптора 404 областей, представляющего одинаковое множество областей 402 набора 102 хранения, могут быть сохранены на одном и том же и/или различных устройствах 106 хранения данных. Хранение идентичных копий может улучшать отказоустойчивость набора 102 хранения (например, в случае неустранимого отказа устройства 106 хранения данных, отказа сегмента устройства 106 хранения данных, хранящего дескриптор 404 областей, или искажения данных в дескрипторе 404 областей, например, возникновение отказа 118 во время выполнения записи 110 в дескриптор 404 областей), восстановление после отказа 118 может выполняться посредством использования другой копии дескриптора 404 областей. Следует понимать, что, в то время как отказ дескриптора 404 областей маловероятно должен быть катастрофическим, поскольку полная очистка 416 набора 102 хранения может выполняться в качестве меры резервирования, тем не менее, может быть полезным хранить вторую копию дескриптора 404 областей для того, чтобы ускорять восстановление, даже если первая копия становится поврежденной или недоступной. Дополнительно, может быть полезным хранить идентичные копии дескриптора 404 областей на множественных устройствах 106 хранения данных и/или в различных областях одного и того же устройства 106 хранения данных (например, в случае повреждения сегмента устройства 106 хранения данных, где сохранена первая копия дескриптора 404 областей, такого как первый физический сектор или первый сегмент файловой системы, вторая, идентичная копия дескриптора 404 областей, которая была сохранена в другом сегменте устройства 106 хранения данных, может иметь возможность восстановления и использования).
[0058] В качестве второго примера этого пятого варианта, множественные копии дескриптора 404 областей для конкретного множества областей 402 могут быть сохранены на одном или более устройствах 106 хранения данных, но вместо того, чтобы быть идентичными все время, дескрипторы 404 областей могут обновляться последовательно, чтобы отражать "чистое" и "грязное" состояние набора 102 хранения в различные моменты времени. Это последовательное обновление может быть полезным, например, если отказ 118 происходит во время обновления копии дескриптора 404 областей, который оставляет дескриптор 404 областей в несогласованном или искаженном состоянии, поскольку другая копия может быть доступна для использования в очистке 416 и восстановлении. В качестве первого сценария для этого второго примера, две копии дескриптора 404 областей могут быть запомнены на устройстве 104 хранения данных и обе представляют одинаковое множество областей 402; но для того, чтобы обновлять дескрипторы 404 областей, первое обновление может происходить посредством перезаписи одной копии дескриптора 404 областей, а последующее обновление может происходить посредством перезаписи другой копии дескриптора 404 областей. Кроме того, когда вариант осуществления этих технологий перезаписывает дескриптор 404 областей, вариант осуществления может также записывать верификатор 202 (например, контрольную сумму) для дескриптора 404 областей и последовательный индикатор (например, увеличивающееся целое число или время перезаписи). Следом за отказом 118 вариант осуществления может исследовать все доступные дескрипторы 404 областей и может выбирать для использования в очистке дескриптор 404 областей, имеющий наивысший последовательный индикатор (например, наивысшее увеличивающееся целое число или самое последнее время записи), который также является действительным согласно его верификатору 202. Следует понимать, что выполнение очистки 416 с помощью слегка устаревшей версии набора областей может не заканчиваться в результате отказом очистки области 402, имеющей несогласованность 118 (например, ложноотрицательную), поскольку запись 110 в область 402 начинается только после того, как пометка 406 области 402 полностью совершена в наборе 102 хранения в форме полностью записанного дескриптора 404 областей, имеющего наивысший последовательный индикатор и действительный верификатор 202, таким образом, отказ 118 во время записи дескриптора 406 областей не заканчивается в результате отказом регистрации незаконченной записи 110. Наоборот, использование устаревшего дескриптора 402 областей может заканчиваться в результате ложноположительно (например, отказ 118 во время записи дескриптора 404 областей может приводить в результате к потере пометки 404 ранее "грязной" области 404 как "чистой", и область 404 может некорректно быть обработана как "грязная" во время восстановления вследствие пометки 406, найденной в устаревшем дескрипторе 404 областей), но эта неточность просто приводит в результате к минимально затянутому восстановлению, подразумевающему очистку 416 области 404, которая была известна как "чистая".
[0059] Альтернативно или дополнительно, две или более копий дескриптора 404 областей для множества областей 402 могут храниться с резервированием на каждом из устройств 106 хранения данных набора 102 хранения. Для того, чтобы обновлять дескриптор 404 областей для набора 102 хранения, вариант осуществления может инициировать перезапись дескриптора 404 областей параллельно на всех устройствах 106 хранения данных. Дополнительно, каждое устройство 106 хранения данных может включать в себя верификатор 202 и последовательный указатель с дескриптором 404 областей в случае, когда отказ 118 возникает, пока одно или более устройств 106 хранения данных обновляет дескриптор 106 областей. Восстановление в результате отказа 118 одного или более устройств 106 хранения данных набора 102 хранения может подразумевать исследование всех доступных дескрипторов 106 областей, чтобы идентифицировать, среди всех копий, которые признаны действительными посредством соответствующих верификаторов 202, копию, имеющую наивысший последовательный указатель. Действительно, может быть полезным конфигурировать набор 102 хранения, чтобы хранить две копии дескриптора 404 областей на каждом устройстве 106 хранения данных; например, в случае, когда отказ 118 возникает во время обновления дескрипторов 404 областей на всех устройствах 106 хранения данных, слегка устаревшая копия на любом устройстве 106 хранения данных может быть пригодна для использования. Альтернативно, может быть аналогично полезным не обновлять все дескрипторы 404 областей в одно и то же время, а выполнять первое обновление дескриптора 404 областей для копий, сохраненных в первом подмножестве устройств 106 хранения данных, и выполнять последующее обновление дескрипторов 404 областей для копий, сохраненных во втором подмножестве устройств 106 хранения данных.
[0060] В качестве третьего примера этого пятого варианта, набор 102 хранения может включать в себя два или более дескрипторов 404 областей, которые соответственно записывают обновления в различные области 402 набора 102 хранения. В качестве первого такого примера, первый дескриптор 404 областей может хранить информацию о "грязной" и "чистой" области для областей 402 набора 102 хранения, сохраненного на первом устройстве 104 хранения данных, и второй дескриптор 404 областей может записывать информацию о "грязной" и "чистой" области для областей 402 набора 102 хранения, сохраненного на втором устройстве 104 хранения данных. В качестве второго такого примера, после разделения набора 102 хранения на области 402, вариант осуществления этих технологий может формировать два или более дескрипторов 404 областей, каждый из которых хранит "грязную" и "чистую" информацию для набора областей, содержащего поднабор областей 402 (независимо от физических местоположений этих областей 402 между устройствами 106 хранения данных набора 102 хранения), которые могут быть сформированы и сохранены на одном или более устройствах 106 хранения данных. Деление областей 402 на наборы областей может быть выбрано, например, принимая во внимание характеристики соответствующих наборов 104 данных (например, первый набор областей может содержать области 402, хранящие более значимые или чувствительные данные, в то время как второй набор областей может содержать области 402, хранящие менее значимые данные). Альтернативно или дополнительно, такое распределение областей по двум или более дескрипторам 404 областей может быть осуществлено явно (например, посредством формирования двух или более независимых дескрипторов 404 областей, каждый из которых представляет назначенный набор областей 402) или неявно (например, посредством распределения пространства хранения для дескриптора 404 областей между двумя или более выделениями пространства, такими как два или более устройств 106 хранения данных). Более того, в некоторых сценариях, может быть желательным отслеживать "грязную" и "чистую" информацию только для поднабора областей 402 набора 102 хранения; например, области 402, содержащие данные, которые являются одноразовыми, такие как кэш или индекс, которые, если искажены, могут быть восстановлены из других данных набора 102 хранения, могут не отслеживаться вообще.
[0061] В качестве шестого варианта второго аспекта, дескриптор(ы) 404 областей может быть сохранен способом, совместимым с технологиями синхронизации набора 102 хранения, чтобы предоставлять различные признаки и преимущества дескрипторам 404 областей, такие как повышенная производительность посредством способности осуществления доступа к любой идентичной копии дескриптора 404 областей на различных устройствах 106 хранения данных, и/или аналогичную отказоустойчивость, что и у набора 102 хранения (например, если набор 102 хранения реализует отказоустойчивую технологию хранения, такую как возможность восстановления после отказа устройств 106 хранения данных в рамках отказоустойчивости устройств хранения данных, дескриптор 404 областей может быть сохранен с помощью того же отказоустойчивого метода хранения). Альтернативно, дескриптор 404 областей может быть сохранен способом, который допускает отдельный набор технологий; например, соответствующие дескрипторы 404 областей могут быть сохранены с верификатором дескриптора областей для дескриптора 404 областей и обновляться, когда область 402 помечается как "чистая" или "грязная" в дескрипторе 404 областей, и могут, следовательно, допускать верификацию целостности дескриптора 404 областей. Обычные специалисты в области техники могут задумывать множество типов и форматов дескрипторов 404 областей, которые могут быть сформированы и использованы согласно технологиям, представленным в данном документе.
[0062] D3. Варианты использования дескриптора областей
[0063] Третий аспект, который может изменяться между вариантами осуществления этих технологий, относится к использованию дескриптора 404 областей, чтобы помечать области 402 набора 102 хранения как "чистые" или "грязные". В качестве первого варианта этого третьего аспекта, использование дескриптора 404 областей может быть предназначено для того, чтобы обеспечивать управление объемом дескриптора 404 областей. В некоторых типах дескрипторов 404 областей объем может не изменяться, когда области 402 помечаются, например, битовый массив 814 области в примерном сценарии 800 на фиг. 8; однако, в других сценариях, пометка 406 областей 402 может влиять на объем дескриптора 404 областей, например, в таблицах областей, изображенных в примерном сценарии 800 на фиг. 8. Например, если дескриптор 404 областей хранит записи для соответствующих областей 402, дескриптор 404 областей может помечать область 402 как "чистую", просто исключая запись. Альтернативно, дескриптор 404 областей может продолжать хранить записи для областей 402, помеченных как "чистые", и может исключать записи для "чистых" областей 402 в более позднее время (например, после того, как определенный период времени прошел без другой операции 110 записи в область 402, или когда объем дескриптора 404 областей исчерпывается). В качестве второго примера этого третьего аспекта, объем дескриптора 404 областей может быть назначен статически (например, дескриптор 404 областей фиксированного размера) или динамически (например, допускающий изменение размера дескриптор 404 областей, которому первоначально выделяется пространство дескриптора областей, но которое может быть расширено при заполнении дескриптора 404 областей записями для областей 402, которые вместе исчерпывают объем дескриптора 404 областей).
[0064] В качестве второго варианта этого третьего аспекта, использование дескриптора 404 областей может быть выбрано, чтобы уменьшать число и частоту операций 110 записи в дескриптор 404 областей. Например, поскольку дескриптор 404 областей хранится на физическом носителе одного или более устройств 106 хранения данных, обновление дескриптора 404 областей может добавлять операцию подвода головки и записи 110 в дескриптор 404 областей в дополнение к операции подвода головки и записи 110 в местоположение 108 набора 104 данных. Таким образом, дескриптор 404 областей быстро и автоматически обновляется, чтобы отражать изменения в "грязной" и "чистой" пометке 406 различных областей 402, включение дескриптора 404 областей может значительно снижать производительность устройства 106 хранения данных и набора 102 хранения, возможно увеличивая затраты на каждую операцию доступа до трех раз. Даже дальнейшее ухудшение производительности может происходить, если вариант осуществления этих технологий осуществляет доступ к дескриптору 404 областей, чтобы считывать "чистое" и "грязное" состояние соответствующих областей 402 (например, для того, чтобы сначала определять, помечена ли область 402 как "чистая" перед пометкой 406 ее как "грязной"). Соответственно, может быть желательно уменьшать осуществление доступов к дескриптору 404 областей.
[0065] В качестве первого примера этого второго варианта, следует понимать, что семантика пометки 406 области 402 как "чистой" и "грязной" является отчасти ассиметричной. Например, может быть неприемлемым откладывать доступ к дескриптору 404 областей, чтобы помечать его как "грязный", поскольку такая задержка может некорректно описывать область 402 как "чистую", если отказ происходит во время откладывания (тем самым представляя ложноотрицательную ситуацию, когда область 402, которая может быть несогласованной вследствие незавершенной записи 110 во время отказа 118, помечается как "чистая", и, следовательно, исключается из очистки 416 во время восстановления после отказа 118). Однако, может быть приемлемым откладывать пометку 406 области 402 как "чистой" после того, как операции записи были завершены. Этот сценарий просто ведет к ложноположительному результату, когда область 402, которая была известна как "чистая" (например, нет незаконченных операций 110 записи) во время отказа 118, включается в очистку 416 во время восстановления - но это сканирование может лишь минимально увеличивать продолжительность очистки 416 (особенно, если размер области является небольшим), и не компрометирует целостность набора 102 хранения. Кроме того, вариант осуществления, который немедленно помечает область 402 как "чистую" после завершения записи 110, может вскоре после этого принимать другой запрос на запись 110 в набор 104 данных в той же области 402 (например, непосредственно следующий набор 104 данных или перезапись одного и того же набора 104 данных) и должен повторно помечать область 402 как "грязную". Обеих пометок 406, каждая подразумевает доступ к дескриптору 404 областей, можно избежать, откладывая пометку 406 областей 402 как "чистых" на короткий период, пока вероятность близкой второй записи 110 в область 402 может быть повышенной.
[0066] Принимая во внимание эти соображения, вариант осуществления этих технологий может быть сконфигурирован, чтобы откладывать пометку 408 областей 402 как "чистых" следом за завершением операций 110 записи в наборы 104 данных, сохраненные в области 402. Реализация отложенного совершения "чистых" пометок 406 в дескриптор 404 областей может быть осуществлена различными способами. В качестве первого такого примера, это откладывание может быть реализовано посредством предоставления буфера записи энергозависимой памяти, который хранит только "чистые" пометки 406 и (периодически или по запросу) совершает все такие операции записи как один пакет. Например, вариант осуществления может быть сконфигурирован, чтобы, по завершении сохранения набора 106 данных в местоположении 108 в области 402, идентифицировать область 402 как "чистую"; и может помечать очищенные области 402 как "чистые" в дескрипторе 404 областей на устройстве 106 хранения данных при приеме запроса на пометку очищенных областей 402 как "чистых" в дескрипторе 404 областей. Этот запрос может содержать, например, специальный запрос посредством процесса (включающего в себя операционную систему устройства), чтобы очищать пометки 406, или может быть запущен посредством различных критериев, таких как критерий продолжительности очистки (например, откладывание пометок 406 областей 402 периодически) или критерий объема дескриптора областей, подразумевающий объем "грязной" области дескриптора 404 областей (например, откладывание пометок 406 областей 402, когда дескриптор 404 областей достигает конкретного объема, такого как назначенное число "чистых" пометок 406 или пороговое значение общего доступного объема дескриптора 404 областей, что может побуждать исключение "чистых" записей 406). В качестве второго такого примера, откладывание может подразумевать задержку "чистой" пометки 406 на короткий интервал и совершение "чистой" пометки 406 в дескрипторе 404 областей лишь после короткого интервала, когда последующие операции 110 записи не запрашиваются в ту же самую область 402. Таким образом, вариант осуществления может, при приеме запроса на запись 110 в местоположение 108 в области 402, сначала определять, помечена ли уже область 402 как "чистая" в дескрипторе 404 областей, и затем помечать область 402 как "грязную" лишь после определения, что область 402 в настоящий момент помечена как "чистая" в дескрипторе 404 областей.
[0067] В качестве третьего примера этого второго варианта, вариант осуществления этих технологий может уменьшать число доступов к дескриптору 404 областей, реализуя представление дескриптора 404 областей в энергозависимой памяти. Например, в дополнение к сохранению пометок 406 соответствующих областей 402 на физическом носителе устройства 106 хранения данных, вариант осуществления этих технологий, работающих на устройстве, может также сохранять пометки 406 в энергозависимой памяти устройства. Использование этого представления может способствовать отложенной записи пакетов "чистых" пометок 406 и определению о том, помечена ли область 406, которая должна быть помечена как "чистая", в настоящее время как "чистая" или "грязная" в дескрипторе 404 областей на носителях. Таким образом, представление может указывать, что в дополнение к областям 402, помеченным как "чистые" в дескрипторе 404 областей на устройстве 106 хранения данных и в представлении в энергозависимой памяти, и областям 402, помеченным как "грязные" в дескрипторе 404 областей на устройстве 106 хранения данных и в представлении в энергозависимой памяти, некоторые области 402 могут быть помечены как "грязные" в дескрипторе 404 областей, но могут быть (временно) помечены как "чистые" в представлении в энергозависимой памяти, и такие "чистые" пометки 406 могут позже быть совершены в дескрипторе 404 областей на носителях.
[0068] Фиг. 9 представляет иллюстрацию примерного сценария 900, характеризующего реализацию и использование представления 902 дескриптора 404 областей в энергозависимой памяти. В этом примерном сценарии 900 два устройства 106 хранения данных конфигурируются, чтобы зеркально отображать набор 102 хранения посредством хранения идентичных копий его наборов 104 данных (например, в виде схемы RAID 1), и для того, чтобы преодолевать проблемы, вызванные несовершенной синхронностью устройств 106 хранения данных, дескриптор 404 областей может быть сформирован на устройстве 902 хранения данных (например, одном или обоих из устройств 106 хранения данных, хранящих набор 102 хранения, и/или другом устройстве 106 хранения данных) и использоваться, чтобы отслеживать незаконченные записи 110 в различные области 402 набора 102 хранения в соответствии с технологиями, представленными в данном документе. Однако, кроме того, в энергозависимой памяти 904, представление 906 дескриптора 404 областей может быть сформировано и может взаимодействовать с дескриптором 404 областей, сохраненном на устройстве 902 хранения данных. Например, в первый момент 908 времени, операции 110 записи могут быть не закончены в наборы 104 данных, распределенные во вторую и четвертую области 402 набора 102 хранения. При приеме запросов на записи 110, вариант осуществления этих технологий может помечать области 402 как "грязные" в дескрипторе 404 областей, сохраненном на устройствах 902 хранения данных, а также в представлении 906 в энергозависимой памяти 904, и может также немедленно помечать области 402 как "грязные". Однако, во второй момент 910 времени, когда записи 110 в четвертой области 402 завершены на обоих устройствах 104 хранения данных, четвертая область 402 может быть помечена как "чистая" в представлении 906 в энергозависимой памяти 904, но может все еще не быть помечена как "чистая" в дескрипторе 404 областей на устройстве 902 хранения данных. Аналогично, в третий момент 912 времени, записи 110 во вторую область 402 завершены на обоих устройствах 104 хранения данных, и вторая область 402 может быть помечена как "чистая" в представлении 906 в энергозависимой памяти 904, но не в дескрипторе 404 областей на устройстве 902 хранения данных до четвертого момента 914 времени, когда обе области 402 могут быть вместе помечены как "чистые" в дескрипторе 404 областей на устройстве 902 хранения данных. Это использование представления 906 в энергозависимой памяти 904 может представлять несколько улучшений производительности (например, предоставление возможности более быстрого определения того, какие области 402 помечены как "чистые" или "грязные", чем определения, которые осуществляют доступ к дескриптору 404 областей, сохраненному на устройстве 902 хранения данных; предоставление возможности пакетного совершения "чистых" пометок 406 в дескрипторе 404 областей, сохраненном на устройстве 902 хранения данных; и уменьшение числа доступов к устройству 902 хранения данных, например, в случае, когда дополнительная запись 110 во вторую область 420 принимается в третий момент 912 времени, область 402 может просто быть помечена как "грязная" в представлении 906 в энергозависимой памяти 904 вместо пометки 406 области 402 как "чистой" и затем как "грязной" снова в дескрипторе 404 областей, сохраненном на устройстве 902 хранения данных).
[0069] Фиг. 10 представляет иллюстрацию примерной диаграммы 1000 состояний, которая может быть использована в варианте осуществления этих технологий, чтобы обновлять дескриптор 404 областей детерминированным образом. Изначально, вариант осуществления этих технологий может быть в "чистом" состоянии 1002, когда "чистая" область 402 помечается как "чистая" в дескрипторе 404 областей до тех пор, пока не будет принят запрос, чтобы выполнять запись 110 в набор 102 хранения в местоположении 108 в области 402, и вариант осуществления этих технологий может переходить в состояние 1004 пометки во время пометки 406 области 402 как "грязной" (например, во время записи в дескриптор 404 областей, сохраненный на устройстве 106 хранения данных). Когда пометка 406 завершена, вариант осуществления может переходить в "грязное" состояние 1004, когда область 402 помечена как "грязная", и дополнительные запросы записи 110 в дополнительные местоположения в области 402 могут инструктировать варианту осуществления оставаться в этом "грязном" состоянии 1004. Когда запрос принимается, чтобы сбрасывать на диск "грязные" области 402, определение выполняется относительно того, готово ли устройство 106 хранения данных для сброса на диск (например, выполняет ли устройство 106 хранения данных в настоящее время синхронизацию набора хранения, или что устройство 106 хранения данных временно недоступно, тогда запросы на сброс на диск "грязных" записей удерживаются до тех пор, пока устройство 106 хранения данных не будет готово). Если устройство 106 хранения данных готово к сбросу на диск, вариант осуществления может входить в состояние сброса 1008 на диск, в то же время совершая операцию сброса данных на диск. Если операция сброса данных на диск завершается без приема другого запроса записи 110 в область 104, вариант осуществления может входить в состояние 1010 помеченное как "чистое", в котором область 102 сброшена на диск (например, записи 110 в область 402 завершены), но область 402 все еще помечена как "грязная" в дескрипторе 404 областей на устройстве 106 хранения данных (но может быть помечена как "чистая" в представлении 906 в энергозависимой памяти в памяти 904 устройства). Наконец, когда принимается запрос, чтобы помечать очищенные области 402 как "чистые" в дескрипторе 404 областей, вариант осуществления может приступать к этой пометке 406 и после завершения этой пометки 406 может возвращаться в "чистое" состояние 1002. Однако, если какие-либо запросы на запись 110 в область 402 принимаются во время состояния 1008 сброса на диск или помечаются как "чистое" состояние 1010, вариант осуществления может возвращаться в "грязное" состояние 1006. Таким образом, вариант осуществления этих технологий может обновлять дескриптор 404 областей хранящим состояние, детерминистическим и сравнительно простым образом. Множество вариантов в обновлении дескриптора 402 областей может быть задумано обычными специалистами в области техники, которые могут быть совместимы с технологиями, представленными в данном документе.
[0070] D4. Варианты восстановления
[0071] Четвертый аспект, который может изменяться между вариантами осуществления этих технологий, относится к способу использования дескриптора 404 областей, чтобы выполнять восстановление (включающее в себя очистку 416) набора 102 хранения в случае отказа 118. В качестве первого варианта, восстановление может подразумевать множество типов технологий очистки 416 набора 102 хранения, чтобы обнаруживать и устранять несогласованности 122 в наборе 102 хранения, возникающие вследствие отказа 118. В качестве первого примера, для набора 104 данных набора 102 хранения, который хранится как две или более копий, которые, как предполагается, должны быть идентичными, очистка 416 может подразумевать сравнение копий, чтобы обнаруживать несогласованности 122 (например, побитовое сравнение фактического содержимого; логическое сравнение содержимого, такое как обнаружение эквивалентности между наборами 104 данных даже в случае видимых структурных различий, таких как две файловые системы, которые содержат одинаковый набор файлов, но представляют файловую систему с различными побитовыми структурами; или сравнение проб наборов 104 данных, такое как сравнение хэш-кода вычисленного по отношению к содержимому каждой копии). В качестве второго примера, очистка 416 может подразумевать верификацию одного или более наборов 104 данных относительно верификатора 202, представляющего наборы 104 данных, такого как контрольная сумма, чтобы верифицировать согласованность содержимого наборов 104 данных. В качестве третьего примера, очистка 416 может просто подразумевать изучение набора 104 данных на предмет ошибок, такое как верификацию того, что бинарное содержимое набора 104 данных стандартизированного типа представляет действительную структуру согласно формальному определению. Дополнительно, очистка 416 может предоставлять возможность простого обнаружения наличия несогласованности 112; может предоставлять возможность идентификации местоположения несогласованности 122 в и/или между, по меньшей мере, одним сравниваемым набором 104 данных (например, не только обнаружение того, что ошибка существует, а что конкретный сегмент набора 104 данных является несогласующимся или не таким, как ожидалось); и/или может предоставлять возможность исправления несогласованности 122 (например, контрольная сумма с исправлением ошибок, такая как код Хемминга, которая предоставляет возможность определения корректных данных, или метод восстановления, применяемый к бинарному объекту, который предоставляет возможность исправления несогласованностей форматирования и может восстанавливать или уменьшать потерю данных). Различные типы очистки 416 могут применяться к различным наборам 104 данных в наборе 102 хранения (например, наборы 102 более значимых данных могут быть сохранены способом, совместимым с более сложными, но утонченными технологиями исправления ошибок, в то время как наборы 102 менее значимых данных могут быть сохранены способом, который является простым и сравнительно несложным). Дополнительно, тип задействованной очистки 416 может зависеть от числа доступных копий соответствующих наборов 104 данных, типа обнаруженного отказа 118, типов устройств 106 хранения данных (например, схемы RAID, реализованной на устройствах) и интересов пользователя (например, пользователю может быть разрешено выбирать между различными вариантами очистки, которые изменяются с точки зрения сложности, надежности и продолжительности очистки 416). В некоторых сценариях могут выполняться несколько типов очистки 416 (например, быстрая очистка 416, подразумевающая быструю идентификацию легко обнаруживаемых несогласованностей 122 и немедленное восстановление доступа к набору 102 данных, за которой следует сложная очистка 416, которая верифицирует целостность набора 102 хранения, чтобы устранять несогласованности 122, которые сложнее исправить и восстановить).
[0072] В качестве второго варианта этого третьего аспекта, восстановление набора 102 хранения может выполняться в конкретном порядке. Например, набор 102 хранения может содержать множество типов наборов 104 данных, сохраненных на множестве устройств хранения данных. В некоторых сценариях собственное восстановление может применять очистку 416 к набору 102 хранения в произвольном порядке, в то время как упорядоченное восстановление может применять очистку 416 сначала к некоторым сегментам набора 102 хранения, которые содержат значимые или более интенсивно используемые наборы 104 данных перед применением очистки 416 (например, данные во время обработки) к другим сегментам набора 102 хранения, которые содержат менее значимые или нечасто запрашиваемые наборы 104 данных (например, архивные данные). В качестве одного такого примера, соответствующие области 402 набора 102 хранения могут быть разделены на один или более наборов областей, каждый из которых имеет дескриптор 404 областей, и восстановление может подразумевать очистку 416 областей 402 первого набора областей, представленного посредством первого дескриптора 404 областей, перед очисткой областей 402 второго набора областей, представленного посредством второго дескриптора 404 областей.
[0073] В качестве третьего варианта этого третьего аспекта, восстановление может содержать, перед инициированием очистки 416 на основе дескриптора 404 областей, верификацию целостности дескриптора 404 областей (например, согласно верификатору 202, сохраненному с дескриптором 404 областей). Если часть дескриптора 404 областей определяется как недоступная для проверки (например, несогласованная или искаженная вследствие отказа 118 во время записи сегмента дескриптора 404 областей), восстановление может подразумевать использование верифицируемых сегментов дескриптора 404 областей и выполнение полной очистки 416 областей 402, представленных в искаженном сегменте дескриптора 404 областей. Альтернативно, восстановление может подразумевать определение местоположения и использование другой копии дескриптора 404 областей (например, идентичной или слегка устаревшей, но верифицируемой копии дескриптора 404 областей, сохраненной где-нибудь в другом месте на том же устройстве 106 хранения данных или на другом устройстве 106 хранения данных набора 102 хранения). Действительно, если два или более дескрипторов 404 областей, каждый, определяются как частично искаженные, восстановление может быть полностью выполнено с помощью правильных сегментов каждого дескриптора 404 областей. Альтернативно, если верифицируемая копия дескриптора 404 областей недоступна, восстановление может инициировать полную очистку набора 102 хранения (например, полное сканирование и повторную синхронизацию всего набора 102 хранения). В этих способах, вариант осуществления этих технологий может быть сконфигурирован, чтобы восстанавливаться из различных типов отказов 118 набора 102 хранения. Обычные специалисты в области техники могут придумать множество способов восстановления в результате отказов 118 набора 102 хранения в соответствии с технологиями, представленными в данном документе.
[0074] E. Вычислительное окружение
[0075] Фиг. 11 представляет иллюстрацию примерного вычислительного окружения в вычислительном устройстве 1102, в котором технологии, описанные в данном документе, могут быть реализованы. Примерные вычислительные устройства включают в себя, но не только, персональные компьютеры, серверные компьютеры, карманные или переносные устройства, мобильные устройства (к примеру, мобильные телефоны, персональные цифровые устройства (PDA), мультимедийные проигрыватели и т.п.), многопроцессорные системы, бытовую электронную аппаратуру, мини-компьютеры, мэйнфреймы, распределенные вычислительные окружения, которые включают в себя любую из вышеуказанных систем или устройств.
[0076] Фиг. 11 иллюстрирует пример системы 1100, содержащей вычислительное устройство 1102, сконфигурированное, чтобы реализовывать один или более вариантов осуществления, предоставленных в данном документе. В одной конфигурации вычислительное устройство 1102 включает в себя, по меньшей мере, один процессор 1106 и, по меньшей мере, один компонент 1108 памяти. В зависимости от точной конфигурации и типа вычислительного устройства, компонент 1108 памяти может быть энергозависимым (таким как RAM, например), энергонезависимым (таким как ROM, флэш-память и т.д., например) или промежуточным или гибридным типом компонента памяти. Эта конфигурация проиллюстрирована на фиг. 11 посредством пунктирной линии 1104.
[0077] В некоторых вариантах осуществления устройство 1102 может включать в себя дополнительные признаки и/или функциональность. Например, устройство 1102 может включать в себя один или более дополнительных компонентов 1110 хранения данных, включающих в себя, но не только, накопитель на жестком диске, твердотельное устройство хранения данных и/или другие съемные или несъемные магнитные или оптические носители. В одном варианте осуществления машиночитаемые и исполняемые процессором инструкции, реализующие один или более вариантов осуществления, предоставленных в данном документе, хранятся в компоненте 1110 хранения данных. Компонент 1110 хранения данных может также хранить другие объекты данных, такие как компоненты операционной системы, исполняемые двоичные файлы, содержащие одно или более приложений, библиотеки программирования (например, прикладные программные интерфейсы (API), мультимедийные объекты и документацию. Машиночитаемые инструкции могут быть загружены в компонент 1108 памяти для исполнения процессором 1106.
[0078] Вычислительное устройство 1102 может также включать в себя один или более компонентов 1116 связи, которые предоставляют возможность вычислительному устройству 1102 связываться с другими устройствами. Один или более компонентов 1116 связи могут содержать (например) модем, карту сетевого интерфейса (NIC), радиочастотный передатчик/приемник, инфракрасный порт и USB-соединение по универсальной последовательной шине (USB). Такие компоненты 1116 связи могут содержать проводное соединение (соединяющее с сетью через физический шнур, кабель или провод) или беспроводное соединение (связывающее беспроводным образом с сетевым устройством, например, посредством видимого света, инфракрасного света или одной или более радиочастот.
[0079] Вычислительное устройство 1102 может включать в себя один или более компонентов 1114 ввода, таких как клавиатура, мышь, перо, устройство голосового ввода, инфракрасные камеры или устройства видеоввода, и/или один или более компонентов 1112 вывода, таких как один или более дисплеев, динамиков и принтеров. Компоненты 1114 ввода и/или компоненты 1112 вывода могут быть соединены с вычислительным устройством 1102 через проводное соединение, беспроводное соединение или любую их комбинацию. В одном варианте осуществления компонент 1114 ввода или компонент 1112 вывода из другого вычислительного устройства может быть использован в качестве компонентов 1114 ввода и/или компонентов 1112 вывода для вычислительного устройства 1102.
[0080] Компоненты вычислительного устройства 1102 могут быть соединены различными внутренними соединениями, такими как шина. Такие внутренние соединения могут включать в себя шину взаимодействия периферийных компонентов (PCI), такую как PCI-Express, универсальную последовательную шину (USB), firewire (IEEE 1394), оптическую шинную структуру и т.п. В другом варианте осуществления компоненты вычислительного устройства 1102 могут быть взаимосвязаны посредством сети. Например, компонент 1108 памяти может состоять из множества физических модулей памяти, расположенных в различных физических местоположениях, взаимосвязанных посредством сети.
[0081] Специалисты в данной области техники должны признавать, что устройства хранения данных, используемые для того, чтобы сохранять машиночитаемые инструкции, могут быть распределены в сети. Например, вычислительное устройство 1120, доступное по сети 1118, может хранить машиночитаемые инструкции, чтобы реализовывать один или более вариантов осуществления, предоставленных в данном документе. Вычислительное устройство 1102 может осуществлять доступ к вычислительному устройству 1120 и загружать часть или все считываемые компьютером инструкции для исполнения. Альтернативно, вычислительное устройство 1102 может загружать фрагменты машиночитаемых инструкций по мере необходимости, или некоторые инструкции могут исполняться в вычислительном устройстве 1102, а некоторые - в вычислительном устройстве 1120.
[0082] F. Использование терминов
[0083] При использовании в данной заявке термины "компонент", "модуль", "система", "интерфейс" и т.п. обычно предназначены, чтобы ссылаться на связанную с компьютером объектную сущность, либо аппаратные средства, сочетание аппаратных средств и программного обеспечения, программное обеспечение, либо программное обеспечение в ходе исполнения. Например, компонент может быть, но не только, процессом, запущенным в процессоре, процессором, объектом, исполняемым файлом, потоком выполнения, программой и/или компьютером. В качестве иллюстрации, как приложение, работающее на контроллере, так и контроллер могут быть компонентом. Один или более компонентов могут храниться внутри процесса и/или потока выполнения, и компонент может быть локализован на компьютере или распределен между двумя и более компьютерами.
[0084] Дополнительно, заявляемый объект патентования может быть реализован в виде способа, устройства, или изделия с использованием стандартных технологий программирования и/или проектирования для производства программного обеспечения, микропрограммного обеспечения, аппаратных средств, или любого их сочетания, чтобы управлять компьютером для реализации раскрытого объекта патентования. Термин "изделие" при использовании в данном документе имеет намерением содержать в себе компьютерную программу, доступную из любого машиночитаемого устройства, носителя или среды. Конечно, специалисты в данной области техники должны признавать, что множество модификаций может быть выполнено в отношении этой конфигурации без отступления от объема и сущности заявленного объекта патентования.
[0085] Различные операции вариантов осуществления предоставляются в данном документе. В одном варианте осуществления, одна или более описанных операций могут составлять машиночитаемые инструкции, сохраненные на одном или более машиночитаемых носителях, которые при выполнении посредством вычислительного устройства, инструктируют вычислительному устройству выполнять описанные операции. Порядок, в котором некоторые или все операции описываются, не должен истолковываться как подразумевающий то, что эти операции обязательно являются зависимыми от порядка. Альтернативное упорядочение должно приниматься во внимание специалистами в данной области техники с учетом преимущества этого описания. Дополнительно, следует понимать, что не все операции обязательно присутствуют в каждом варианте осуществления, предусмотренном в данном документе.
[0086] Хотя объект патентования описан на языке, характерном для структурных признаков и/или технологических этапов, следует понимать, что объект патентования, заданный в прилагаемой формуле изобретения, не обязательно ограничен характерными признаками или действиями, описанными выше. Вместо этого, характерные признаки и этапы, описанные выше, раскрываются как примерные формы реализации формулы изобретения. Кроме того, слово "примерный" используется в данном документе, чтобы означать служащий в качестве примера, экземпляра или иллюстрации. Любой аспект или конструкция, описанные в данном документе как "примерные", необязательно должны быть истолкованы как преимущественные в сравнении с другими аспектами или конструкциями. Наоборот, использование слова "примерный" имеет намерением представлять принципы конкретным образом. При использовании в данной заявке термин "или" имеет намерением означать включающее "или" вместо исключающего "или". Т.е. если не указано иное или не очевидно из контекста, "X использует A или B" имеет намерением означать любую из естественных включающих перестановок. Т.е. если X использует A; X использует B; или X использует и A, и B, то "X использует A или B" удовлетворяется в любом из вышеуказанных случаев. Помимо этого, артикли "a" и "an" при использовании в данной заявке и прилагаемой формуле изобретения, в общем, могут истолковываться так, что они означают "один или более", если иное не указано, или не очевидно из контекста, что направлено на форму единственного числа.
[0087] Также, хотя открытие было показано и описано относительно одной или более реализаций, эквивалентные изменения и модификации придут в голову специалистам в данной области техники на основе прочтения и понимания этой спецификации и присоединенных чертежей. Раскрытие сущности включает в себя все такие модификации и изменения и ограничивается только посредством объема прилагаемой формулы изобретения. В конкретном отношении к различным функциям, выполняемым посредством вышеописанных компонентов (например, элементов, ресурсов и т.д.), термины, используемые для того, чтобы описывать такие компоненты, имеют намерение соответствовать, если не указано иное, любому компоненту, который выполняет указанную функцию описанного компонента (например, который является функционально эквивалентным), даже если не является структурно эквивалентным раскрытой структуре, которая выполняет функцию в проиллюстрированных в данном документе примерных реализациях раскрытия сущности. Помимо этого, хотя конкретный признак изобретения, возможно, был раскрыт относительно только одной из нескольких реализаций, этот признак может быть объединен с одним или более признаков других реализаций, что может быть требуемо и предпочтительно для любого данного или конкретного приложения. Более того, в рамках, в которых термины "включает в себя", "имеющий", "имеет", "с" или их варианты используются либо в подробном описании, либо в формуле изобретения, эти термины должны быть включающими способом, аналогичным термину "содержащий".