Windows service volume shadow copy service

Снятие снапшота — именно с этого начинается любой бекап. До тех пор, пока мы не знаем, как сбросить все буфера на диск и привести файлы с данными в консистентное состояние, мы не бекапы делаем, а занимаемся копированием файлов с непредсказуемым содержимым внутри. Понимая важность снапшотов, все вендоры стараются дать нам если не полностью готовую функцию (типа Time Mashine в MacOS), то хотя бы набор ручек, за которые можно подёргать (вроде модуля dm-snap в ядре Linux). 

Но сегодня речь пойдёт про самую распространённую ОС — Microsoft Windows, где эта задача решается с помощью Volume Shadow Copy сервиса, известного в народе под аббревиатурой VSS (Volume Snapshot Service). А нашего внимания он удостоился из-за того, что, несмотря на всю популярность своего материнского корабля, сам он окутан вуалью из тайн и мистических слухов. Давайте уже как-то разберёмся с этой штукой.

А, собственно, что с ним за проблема? Вот есть документация, где вполне адекватно и красиво описано, как всё работает. Есть утилита vssadmin, позволяющая вполне годно создавать и удалять снапшоты. Что не так-то, и где сложности?

Но проблема в том, что более лучшая документация, намного правильнее отражающая происходящие процессы, несколько сложна для понимания. Microsoft вообще написал по этой теме какое-то неслыханное количество документов. Но даже когда вам как-то удаётся выстроить в голове работу этого алгоритма, вы сразу сталкиваетесь с тем, что на практике многие вещи работают совершенно не так, как описаны. Или вообще не работают. А что-то не описано совсем, хотя этому мы уже давно не удивляемся. Но не хвататься же сразу за дебагер и дизассемблер, да?

Хотя упомянутый выше vssadmin как-то вроде и работает, и снапшоты даже делает, и вообще молодец. Но это всё до того момента, пока ты не начинаешь вникать в тонкости, где может выясниться, что репорт об успешно созданном снапшоте — это репорт о чём угодно, только не об успешно созданном снапшоте.

Вот поэтому и захотелось немного поговорить о том, как же на самом деле работает VSS. И да, строго говоря, результатом работы VSS является созданная shadow copy. Но дабы не ломать язык и не мучить вас транслитом, давайте просто писать снапшот.

Какова роль VSS

Не сомневаюсь, что 90% читающих прекрасно понимают, зачем нужны снапшоты, но ради оставшихся 10% потерпите несколько предложений. Или сразу идите в следующий раздел.

Итак, все кто остался, давайте представим, что есть у нас некий диск, на котором находятся файлы, с которыми кто-то работает и как-то их изменяет. Изменения эти накапливаются, а иногда очень хочется иметь возможность взять и вернуться во времени назад. И желательно откатывать изменения не для всего диска, а только для выбранных папок и файлов. Для этого и был придуман механизм теневых копий.

Сами снапшоты ничего не знают про ваши файлы и папки. Они работают на уровень ниже файловой системы — с блочными устройствами и блоками данных. Если придерживаться терминологи Microsoft, то снапшот — это место, именуемое Shadow Storage, куда записываются изменённые блоки данных и откуда их можно извлекать с целью переписать данные на оригинальном диске. Тут можно запомнить для себя два нюанса. Первый — только что сделанный спапшот занимает ровно ноль байт. Это просто пре-алоцированное место, куда файловая система может копировать измененные блоки (или наоборот, новые блоки, но не суть).  И второй — теневая копия суть есть дифференциальный бекап. Все данные, которые вы изменили, не удаляются, а отправляются на хранение в этой зоне.

Где найти VSS

Обнаружить следы VSS можно двумя классическими способами: через GUI или в консоли. В зависимости от конкретной версии системы пути могут немного отличаться, но суть будет одинакова. Итак, есть у меня в лабе Windows Server 2019, и если сделать ПКМ на любом диске в проводнике, мы увидим два пункта: Configure Shadow Copies и Restore previous versions.

Если зайти в мастер настроек, то можно включить создание теневых копий для любого диска, задать расписание, по которому они будут создаваться и, что самое интересное, указать место хранения этих копий. Строго говоря, даже не самих копий, а так называемой diff area — места, куда сбрасываются перезаписанные на оригинальном томе сектора. То есть мы запускаем создание снапшота одного диска, а его данные физически храним на другом. Функция архиполезная и позволяет не просто снижать нагрузку на конкретном диске, но и делать фокусы а-ля снимаем снапшот одной ноды в кластере и цепляем его к другой.

После того, как вы всё настроите на свой вкус, появляется смысл в пункте Restore previous versions. Чисто технически туда и до этого можно было зайти, однако внутри, скорее всего, будет только гнетущая пустота. 

Но всё это баловство с графическим интерфейсом, и как мы знаем, до добра это не доводит, поэтому открываем powershell (или даже cmd, почему нет) — и там у нас имеется два варианта из коробки: vssadmin и diskshadow. Первая утилита есть практически на любой системе, начиная с WinXP/Win2003. Нет её только на Windows 8. По какой-то таинственной причине из “восьмёрки” вырезали инструменты управления теневыми копиями, но потом осознали свою неправоту и вернули всё на место. А вот diskshadow доступен только на серверных вариантах Windows. Это уже более продвинутый вариант vssadmin, позволяющий работать не только в интерактивном режиме, но и выполнять целые скрипты, написанные на понятном этому интерпретатору языке. Да и просто это более адекватный и поддающийся контролю инструмент.

И запоминаем самое важное: это две разные утилиты, существующие в разных контекстах. Теневая копия, сделанная в одной утилите, будет видна другой, однако статус у неё будет неоперабельный.

Вот отличный пример: мы создали снимок в diskshadow и пытаемся удалить его с помощью vssadmin. Сам снимок мы видим, но он не в нашем контексте, поэтому сорян, у нас нет здесь власти.

Вот отличный пример: мы создали снимок в diskshadow и пытаемся удалить его с помощью vssadmin. Сам снимок мы видим, но он не в нашем контексте, поэтому сорян, у нас нет здесь власти.

Технически ничего не мешает одновременно делать снимки с помощью vssadmin и diskshadow. Хотя есть вероятность, что получите сообщение типа Another shadow copy is in progress. Но это так, к слову пришлось. Не надо пытаться одновременно делать несколько снапшотов разными программами.

Как появился VSS

Итак, судя по написанному выше, всё просто: нам надо просто брать появляющиеся блоки и сохранять их куда-то в сторонку, чтобы при необходимости вынимать обратно. Сразу возникает первый вопрос: а что именно надо сохранять в нашем теневом хранилище? Ведь действительно, можно просто писать в него все приходящие новые блоки и сохранять в метаданные, на какое место они (блоки) должны были быть записаны. А можно поступить чуть сложнее и записывать новые блоки сразу на полагающееся им место, а в хранилище отправлять содержимое перезаписываемых блоков. Что лучше и как выбрать? На самом деле право на жизнь имеют оба варианта, и какой выбрать — зависит исключительно от воли вендора. Первый подход (redirect-on-write, RoW, если оперировать грамотными терминами) быстро пишется, но долго читается. Зато если надо откатиться на первоначальное состояние, это делается моментально — мы просто удаляем наше теневое хранилище. Второй подход (copy-on-write, CoW) пишется медленней, читается быстрее и моментально удаляет копии предыдущих состояний. VSS, к слову, придерживается парадигмы CoW, а в снапшотах VMware реализован RoW.

Но на самом деле этот вопрос не самый важный из тех, которые стоит себе задать перед тем, как начать перехватывать появляющиеся блоки и складывать их в сторонке. Главный вопрос — в какой именно момент надо осуществлять перехват?

Давайте рассмотрим хрестоматийную ситуацию с файлом базы данных. (И если у вас уже заскрипел песок на зубах, смело пропускайте следующие два абзаца.) Итак: у нас есть банальная SQL Server база данных в виде mdf файла, и тут к нам прилетает какой-то запрос. SQL, как порядочное приложение, начинает старательно вносить изменения в файл, а мы старательно перехватываем каждый новый блок данных падающих на диск и пишем в нашу теневую копию. Всё хорошо и здорово, но тут выключили свет. Потом свет включили, сервер запустили и мы даже базу восстановили из нашей теневой копии, но тут оказывается, что SQL не запускается. Говорит — база в не консистентном состоянии. Это значит следующее: во время нормальной работы завершение каждой транзакции помечается специальным флагом. Сервер его видит и знает, что всё хорошо. А тут сервер загружается, видит, что из его базы торчит какой-то кусок данных, флага нет и, следовательно, что с этим всем делать — он понятия не имеет. То ли удалить, то ли дописать, то ли ещё что-то. Но у нас тут не угадайка, а всё должно быть однозначно и консистентно. Поэтому он принимает решение выключиться, дабы не поломать базу ещё сильнее.

Хорошо, но как избежать подобных приключений? Отличным вариантом будет подождать, пока SQL сервер допишет свою транзакцию, пометит её как завершённую, и потом мы быстренько заберём все появившиеся новые блоки. Отличный вариант, который надо срочно реализовывать! Вот только есть небольшая проблема: до этого мы говорили про одно приложение и один файл, с которым оно работает. Научиться общаться с условным SQL Server много ума не надо, но что делать с остальными миллиардами существующих приложений? А что делать, в конце концов, с самой ОС, у которой внутри огромное количество своих процессов и открытых файлов? Вот примерно с такими проблемами и столкнулись учёные мужи из Microsoft, когда пришли к выводу, что надо реализовать некий общий интерфейс, через который можно будет сразу всем прокричать нечто вроде: “Сейчас мы будем делать снапшот, так что быстренько сворачиваемся и сбрасываем буфера на диск! Приостанавливайте свою кипучую деятельность и приводите данные в консистентный вид!”. Ну а назвать эту штуку они решили, как вы уже догадались, Volume Snapshot Service. Или просто VSS.

И тут можно воскликнуть — но ведь в Windows 2008 был представлен Kernel Transaction Manager! Это разве не то же самое? Он же как раз занимается тем, что приводит файлы на диске в консистентное состояние. А вот и нет! То есть да, KTM приводит, но отвечает только за дисковые операции, а что там происходит с приложениями — его мало волнует. А ведь многим из этих приложений важна не просто целостность файлов, но и что в них записано. Классический пример — это Exchange и Active Directory. И тут мы подошли к важной теме:

Как устроен VSS

Чтобы не прыгать с места в карьер громады страшных терминов и процессов, начнём с высокоуровневого описания. Поэтому ограничимся таким списком компонентов:

  • VSS Writer. В кириллическом простонародье известен как просто райтер, поэтому так и будем его называть в дальнейшем, вызывая праведный гнев ненавистников англицизмов. 

    Райтер занимается тем, что выстраивает мостик взаимодействия между VSS подсистемой и конкретным приложением. Поэтому а) в любой системе их будет достаточно много (проверьте у себя с помощью vssadmin list writers) б) райтер всегда пишется поставщиком приложения, ибо кроме него никто не знает, что там и как должно происходить во время создания снапшота. 

    Соответственно, райтер по своей сути выполняет роль “регулировщика”: сначала он говорит приложению подготовиться к снапшоту, затем даёт отмашку VSS сервису делать снапшот. Или не даёт, если приложение не смогло за установленный промежуток времени подготовить свои файлы.

    Также хочется отметить, что райтеры — это какие-то невероятно нежные ребята, которые зачастую ломаются без каких-либо внешних признаков. Поэтому если в выводе vssadmin list writers в поле State вы увидите что-то, отличающееся от Stable, это надо чинить, ибо сделать консистентный бекап, увы, не получится.

  • VSS Provider. Тот самый парень, который занимается созданием и управлением снапшотами. Известен тем, что бывает софтовый или хардовый. Список установленных в системе провайдеров можно посмотреть с помощью команды vssadmin list providers. По дефолту, с системой идет Microsoft Software Shadow Copy provider. Он даже отлично и замечательно работает, но до тех пор, пока вы не подключите к системе брендовую СХД. Хорошие вендоры всегда снабжают свои железки управляющим софтом, в составе которого находится и родной провайдер к этой железяке. Благодаря этому можно уже делать всякие хитрые трюки, которые реализованы в вашем оборудовании, и именно поэтому мы в Veeam так гордимся списком интеграций с железом.

  • VSS Requestor. Участник процесса, который инициирует создание VSS снапшота или восстановление данных. Можно сказать, что реквестор — это бекапное приложение, которое общается с райтерами и провайдерами. Может показаться, что его роль незначительна, однако от грамотности реализации реквестора зависит качество получаемого результата. То есть VSS не будет за вас думать, что и в каком виде надо сделать. Чем более чёткие инструкции выдаст реквестор, тем более предсказуемым будет результат.

Как в итоге всё выглядит на самом высоком уровне: реквестор стучится в Volume Shadow Copy сервис, тот отдаёт команду райтерам предупредить приложения о надвигающемся снапшоте, райтеры рапортуют об успехе, а сервис отдаёт команду провайдерам делать снапшоты. О результатах докладывается реквестору.

Но на деле, очевидно, всё несколько сложнее. На первом шаге реквестор проверяет, что вообще есть в наличии и с кем предстоит общаться. Затем после составления списка райтеров он обращается к провайдеру, объясняя, что он хочет заснапшотить и где должен располагаться снапшот. Это называется SnapshotSet. В большинстве случаев он будет располагаться на том же вольюме, что и оригинальный диск. А меньшинство случаев — это те самые хардварные провайдеры, которые поставляются вместе с СХД. Для них нормой считается создавать отдельный вольюм для снапшота, который называется storage snapshot. А в определённых случаях можно так и вообще перемещать снапшот на другое физическое устройство, чтобы выкачивать данные уже оттуда, а не с прода. Без хардварных провайдеров сделать такое не выйдет. 

Следом начинается стадия, именуемая Prepare for backup. На этом этапе мы должны уже не просто изучить метаданные райтеров, а запросить их реальные статусы и приготовиться к самой жаркой поре: все райтеры должы будут отработать один за другим. Причём каждый должен уложиться в отведённое ему время, которое по умолчанию равно 60 секундам. Так решили в Microsoft, забыв уточнить причины. Но есть ещё приложения-чемпионы, например, Exchange. Его авторы посчитали, что 20 секунд более чем достаточно, и остановились на таком лимите. А чем чревато невыполнение этого этапа, который в документации называется OnFreeze? Тем, что райтер вернёт сообщение об ошибке, и снапшот не будет сделан. После чего в интерфейсе Veeam появится одна из каноничных ошибок вроде “VSSControl: Failed to freeze guest, wait timeout». Тут радует одно: в логах VSS всегда будет написано, какой именно райтер завалил задание. А по самим ошибкам уже столько KB написано, что вспоминать страшно. Но если вы вдруг сомневаетесь, то точно вам говорю — написанному в них можно смело верить. И если после всего получается, что у вас слишком медленное хранилище, и за отведённое время не получается сбросить все кэши на диск, ну, значит, так оно и есть. Физику не обманешь, а вот железо надо хоть иногда обновлять.

Но это был пессимистичный вариант (прошу понять меня правильно, но беды с VSS — это очень частная причина обращений в сапорт), а в оптимистичном можно начинать самый важный этап. Как только райтеры рапортуют, что всё, вся деятельность в системе заморожена, а кеши сброшены на диск, у нас есть десять(!!!) секунд на создание снапшота, после чего райтеры будут принудительно разморожены, и всё закрутится вновь. И можно сказать, что на этом процесс бекапа заканчивается, и всё что нужно — это просто импортировать наш снапшот и скачать его куда-то к себе, чтобы сохранить под семью замками. Однако есть одно важное Но — log truncate. Фундаментально это вообще не связанные операции и транкейт зависит только от бекапа логов, но как все мы понимаем — на пользовательском уровне эти вещи связаны в единый процесс. То есть, прежде чем выкачивать снапшот, надо не забыть выдать команду backup log, которая запустит операцию транкейта. И после этого совесть наша чиста.

Но что дальше происходит с данными? Если мы действительно используем какое-то приложение для бекапов, которое запустило весь этот процесс, дождалось его завершения и скачало данные в своё хранилище, то снимок можно просто удалить одной командой. Поскольку VSS пропагандирует CoW подход, то речь здесь действительно о банальном удалении нашей аллоцированной зоны, ведь все новые данные сразу пишутся на оригинальный диск. Это называется non-persistent shadow copy, и она не имеет никакого смысла без оригинального диска.

Чтобы пройти этот путь вручную, достаточно открыть консоль и набрать:

PS C:\Windows\system32> diskshadow
Microsoft DiskShadow version 1.0
Copyright (C) 2013 Microsoft Corporation
On computer:  VEEAM,  17.05.2021 19:18:44

DISKSHADOW> add volume c: # добавляем в задание диск С

DISKSHADOW> create	# создаём снапшот
Alias VSS_SHADOW_1 for shadow ID {a1eef71e-247e-4580-99bc-ee62c42221d6} set as environment variable.
Alias VSS_SHADOW_SET for shadow set ID {cc9fab4d-3e7d-44a5-9a4d-0df11dd7219c} set as environment variable.

Querying all shadow copies with the shadow copy set ID {cc9fab4d-3e7d-44a5-9a4d-0df11dd7219c}

        * Shadow copy ID = {a1eef71e-247e-4580-99bc-ee62c42221d6}               %VSS_SHADOW_1%
                - Shadow copy set: {cc9fab4d-3e7d-44a5-9a4d-0df11dd7219c}       %VSS_SHADOW_SET%
                - Original count of shadow copies = 1
                - Original volume name: \\?\Volume{7fd0c79d-0000-0000-0000-602200000000}\ [C:\]
                - Creation time: 17.05.2021 19:19:45
                - Shadow copy device name: \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy2
                - Originating machine: veeam.university.veeam.local
                - Service machine: veeam.university.veeam.local
                - Not exposed
                - Provider ID: {b5946137-7b9f-4925-af80-51abd60b20d5}
                - Attributes:  Auto_Release Differential

Number of shadow copies listed: 1

Здесь мы видим, что успешно создался снапшот со своим Shadow copy ID, и для удобства ему сразу присвоили алиас VSS_SHADOW_1. Этими данными вполне можно оперировать, если возникает такое желание. Однако не будем уходить в сторону и попробуем прочитать содержимое этого снимка. Для чего подмонтируем его в качестве диска.

DISKSHADOW> expose {a1eef71e-247e-4580-99bc-ee62c42221d6} Z:
The shadow copy is a non-persistent shadow copy. Only persistent shadow copies can be exposed.

Однако на такое, казалось бы, простое и законное желание мы получили не менее законный отлуп, ибо сделали non-persistent снимок, а, значит, единственное, на что он годится — это записать его поверх родного, удалив на нём всю информацию, которая появилась после создания этого снимка. Но такая история нас не устраивает, поэтому стираем всё безжалостно.

DISKSHADOW> delete shadows all # или только нужный ID
Deleting shadow copy {a1eef71e-247e-4580-99bc-ee62c42221d6} on volume \\?\Volume{7fd0c79d-0000-0000-0000-602200000000}\ from provider {b5946137-7b9f-4925-af80-51abd60b20d5} [Attributes: 0x00420000]...

Number of shadow copies deleted: 1

И начинаем всё заново, только теперь укажем, что нам нужна персистентная копия, чтобы мы могли использовать её как полноценный диск.

DISKSHADOW> add volume C:

DISKSHADOW> set context persistent # вот этот момент

DISKSHADOW> create
Alias VSS_SHADOW_1 for shadow ID {346d896b-8722-4c01-bf01-0f38b9abe20a} set as environment variable.
Alias VSS_SHADOW_SET for shadow set ID {785983be-e09d-4d2a-b8b7-a4f722899896} set as environment variable.

Querying all shadow copies with the shadow copy set ID {785983be-e09d-4d2a-b8b7-a4f722899896}

        * Shadow copy ID = {346d896b-8722-4c01-bf01-0f38b9abe20a}               %VSS_SHADOW_1%
                - Shadow copy set: {785983be-e09d-4d2a-b8b7-a4f722899896}       %VSS_SHADOW_SET%
                - Original count of shadow copies = 1
                - Original volume name: \\?\Volume{7fd0c79d-0000-0000-0000-602200000000}\ [C:\]
                - Creation time: 17.05.2021 19:38:45
                - Shadow copy device name: \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy3
                - Originating machine: veeam.university.veeam.local
                - Service machine: veeam.university.veeam.local
                - Not exposed
                - Provider ID: {b5946137-7b9f-4925-af80-51abd60b20d5}
                - Attributes:  No_Auto_Release Persistent Differential

Number of shadow copies listed: 1

Как мы видим: Attributes:  No_Auto_Release Persistent Differential. Поэтому если теперь вы сделаете expose, то снапшот примаунтится как полноценный диск, по которому можно перемещаться и копировать с него файлы. Диск, само собой, виртуальный и состоит из блоков оригинального диска, плюс блоки изменившихся данных, читая которые, мы можем видеть состояние оригинального диска на момент снапшота. Всё просто.

Только учтите, пожалуйста, такой момент, если вдруг решите, что нашли святой грааль: в таком режиме нельзя занимать данными больше 50% места на диске. Один блок свыше — и всё, диск переполнился.

Что тут хочется ещё сказать, а вернее, спросить: если всё так просто, то почему же я говорю, что всё так сложно? Проблема в том, что, отдавая на боевом сервере команду vssadmin create shadow, мы, конечно, создаём какой-то снимок, но как себя будут чувствовать приложения после отката на этот снимок, мы предсказать не можем. Это не шутка: команда create признаёт наличие ошибок при выполнении как вариант нормы. Райтер не вернул вовремя Ок от приложения? Да кому это надо, го делать снапшот, я создал. 

Поэтому когда за дело берётся настоящее бекапное приложение вроде Veeam Backup & Replication, то речь идёт не об одной команде, а о целой россыпи предварительных запросов, в результате которых формируется огромнейшая команда (это не метафора для красного словца, а реальность), в которой учитываются состояния райтеров и приложений на целевой системе, с жестким требованием соответствия всех статусов необходимым. Словом, количество мест, где что-то может пойти не так, вырастает на порядок. Ведь нам главное — не снапшот создать, закрыв глаза на сопутствующие потери, а гарантировать консистентность данных внутри него.

Как лечить VSS

Сразу, не отходя от кассы, открою вам тайну самого лучшего метода лечения большинства проблем с VSS — перезагрузка. Понимаю, что это кощунство и кошмар наяву для всех свидетелей аптайма, но суровая правда жизни такова, то можно сколь угодно долго биться с пациентом, чтобы потом всё починилось само от перезагрузки. Да, именно так. Это тот случай, когда само сломалось и само починилось. 

Другая проблема — это железо. Помните про временные рамки для райтеров? Про десять секунд на снапшот? Для многих это ограничение становится проблемой из-за того, что СХД физически не успевает сделать требуемые действия за отведённое время. Как это лечится? А вот никак. Или покупаем более мощное железо, или ищем пути снижения нагрузки, чтобы операция была проведена за выделенный промежуток времени.

Если посмотрите одно из самых популярных KB1680: VSS Timeout when backing up Exchange VM, то легко обнаружите, что первые три шага для решения всех проблем с VSS — сделайте снапшот вручную и посмотрите чтобы это заняло менее 20 секунд, перезагрузитесь и попробуйте снизить нагрузку. Вот так и живём, да. 

И что же делать, если VSS падает, в ивентах ничего нет, а понять, что происходит надо? Тут я могу порекомендовать три хороших статьи:

  • КВ от Veeam, посвящённое анализу поведения VSS с помощью diskshadow.

  • Другое KB от Veeam, посвящённое сбору информации с помощью vsstrace из Windows SDK. Но скажу сразу, это уже не для слабых духом.

  • И видео от моего коллеги, где он наглядно показывает, как работать с информацией из первых двух пунктов =) Рассказывает он действительно хорошо, но с непривычки голова у вас от объёма информации заболит, это я вам обещаю.

Также в гугле можно найти массу толковых советов по поводу приведения VSS в чувства, только рекомендую не бросаться на первый попавшийся случай, а постараться найти наиболее похожий именно на вашу проблему. По коду ошибки, например. Потому что слишком много возможных комбинаций ошибок, приложений и причин их возникновения.

А на сегодня всё. Я и так хотел кратенько, но получилось больше десяти страниц текста. Поэтому самое время закругляться. Если хочется раскрытия какой-то другой темы или углубиться в детали VSS, то обязательно пишите об этом в комментариях.

Если эта публикация вас вдохновила и вы хотите поддержать автора — не стесняйтесь нажать на кнопку

From Wikipedia, the free encyclopedia

Shadow Copy

Previous Versions in Windows Vista, a part of Windows Explorer that allows persistent shadow copies to be created

Other names
  • Volume Snapshot Service[1]
  • Previous Versions
  • Shadow Copies for Shared Folders8
  • VSS[2]
Developer(s) Microsoft
Operating system Microsoft Windows
Service name VSS[2]

Shadow Copy (also known as Volume Snapshot Service,[1] Volume Shadow Copy Service[2] or VSS[2]) is a technology included in Microsoft Windows that can create backup copies or snapshots of computer files or volumes, even when they are in use. It is implemented as a Windows service called the Volume Shadow Copy service. A software VSS provider service is also included as part of Windows to be used by Windows applications. Shadow Copy technology requires either the Windows NTFS or ReFS filesystems in order to create and store shadow copies. Shadow Copies can be created on local and external (removable or network) volumes by any Windows component that uses this technology, such as when creating a scheduled Windows Backup or automatic System Restore point.

VSS operates at the block level of volumes.

A snapshot is a read-only point-in-time copy of the volume. Snapshots allow the creation of consistent backups of a volume, ensuring that the contents do not change and are not locked while the backup is being made.

The core component of shadow copy is the Volume Shadow Copy service, which initiates and oversees the snapshot creation process. The components that perform all the necessary data transfer are called providers. While Windows comes with a default System Provider, software and hardware vendors can create their own software or hardware providers and register them with Volume Shadow Copy service. Each provider has a maximum of 10 seconds’ time to complete the snapshot generation.[3]

Other components that are involved in the snapshot creation process are writers. The aim of Shadow Copy is to create consistent reliable snapshots. But sometimes, this cannot simply be achieved by completing all pending file change operations. Sometimes, it is necessary to complete a series of inter-related changes to several related files. For example, when a database application transfers a piece of data from one file to another, it needs to delete it from the source file and create it in the destination file. Hence, a snapshot must not be between the first deletion and the subsequent creation, or else it is worthless; it must either be before the deletion or after the creation. Enforcing this semantic consistency is the duty of writers. Each writer is application-specific and has 60 seconds to establish a backup-safe state before providers start snapshot creation. If the Volume Shadow Copy service does not receive acknowledgement of success from the corresponding writers within this time-frame, it fails the operation.[3]

By default, snapshots are temporary; they do not survive a reboot. The ability to create persistent snapshots was added in Windows Server 2003 onward. Windows 8 removed the GUI portion necessary to browse them, but it was restored in later Windows versions. (§ History)

Windows software and services that support VSS include Windows Failover Cluster,[4] Windows Server Backup,[5] Hyper-V,[6] Virtual Server,[7] Active Directory,[8] SQL Server,[9] Exchange Server[10] and SharePoint.[11]

The end result is similar to a versioning file system, allowing any file to be retrieved as it existed at the time any of the snapshots was made. Unlike a true versioning file system, however, users cannot trigger the creation of new versions of an individual file, only the entire volume. As a side-effect, whereas the owner of a file can create new versions in a versioning file system, only a system administrator or a backup operator can create new snapshots (or control when new snapshots are taken), because this requires control of the entire volume rather than an individual file. Also, many versioning file systems (such as the one in VMS) implicitly save a version of files each time they are changed; systems using a snapshotting approach like Windows only capture the state periodically.

This section needs to be updated. Please help update this article to reflect recent events or newly available information. (August 2015)

Windows XP and Server 2003

[edit]

Volume Snapshot Service was first added to Microsoft Windows in Windows XP. It can only create temporary snapshots, used for accessing stable on-disk version of files that are opened for editing (and therefore locked). This version of VSS is used by NTBackup.

The creation of persistent snapshots (which remain available across reboots until specifically deleted) has been added in Windows Server 2003, allowing up to 512 snapshots to exist simultaneously for the same volume. In Windows Server 2003, VSS is used to create incremental periodic snapshots of data of changed files over time. A maximum of 64 snapshots are stored on the server and are accessible to clients over the network. This feature is known as Shadow Copies for Shared Folders and is designed for a client–server model.[12] Its client component is included with Windows XP SP2 or later, and is available for installation on Windows 2000 SP3 or later, as well as Windows XP RTM or SP1.[13]

vssadmin

Developer(s) Microsoft
Stable release

1.1

Operating system Microsoft Windows
Type Command
License Proprietary commercial software
Website docs.microsoft.com/en-us/windows-server/administration/windows-commands/vssadmin

Windows XP[14] and later include a command line utility called vssadmin that can list, create or delete volume shadow copies and list installed shadow copy writers and providers.[15]

Windows Vista, 7 and Server 2008

[edit]

Microsoft updated a number of Windows components to make use of Shadow Copy. Backup and Restore in Windows Vista, Windows Server 2008, Windows 7 and Windows Server 2008 R2 use shadow copies of files in both file-based and sector-by-sector backup. The System Protection component uses VSS when creating and maintaining periodic copies of system and user data on the same local volume (similar to the Shadow Copies for Shared Folders feature in Windows Server); VSS allows such data to be locally accessed by System Restore.

System Restore allows reverting to an entire previous set of shadow copies called a restore point.[16][17]
Prior to Windows Vista, System Restore depended on a file-based filter that watched for changes to files with a certain set of extensions, and then copied files before they were overwritten.[18][19][20] In addition, a part of Windows Explorer called Previous Versions allows restoring individual files or folders locally from restore points as they existed at the time of the snapshot, thus retrieving an earlier version of a file or recovering a file deleted by mistake.

diskshadow

Developer(s) Microsoft
Operating system Microsoft Windows
Type Command
License Proprietary commercial software
Website docs.microsoft.com/en-us/windows-server/administration/windows-commands/diskshadow

Finally, Windows Server 2008 introduces the diskshadow utility which exposes VSS functionality through 20 different commands.[21]

The system creates shadow copies automatically once per day, or when triggered by the backup utility or installer applications which create a restore point.[22][23] The «Previous Versions» feature is available in the Business, Enterprise, and Ultimate editions of Windows Vista[24] and in all Windows 7 editions. The Home Editions of Vista lack the «Previous Versions» feature, even though the Volume Snapshot Service is included and running. Using third-party tools it is still possible to restore previous versions of files on the local volume.[25]
Some of these tools also allow users to schedule snapshots at user-defined intervals, configure the storage used by volume-shadow copies and compare files or directories from different points-in-time using snapshots.[26]
Windows 7 also adds native support through a GUI to configure the storage used by volume-shadow copies.

Windows 8 and Server 2012

[edit]

While supporting persistent shadow copies, Windows 8 lacks the GUI portion necessary to browse them; therefore the ability to browse, search or recover older versions of files via the Previous Versions tab of the Properties dialog of files was removed for local volumes. However, using third party tools (such as ShadowExplorer) it is possible to recover that functionality. The feature is fully available in Windows Server 2012.[27]

Windows 10 restored the Previous Versions tab that was removed in Windows 8; however, in earlier builds it depended upon the File History feature instead of Volume Shadow copy. Current builds now allow restoration from both File History and System Protection (System Restore) points, which use Volume Shadow Copy.[28]

Windows 11 retains the same Previous Versions and File History feature introduced in Windows 10, although it is disabled by default.[29]

Samba on Linux is capable of providing Shadow Copy Service on an LVM-backed storage or with an underlying ZFS or btrfs.[30][31][32]

While the different NTFS versions have a certain degree of both forward and backward compatibility, there are certain issues when mounting newer NTFS volumes containing persistent shadow copies in older versions of Windows. This affects dual-booting, and external portable hard drives. Specifically, the persistent shadow copies created by Windows Vista on an NTFS volume are deleted when Windows XP or Windows Server 2003 mount that NTFS volume. This happens because the older operating system does not understand the newer format of persistent shadow copies.[33] Likewise, System Restore snapshots created by Windows 8 are deleted if they are exposed to a previous version of Windows.[34]

  • List of Microsoft Windows components
  • Snapshot (computer storage)
  • Copy-on-write
  1. ^ a b «Volume Snapshot Service (VSS)». Glossary. Symantec. Archived from the original on 13 May 2016. Retrieved 2 May 2013.
  2. ^ a b c d «Volume Shadow Copy Service Overview». MSDN Library. Microsoft. 5 November 2012. Retrieved 2 May 2013.
  3. ^ a b «How Volume Shadow Copy Service Works». TechNet. Microsoft. 28 March 2003. Retrieved 4 January 2011.
  4. ^ Archiveddocs. «What’s New in Failover Clusters in Windows Server 2008». technet.microsoft.com. Retrieved 18 March 2018.
  5. ^ JasonGerend. «Volume Shadow Copy Service». docs.microsoft.com. Retrieved 11 August 2019.
  6. ^ scooley. «Hyper-V Integration Services». docs.microsoft.com. Retrieved 11 August 2019.
  7. ^ scooley. «Microsoft Virtualization and Virtual Server 2005 R2 SP1». docs.microsoft.com. Retrieved 11 August 2019.
  8. ^ mcleanbyron. «VSS Backup and Restore of the Active Directory — Windows applications». docs.microsoft.com. Retrieved 11 August 2019.
  9. ^ MandiOhlinger. «SQL Server database mirroring, Volume Shadow Copy service and AlwaysOn — BizTalk Server». docs.microsoft.com. Retrieved 11 August 2019.
  10. ^ msdmaguire. «Exchange Server data protection, Exchange disaster recovery, Exchange backup, Exchange VSS Writer, VSS Backup Exchange, Exchange Server data recovery, Exchange data recovery». docs.microsoft.com. Retrieved 11 August 2019.
  11. ^ spdevdocs. «Back up and restore a search service application in SharePoint using VSS». docs.microsoft.com. Retrieved 11 August 2019.
  12. ^ «Shadow Copy Client Download». TechNet. Microsoft. Retrieved 21 October 2014.
  13. ^ Oltean, Adi (17 December 2004). «Tips for deploying Shadow copies [sic] for Shared Folders». Antimail. Microsoft. Retrieved 21 April 2009.
  14. ^ «Windows XP — Volume Shadow Copy Service». MSDN. Microsoft. Retrieved 31 May 2013.
  15. ^ «Vssadmin». Windows Server 2008 and Windows Server 2008 R2 documentations. TechNet Library. Microsoft. 28 September 2007. Windows Server Commands, References, and Tools. Retrieved 27 March 2012.
  16. ^
    Compare:«Information about SPP folder in Windows vista». Microsoft Community. Microsoft. 20 August 2010. Retrieved 22 July 2015. SPP stand for Shared Protection Point and is used by windows to store information on restore point.
  17. ^
    Compare:
    Barreto, Jose (16 September 2009). «Diagnosing Failures in Windows Server Backup – Part 1 (VSS/SPP Errors)». Storage at Microsoft: The official blog of the Windows and Windows Server storage engineering teams. Microsoft Corporation. Retrieved 11 September 2017. […] the origin of the error is in an underlying layer such as Volume Shadow Copy Service (VSS), Shared Protection Point (SPP), or other applications that plug into VSS framework.
  18. ^ Russinovich, Mark E.; Solomon, David A. (2005). Microsoft Windows Internals: Microsoft Windows Server 2003, Windows XP, and Windows 2000 (4 ed.). Redmond, WA: Microsoft Press. pp. 706–711. ISBN 0-7356-1917-4.
  19. ^ «Windows Backup». Windows Vista portal. Microsoft. Archived from the original on 10 May 2007. Retrieved 11 January 2014.
  20. ^ Fok, Christine (September 2007). «A Guide to Windows Vista Backup Technologies». TechNet Magazine. Microsoft. Retrieved 11 January 2014.
  21. ^ «Diskshadow». Windows Server 2008 and Windows Server 2008 R2 documentations. TechNet Library. Microsoft Corporation. 28 September 2007. Windows Server Commands, References, and Tools. Retrieved 27 March 2012.
  22. ^ «Selected Scenarios for Maintaining Data Integrity with Windows Vista». TechNet. Microsoft Corporation.
  23. ^ «A Guide to Windows Vista Backup Technologies». Microsoft.
  24. ^ «Volume Shadow Copy and «Previous Versions» feature in Windows Vista». Microsoft Corporation.
  25. ^
    ShadowExplorer allows restoring lost or altered files
  26. ^
    TimeTraveler adds a timeline to Windows Explorer allowing the user to open, restore or compare files or directories from points-in-time
  27. ^ «Previous versions UI removed for local volumes (Windows)». Retrieved 17 November 2012.
  28. ^ Saluste, Margus. «File History in Windows 8, 8.1 and 10». WinHelp.us. Archived from the original on 25 December 2020. Retrieved 18 March 2018.
  29. ^ Huc, Mauro (8 March 2023). «How to enable Previous Versions to recover files on Windows 11 — Pureinfotech». Pureinfotech • Windows 10 & Windows 11 help for humans. Archived from the original on 27 May 2023. Retrieved 19 July 2023.
  30. ^ «Samba HOWTO Collection, Part III. Advanced Configuration». Retrieved 2 October 2012.
  31. ^ «zfsonlinux/zfs-auto-snapshot». GitHub. Retrieved 18 March 2018.
  32. ^ «[GUIDE] Windows Previous Versions and Samba (Btrfs — Atomic COW — Volume Shadow Copy)». openmediavault.
  33. ^ «How restore points and other recovery features in Windows Vista are affected when you dual-boot with Windows XP». File Cabinet Blog. Microsoft. 14 July 2006. Archived from the original on 18 July 2006. Retrieved 21 March 2007.
  34. ^ «Calling SRSetRestorePoint». MSDN Library. Microsoft. Retrieved 1 February 2015. Snapshots of the boot volume created by System Restore running on Windows 8 may be deleted if the snapshot is subsequently exposed by an earlier version of Windows.
  • Russinovich, Mark E.; Solomon, David A.; Ionescu, Alex (2009). «Storage Management». Windows Internals (5th ed.). Microsoft Press. pp. 688–698. ISBN 978-0-7356-2530-3.
  • «Selected Scenarios for Maintaining Data Integrity with Windows Vista». Microsoft TechNet. Microsoft Corporation. Retrieved 4 January 2011.
  • Russinovich, Mark; Solomon, David (December 2001). «Windows XP: Kernel Improvements Create a More Robust, Powerful, and Scalable OS». TechNet Magazine. Microsoft. Retrieved 2 May 2013.
  • Oltean, Adi (19 September 2006). «A bit of black magic: How to assign drive letters to VSS shadow copies… on Windows XP!». Antimail. Microsoft Corporation. Retrieved 4 January 2011.
  • Oltean, Adi (14 December 2004). «Creating shadow copies from the commandline». MSDN Blogs. Microsoft Corporation. Retrieved 4 January 2011.
  • «Volume Shadow Copy Service (VSS) Express Writers». Microsoft Corporation.

Having just written an article about how to get items back from a volume shadow copy, I thought I should make some notes about how VSS works, how to configure it, and actually get VSS to create you some shadow copies! This is also useful because, on a filer server, it enables users to recover their own accidentally deleted or overwritten files and folders via the Previous Versions feature.

If you’ve never come across VSS before, TechNet has this to say:

Shadow Copies of Shared Folders provides point-in-time copies of files that are located on shared resources, such as a file server. With Shadow Copies of Shared Folders, users can view shared files and folders as they existed at points of time in the past. Accessing previous versions of files, or shadow copies, is useful because users can:

  • Recover files that were accidentally deleted. If you accidentally delete a file, you can open a previous version and copy it to a safe location.
  • Recover from accidentally overwriting a file. If you accidentally overwrite a file, you can recover a previous version of the file.
  • Compare versions of a file while working. You can use previous versions when you want to check what has changed between two versions of a file.

It’s probably something you want, assuming you have a bit of space somewhere to hold them. Note that due to how they work, a shadow copy only uses the amount of space necessary to hold the changes made to the volume. When you view the shadow copy, you’ll see the complete volume as it was when the shadow copy was taken, but behind the scenes the space used by that shadow copy is not that of a complete copy of the volume at that point in time.

You can store your shadow copies on a different volume. This can be a good idea, as otherwise the volume free space can seem to mysteriously vanish. However, the shadow copy volume possibly needs to be the same size or larger than your data volume as it has to hold a copy of all the changed data blocks from the data volume, which depends on the rate of change and how often you create shadow copies. You might also want to read the article Designing a Shadow Copy Strategy, which is old but still relevant.

Configure VSS for a file server

I’m doing this on Windows Server 2008 R2, just because that’s what my test VM is running. This stuff works back as far as Server 2003 though (but of course you’re not still using that in 2016…).

My server has a 40GB D drive for data and I’ve added a 40GB V drive for VSS use. As this ia a VM, I’ve done both of these as thin provisioned disks from VMware.

I’m running all the commands from an administrator command prompt, which vssadmin requires. I’m using Windows ISO files for the data. There is currently no shadow storage configured, and the drives have been freshly formatted:

C:\>vssadmin list shadowstorage
vssadmin 1.1 - Volume Shadow Copy Service administrative command-line tool
(C) Copyright 2001-2005 Microsoft Corp.

No items found that satisfy the query.

C:\>dir d: /a
 Volume in drive D is Data
 Volume Serial Number is 1863-3C01

 Directory of D:\

28/01/2016  12:29              $RECYCLE.BIN
28/01/2016  11:25              System Volume Information
               0 File(s)              0 bytes
               2 Dir(s)  42,851,102,720 bytes free

C:\>dir v: /a
 Volume in drive V is VSS
 Volume Serial Number is 7468-48AD

 Directory of V:\

28/01/2016  12:29              $RECYCLE.BIN
28/01/2016  11:24              System Volume Information
               0 File(s)              0 bytes
               2 Dir(s)  42,851,102,720 bytes free

So now we’ll configure V: to be the shadow storage for D:, and to use the entire V: drive for that purpose:

C:\>vssadmin add shadowstorage /for=d: /on=v: /maxsize=unbounded
vssadmin 1.1 - Volume Shadow Copy Service administrative command-line tool
(C) Copyright 2001-2005 Microsoft Corp.

Successfully added the shadow copy storage association

Now we’ll copy some data onto D:, and then check the space usage on D: and V: again:

C:\>dir D: /a
 Volume in drive D is Data
 Volume Serial Number is 1863-3C01

 Directory of D:\

28/01/2016  12:29              $RECYCLE.BIN
28/01/2016  11:25              System Volume Information
28/02/2011  12:41     3,181,234,176 Windows 7 Enterprise x64 English SP1 (X17-27625).iso
28/02/2011  12:38     2,433,157,120 Windows 7 Enterprise x86 English SP1 (X17-27617).iso
               2 File(s)  5,614,391,296 bytes
               2 Dir(s)  37,236,707,328 bytes free

C:\>dir v: /a
 Volume in drive V is VSS
 Volume Serial Number is 7468-48AD

 Directory of V:\

28/01/2016  12:29              $RECYCLE.BIN
28/01/2016  11:24              System Volume Information
               0 File(s)              0 bytes
               2 Dir(s)  42,851,102,720 bytes free

As expected, there has not been any data used on V: yet.
Now let’s create a shadow copy of D:

C:\>vssadmin create shadow /for=d:
vssadmin 1.1 - Volume Shadow Copy Service administrative command-line tool
(C) Copyright 2001-2005 Microsoft Corp.

Successfully created shadow copy for 'd:\'
    Shadow Copy ID: {bbec09d9-3ed2-40b0-943d-5b459976fb80}
    Shadow Copy Volume Name: \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1

And we can see more detail about the shadow copy:

C:\>vssadmin list shadows
vssadmin 1.1 - Volume Shadow Copy Service administrative command-line tool
(C) Copyright 2001-2005 Microsoft Corp.

Contents of shadow copy set ID: {2d629a37-10e0-4fb4-bf45-e0702de26f50}
   Contained 1 shadow copies at creation time: 28/01/2016 12:40:16
      Shadow Copy ID: {bbec09d9-3ed2-40b0-943d-5b459976fb80}
         Original Volume: (D:)\\?\Volume{cadd2f53-ba6b-11e5-93f2-005056a200aa}\
         Shadow Copy Volume: \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1
         Originating Machine: VSSTEST.rcmtech.co.uk
         Service Machine: VSSTEST.rcmtech.co.uk
         Provider: 'Microsoft Software Shadow Copy provider 1.0'
         Type: ClientAccessible
         Attributes: Persistent, Client-accessible, No auto release, No writers, Differential

Now the space usage on V: is:

C:\>dir V: /a
 Volume in drive V is VSS
 Volume Serial Number is 7468-48AD

 Directory of V:\

28/01/2016  12:29              $RECYCLE.BIN
28/01/2016  12:40              System Volume Information
               0 File(s)              0 bytes
               2 Dir(s)  40,737,103,872 bytes free

So the space has dropped by about 2GB. VSS stores its data inside the System Volume Information folder, which by default only the local SYSTEM account has access to. So that we can see what’s going on, I’ve given myself access to this folder – but you shouldn’t normally mess with it.

C:\>dir "v:\System Volume Information" /a
 Volume in drive V is VSS
 Volume Serial Number is 7468-48AD

 Directory of v:\System Volume Information

28/01/2016  12:40              .
28/01/2016  12:40              ..
28/01/2016  11:24            20,480 tracking.log
28/01/2016  12:40            65,536 {3808876b-c176-4e48-b7ae-04046e6cc752}
28/01/2016  12:40     2,113,929,216 {db3a43f3-c5b1-11e5-88bc-005056a200aa}{3808876b-c176-4e48-b7ae-04046e6cc752}
               3 File(s)  2,114,015,232 bytes
               2 Dir(s)  40,737,103,872 bytes free

Note how the timestamp of the two files with GUIDs as their names matches when the shadow copy was taken. Note however that the GUIDs don’t match those reported via the vssadmin command…!
So let’s add some more files to the data drive. Clearly the free space drops on D:, but there are no changes to V: as we’ve not changed any blocks covered by our shadow copy:

C:\>dir d: /a
 Volume in drive D is Data
 Volume Serial Number is 1863-3C01

 Directory of D:\

28/01/2016  12:29              $RECYCLE.BIN
28/01/2016  12:40              System Volume Information
28/02/2011  12:41     3,181,234,176 Windows 7 Enterprise x64 English SP1 (X17-27625).iso
28/02/2011  12:38     2,433,157,120 Windows 7 Enterprise x86 English SP1 (X17-27617).iso
29/04/2014  10:34     3,234,070,528 Win_Ent_8.1_32BIT_English-Custom.ISO
24/04/2014  14:47     4,274,061,312 Win_Ent_8.1_64BIT_English-Custom.ISO
               4 File(s) 13,122,523,136 bytes
               2 Dir(s)  29,728,509,952 bytes free

C:\>dir v: /a
 Volume in drive V is VSS
 Volume Serial Number is 7468-48AD

 Directory of V:\

28/01/2016  12:29              $RECYCLE.BIN
28/01/2016  12:40              System Volume Information
               0 File(s)              0 bytes
               2 Dir(s)  40,737,103,872 bytes free

Let’s see how that changes if we take another shadow copy:

C:\>vssadmin create shadow /for=d:
vssadmin 1.1 - Volume Shadow Copy Service administrative command-line tool
(C) Copyright 2001-2005 Microsoft Corp.

Successfully created shadow copy for 'd:\'
    Shadow Copy ID: {9f1f3eef-7e0d-4f55-ab72-3ed5ed2871cb}
    Shadow Copy Volume Name: \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy2

C:\>dir v: /a
 Volume in drive V is VSS
 Volume Serial Number is 7468-48AD

 Directory of V:\

28/01/2016  12:29              $RECYCLE.BIN
28/01/2016  12:40              System Volume Information
               0 File(s)              0 bytes
               2 Dir(s)  40,736,202,752 bytes free

No real change there, only a slight drop. What’s happened in the System Volume Information folder?

C:\>dir "v:\System Volume Information" /a
 Volume in drive V is VSS
 Volume Serial Number is 7468-48AD

 Directory of v:\System Volume Information

28/01/2016  12:52              .
28/01/2016  12:52              ..
28/01/2016  11:24            20,480 tracking.log
28/01/2016  12:40            65,536 {3808876b-c176-4e48-b7ae-04046e6cc752}
28/01/2016  12:52           901,120 {db3a43f3-c5b1-11e5-88bc-005056a200aa}{3808876b-c176-4e48-b7ae-04046e6cc752}
28/01/2016  12:52     2,113,929,216 {db3a4401-c5b1-11e5-88bc-005056a200aa}{3808876b-c176-4e48-b7ae-04046e6cc752}
               4 File(s)  2,114,916,352 bytes
               2 Dir(s)  40,736,202,752 bytes free

There’s a new small-ish file created when we took the last shadow copy, and the larger file has also been updated.
Now we’ll see how VSS handles some data drive changes. Let’s delete some of the files from D: and then copy some new ones onto it, and see how the free space on the two drives looks:

C:\>dir d: /a
 Volume in drive D is Data
 Volume Serial Number is 1863-3C01

 Directory of D:\

28/01/2016  12:29              $RECYCLE.BIN
13/08/2009  10:08     2,996,799,488 Server 2008 R2 x64 (X15-59754).iso
02/03/2011  14:41     3,166,720,000 Server 2008 R2 x64 SP1 (X17-22580).iso
28/01/2016  12:40              System Volume Information
29/04/2014  10:34     3,234,070,528 Win_Ent_8.1_32BIT_English-Custom.ISO
24/04/2014  14:47     4,274,061,312 Win_Ent_8.1_64BIT_English-Custom.ISO
               4 File(s) 13,671,651,328 bytes
               2 Dir(s)  29,179,383,808 bytes free

C:\>dir "v:\System Volume Information" /a
 Volume in drive V is VSS
 Volume Serial Number is 7468-48AD

 Directory of v:\System Volume Information

28/01/2016  12:52              .
28/01/2016  12:52              ..
28/01/2016  11:24            20,480 tracking.log
28/01/2016  12:40            65,536 {3808876b-c176-4e48-b7ae-04046e6cc752}
28/01/2016  12:52           901,120 {db3a43f3-c5b1-11e5-88bc-005056a200aa}{3808876b-c176-4e48-b7ae-04046e6cc752}
28/01/2016  12:59     3,523,215,360 {db3a4401-c5b1-11e5-88bc-005056a200aa}{3808876b-c176-4e48-b7ae-04046e6cc752}
               4 File(s)  3,524,202,496 bytes
               2 Dir(s)  39,326,916,608 bytes free

There were no changes when the two Windows 7 ISOs were deleted, but as you can see, the large file in V:\System Volume Information has grown quite a bit after the two new Windows Server 2008 R2 ISOs were added.
Whilst copying the new ISOs, I had Performance Monitor (perfmon) running to monitor disk reads and writes on D:, and disk writes on V:. The activity was interesting. As expected we have plenty of write activity to the data drive:

data disk writes

There’s also quite a bit of read activity on the data disk:

data disk reads

Which corresponds to write activity on the VSS disk:

vss disk writes

So we can actually “see” VSS reading the blocks about to be overwritten on the data drive and writing them onto the VSS drive to preserve them for the shadow copies.

In order to access the data in the shadow copies, you can go via the GUI – just right-click the drive or a folder or file and select Properties – Previous Versions. This also works remotely if the drive or folder is shared.

Alternatively, you can create a symbolic link to the shadow copy.

More about how VSS works

VSS operates at the block level, and uses a “copy on first write” principle to keep the data safe: when the blocks used on the data volume that are included in a shadow copy are about to be overwritten, it copies them to the shadow copy volume to enable the shadow copy of the data volume to remain intact.

Note that if you lose the data drive or the volume shadow copy drive, you will lose access to your shadow copies. Shadow copies are thus not a replacement for a proper backup regime, they instead complement it.

Also, if the data drive goes offline, but comes back online again, the GUI access to previous versions seems to break. The GUI just shows There are no previous versions available. The vssadmin command does still show the shadow copies though. To fix this, restart the Server service (aka lanmanserver).

VSS manages the space usage on the shadow copy volume by removing older shadow copies to make room for new ones as necessary. Note that many backup applications make use of VSS, and thus temporarily create shadow copies. These are then removed once the backup operation is finished, but can cause some/all of “your” shadow copies to be lost due to their temporary space usage. If the shadow copy volume is too small to hold a temporary shadow copy, the backup will fail.

Because VSS monitors changes at the block level (not the file level), disk defragmentation software can cause your shadow copies to be lost. The shadow copy volume watches all the block changes the the defrag has to do and thus might have to remove some/all of your shadow copies to keep track of those changes. Some defrag software, e.g. PerfectDisk, has a VSS compatibility setting to help with this. It is most problematic if your cluster size is less than 16KB, because this is the size that VSS uses internally and is thus unable to tell if the defrag IO is different to normal IO.

Служба теневого копирования томов — Volume Shadow Copy Service (VSS) впервые на платформе Windows появилась целых десять лет назад еще в Windows Server 2003, однако до сих пор далеко не все администраторы Windows используют функционал данной службы. Даже существует мнение, что при наличии грамотной политике резервного копирования использовать теневое копирование тома нецелесообразно. Однако это далеко не всегда так.

Возьмем в качестве примера файловый сервер с множеством каталогов и большим количеством пользователей, бэкап которого выполняется, допустим, ежедневно. Представим ситуацию, что пользователь в начале рабочего дня внес важные изменения в некий сверхкритичный документ, а в течении рабочего дня, случайно его модифицировал или удалил. Восстановить данный документ из резервной копии не получится, т.к. он в нее просто не попал. Настроить традиционный бэкап файлового сервера в течении рабочего дня технически затруднительно (да и сама процедура создания и восстановления из такого бэкапа может занять довольно много времени, усугубляющаяся использованием инкрементального или дифференциального бэкапа). В такой ситуации «спасти» положение может теневое копирование данных с помощью службы Volume Shadow Copy Service.

Эта статья посвящена настройке теневого копирования томов (Volume Shadow Copy) в новой серверной ОС Windows Server 2012.

Рассмотрим основные преимущества службы VSS по сравнению с классическими средствами резервного копирования данных:

  • Высокая скорость создания резервных копий
  • Возможность самостоятельного восстановления файлов пользователями (при наличии прав на запись в каталог)
  • Возможность копирования используемых (заблокированных) пользователями файлов
  • Небольшой размер копий (по информации MS около 30 Мб на 1 Гб данных)

Основные особенности работы службы теневого копирования томов

Что же такое теневая копия? По сути это снапшот (снимок) всей информации, хранящейся на диске. После создания теневой копии служба VSS начинает отслеживать изменение данных на диске. VSS разбивает все данные на блоки по 16Кб каждый, и если данные в таком блоке были изменены, служба записывает в файл теневой копии этот блок целиком. Таким образом получается, что при создании следующей теневой копии данных система не копирует данные целиком, а только лишь блочные изменения. Благодаря этому система теневого копирования позволяет существенно сэкономить место на диске. Теневые копии могут храниться на том же диске, на котором хранятся данные, либо на отдельном (решение для высоконагруженных систем с большой частотой изменения данных). Все файлы теневых копий хранятся в служебном каталоге System Volume Information. Эти файлы можно отличить по имени, все они содержат в имени идентификатор службы VSS — 3808876b-c176-4e48-b7ae-04046e6cc752.

Еще несколько особенностей VSS:

  • По-умолчанию максимальное количество хранимых снапшотов для диска – 64. При превышении этого значения, служба VSS начинает циклическую перезапись теневых копий, удаляя самые ранние снапшоты.
  • Под теневые копии система выделяет 10% емкости раздела, однако это значение можно изменить.
  • Теневое копирование включается для тома целиком, и включить его для отдельной общей папки невозможно.
  • Microsoft не рекомендует создавать снапшоты чаще, чем раз в час (однако, это всего лишь рекомендации).

Настройка теневого копирования сетевого каталога в Windows Server 2012

Попробуем настроить теневое копирование данных общей сетевой папки, расположенной на отдельном диске сервера с ОС Windows Server 2012.

Откройте оснастку «Управление компьютером» («Computer Management»), разверните блок «Служебные программы», щелкните правой кнопкой мыши по элементу Общие папки и выберите Все задачи -> Настроить теневые копии.

Настройка shadow copy в windows server 2012

Затем нужно включить теневое копирование для раздела, на котором хранятся общие сетевые папки. Для этого выберите нужный том и нажмите кнопку «Включить». В этот момент будет создана первая теневая копия раздела (снапшот).

Включить теневое копирование тома на windows server 2012

Далее необходимо задать максимальный размер копий и периодичность (расписание) их создания. Нажмите кнопку Параметры.

Настройка параметров слуюбы volume shadow copy services

В данном примере настроим создание теневых копий по следующей схеме: снапшоты общих папок должны создаваться ежедневно в течении рабочего дня (с 9:00 до 19:00) каждые 10 минут. Вы, естественно, основываясь на особенности бизнес-процессов компании, можете настроить собственное расписание.

Расписание создания теневых копий данных

Если через некоторое время открыть свойства общей папки и перейти на вкладку «Предыдущие версии», то можно увидеть список доступных на данный момент теневых копий.

Далее у пользователя есть три варианта действия: просмотреть содержимое копии (Открыть), скопировать данные из копии в другое место (Копировать) или восстановить данные с перезаписью (Восстановить)

Скопировать данные из резервной теневой копии

При попытке восстановить содержимое копии на момент снапшота появится соответствующее предупреждение.

VSS — отличное средство, позволяющее пользователям в течении дня оперативно и в удобной форме восстановить удаленный файл или откатиться к предыдущей версии документа. Нужно не забывать, что теневое копирование не отменяет необходимость выполнения классического резервного копирования данных, позволяющего восстановить данные даже в случае аппаратного сбоя.

Отметим также, что функция теневого копирования в Windows 8 была заменена на функцию File History

Информационное сообщение!

Ошибка ввода капчи. Пожалуйста, попробуйте ввести заново.

OK

* * *

Служба теневого копирования томов | Volume Shadow Copy Service — это встроенный в операционную систему Microsoft Windows сервис, предназначенный для создания моментальных снимков (Snapshots) логических дисков (разделов/томов) в теневом (скрытом от пользователя) режиме на блочном уровне.
Теневая копия включает в себя изменения блоков данных файловой системы NTFS с момента последнего копирования. Позволяет восстановить диск, структуру каталога файловой системы, а так же отдельные файлы, папки.

Применение/использование теневых копий:

  • восстановления состояние системы на момент времени, включая файлы, приложения и базы данных
  • клонирование / синхронизация / репликация диска

Преимущества теневой копии:

  • Быстро, с минимальным воздействием на работу системы
  • Без остановки работы с файлами, приложениями и базами данных (горячее резервное копирование)
  • Обеспечивает консистентность и согласованность данных
  • Занимает гораздо меньше исходного объема данных на диске
  • Не ограниченное количество создаваемых копий и срок хранения (условно)

Недостатки теневой копии:

  • Не предназначено для копирования отдельных файлов или папок (file-leval), только весь том
  • Не является полноценной резервной копией, не поможет в случаи выхода диска из строя

Volume Shadow Copy Service применяется в большинстве автономных программах для домашнего использования и корпоративных системах резервного копирования для создания образа диска в операционной системе MS Windows.
Стандартными компонентами, входящими в службу теневого копирования являются: инициатор запроса, модуль записи и поставщики моментальных снимков (системный / программный / аппаратный).

Служба теневого копирования томов | Volume Shadow Copy Service

Взаимодействие сторонних систем резервного копирования со службой VSS осуществляется с помощью собственного инициатора запроса. Он обращается от имени программы резервного копирования к службе теневого копирования, которая в свою очередь координирует весь процесс создания моментального снимка (взаимодействие между модулем записи и поставщиком моментальных снимков, сбор мета данных, приостановка операций ввода/вывода, заморозка файловой системы).

Технологии резервного копирования

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Как подключить ноутбук к телевизору через кабель hdmi со звуком windows 11
  • Windows vista error sound
  • Как обновить windows 10 через powershell
  • Сбиваются значки на рабочем столе windows 10 после перезагрузки
  • Как изменить панель задач в windows 10 приложение