как удалить теневые копии windows 10
Команда VSSADMIN – администрирование службы теневого копирования томов в командной строке Windows.
Теневое копирование тома (Volume Shadow Copy) – технология, используемая в операционных системах Windows и позволяющая копировать системные и заблокированные файлы, с которыми в данный момент времени ведется работа. Теневое копирование реализовано с использованием специальной службы VSS ( Теневое копирование ) и системных драйверов для получения снимков томов (Volume Snapshot). Основным назначением теневого копирования является создание системных точек восстановления, архивных образов системы, и архивирования пользовательских данных (История файлов в Windows 8 / Windows 10). Технология теневого копирования применялась еще в ОС Windows XP/Server 2003 и, с некоторыми усовершенствованиями, продолжает использоваться во всех современных ОС семейства Windows.
Утилита VSSADMIN.EXE предназначена для администрирования в командной строке службы теневого копирования томов.
Формат командной строки:
Примеры использования VSSADMIN
Имя поставщика: «Microsoft Software Shadow Copy provider 1.0»
Тип поставщика: Системный
Id поставщика:
Версия: 1.0.0.7
Содержимое для ID набора теневых копий: <11c73725-9bcb-450e-a832-e68bda1a5c03>
Содержит 1 теневых копий на время создания: 12.09.2015 21:22:44
ID теневой копии: <9c53af12-1e15-44f9-85b8-a2c86e92c213>
Исходный том: (C:)\\?\Volume<85006ce9-2b28-11e2-ab99-806e6f6e6963>\
Том теневой копии: \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1
Размещающий компьютер: COMP0
Обслуживающий компьютер: COMP0
Поставщик: «Microsoft Software Shadow Copy provider 1.0»
Тип: ClientAccessibleWriters
Атрибуты: Сохранение, Доступно клиентам, Без автоматического освобождения, Разностная, Восстановлен автоматически
Сопоставление хранилища теневой копии
Для тома: (C:)\\?\Volume<85006ce9-2b28-11e2-ab99-806e6f6e6963>\
Том хранилища теневой копии: (C:)\\?\Volume<85006ce9-2b28-11e2-ab99-806e6f6e6963>\
Использованный объем хранилища теневой копии: 13.953 GB (5%)
Выделенный объем хранилища теневой копии: 14.393 GB (6%)
Максимальный объем хранилища теневой копии: 119.187 GB (50%)
Имя компонента записи: «Task Scheduler Writer»
Id компонента записи:
Id экземпляра компонента записи: <1bddd48e-5052-49db-9b07-b96f96727e6b>
Состояние: [1] Стабильный
Последняя ошибка: Нет ошибок
Имя компонента записи: «VSS Metadata Store Writer»
Id компонента записи: <75dfb225-e2e4-4d39-9ac9-ffaff65ddf06>
Id экземпляра компонента записи: <088e7a7d-09a8-4cc6-a609-ad90e75ddc93>
Состояние: [1] Стабильный
Последняя ошибка: Нет ошибок
Команда удаления теневых копий отсутствует в ОС Windows Vista. В последующих версиях Windows может использоваться в нескольких вариантах:
vssadmin Delete Shadows /All
Delete Shadows /For=ForVolumeSpec [/Oldest] [/Quiet]
Delete Shadows /Shadow=ShadowId [/Quiet]
vssadmin Delete Shadows /Shadow= <9c53af12-1e15-44f9-85b8-a2c86e92c213>— удалить теневую копию с указанным идентификатором.
При выполнении команд удаления теневых копий выполняется удаление соответствующих системных точек восстановления и моментальных снимков томов, используемых для получения предыдущих версий файлов и каталогов.
Команда изменения размера хранилища теневых копий имеет формат:
Resize ShadowStorage /For=ForVolumeSpec /On=OnVolumeSpec /MaxSize=MaxSizeSpec
Изменение размеров хранилища может привести к исчезновению теневых копий. По мере удаления теневых копий размер хранилища будет уменьшаться.
vssadmin Resize ShadowStorage /For=C: /On=D: /MaxSize=900MB
vssadmin Resize ShadowStorage /For=C: /On=D: /MaxSize=UNBOUNDED
vssadmin Resize ShadowStorage /For=C: /On=C: /MaxSize=20%
Теневые копии физически располагаются с системном каталоге «C:\System Volume Information\» ( для диска C: )
Если вы желаете поделиться ссылкой на эту страницу в своей социальной сети, пользуйтесь кнопкой «Поделиться»
Vssadmin — удаление теневых копий
Несмотря на то, что Shadow копии удаляются системой, в соответствии с настройкой службы Volume Shadow Copy Service (VSS), иногда, возникает необходимость удалить их вручную.
Давайте посмотрим, как удалить Shadow копии для определенного диска.
Ниже покажу примеры использования и командную строку
Синтакс
vssadmin delete shadows /for= [/oldest | /all | /shadow= ] [/quiet]
Параметры
Параметр | Описание | /for= | Указывает диск на котором будет удалена Shadow копия |
/oldest | Удаляет только старые копии |
/all | Удаляет все Shadow копии для указанного диска |
/shadow= | Удаляет shadow копию по указанному ShadowID. Чтобы получить идентификаторы всех shadow копий, можно использовать команду vssadmin list shadows Когда набираете идентификатор shadow копии, используйте следующий формат. Каждый Х означает шестнадцатеричный символ. XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX |
/quiet | «Тихий» режим. При выполнении команды никакая информация выводится на экран не будет |
Замечание
Примеры:
Чтобы удалить старые shadow копии с диска С, наберите:
vssadmin Delete Shadows /For=C: /Oldest [/Quiet]
Чтобы удалить shadow копию с конкретным ID, наберите:
vssadmin Delete Shadows /Shadow=ShadowId [/Quiet]
Обратите внимание:
Vssadmin позволяет управлять Shadow копиями из командной строки. Остальные команды можно посмотреть набрав:
vssadmin 1.1 — Volume Shadow Copy Service administrative command-line tool
(C) Copyright 2001-2013 Microsoft Corp.
Add ShadowStorage — Add a new volume shadow copy storage association
Create Shadow — Create a new volume shadow copy
Delete Shadows — Delete volume shadow copies
Delete ShadowStorage — Delete volume shadow copy storage associations
List Providers — List registered volume shadow copy providers
List Shadows — List existing volume shadow copies
List ShadowStorage — List volume shadow copy storage associations
List Volumes — List volumes eligible for shadow copies
List Writers — List subscribed volume shadow copy writers
Resize ShadowStorage — Resize a volume shadow copy storage association
Revert Shadow — Revert a volume to a shadow copy
Query Reverts — Query the progress of in-progress revert operations.
Работает на: Windows Server 2003, Windows Server 2008, Windows Server 2003 R2, Windows Server 2008 R2, Windows Server 2012, Windows 8
VSS для самых маленьких
А, собственно, что с ним за проблема? Вот есть документация, где вполне адекватно и красиво описано, как всё работает. Есть утилита vssadmin, позволяющая вполне годно создавать и удалять снапшоты. Что не так-то, и где сложности?
Но проблема в том, что более лучшая документация, намного правильнее отражающая происходящие процессы, несколько сложна для понимания. Microsoft вообще написал по этой теме какое-то неслыханное количество документов. Но даже когда вам как-то удаётся выстроить в голове работу этого алгоритма, вы сразу сталкиваетесь с тем, что на практике многие вещи работают совершенно не так, как описаны. Или вообще не работают. А что-то не описано совсем, хотя этому мы уже давно не удивляемся. Но не хвататься же сразу за дебагер и дизассемблер, да?
Вот поэтому и захотелось немного поговорить о том, как же на самом деле работает VSS. И да, строго говоря, результатом работы VSS является созданная shadow copy. Но дабы не ломать язык и не мучить вас транслитом, давайте просто писать снапшот.
Какова роль VSS
Не сомневаюсь, что 90% читающих прекрасно понимают, зачем нужны снапшоты, но ради оставшихся 10% потерпите несколько предложений. Или сразу идите в следующий раздел.
Итак, все кто остался, давайте представим, что есть у нас некий диск, на котором находятся файлы, с которыми кто-то работает и как-то их изменяет. Изменения эти накапливаются, а иногда очень хочется иметь возможность взять и вернуться во времени назад. И желательно откатывать изменения не для всего диска, а только для выбранных папок и файлов. Для этого и был придуман механизм теневых копий.
Где найти VSS
Обнаружить следы VSS можно двумя классическими способами: через GUI или в консоли. В зависимости от конкретной версии системы пути могут немного отличаться, но суть будет одинакова. Итак, есть у меня в лабе Windows Server 2019, и если сделать ПКМ на любом диске в проводнике, мы увидим два пункта: Configure Shadow Copies и Restore previous versions.
После того, как вы всё настроите на свой вкус, появляется смысл в пункте Restore previous versions. Чисто технически туда и до этого можно было зайти, однако внутри, скорее всего, будет только гнетущая пустота.
И запоминаем самое важное: это две разные утилиты, существующие в разных контекстах. Теневая копия, сделанная в одной утилите, будет видна другой, однако статус у неё будет неоперабельный.
Вот отличный пример: мы создали снимок в diskshadow и пытаемся удалить его с помощью vssadmin. Сам снимок мы видим, но он не в нашем контексте, поэтому сорян, у нас нет здесь власти.
Технически ничего не мешает одновременно делать снимки с помощью vssadmin и diskshadow. Хотя есть вероятность, что получите сообщение типа Another shadow copy is in progress. Но это так, к слову пришлось. Не надо пытаться одновременно делать несколько снапшотов разными программами.
Как появился VSS
Хорошо, но как избежать подобных приключений? Отличным вариантом будет подождать, пока SQL сервер допишет свою транзакцию, пометит её как завершённую, и потом мы быстренько заберём все появившиеся новые блоки. Отличный вариант, который надо срочно реализовывать! Вот только есть небольшая проблема: до этого мы говорили про одно приложение и один файл, с которым оно работает. Научиться общаться с условным SQL Server много ума не надо, но что делать с остальными миллиардами существующих приложений? А что делать, в конце концов, с самой ОС, у которой внутри огромное количество своих процессов и открытых файлов? Вот примерно с такими проблемами и столкнулись учёные мужи из Microsoft, когда пришли к выводу, что надо реализовать некий общий интерфейс, через который можно будет сразу всем прокричать нечто вроде: “Сейчас мы будем делать снапшот, так что быстренько сворачиваемся и сбрасываем буфера на диск! Приостанавливайте свою кипучую деятельность и приводите данные в консистентный вид!”. Ну а назвать эту штуку они решили, как вы уже догадались, Volume Snapshot Service. Или просто VSS.
Как устроен VSS
Чтобы не прыгать с места в карьер громады страшных терминов и процессов, начнём с высокоуровневого описания. Поэтому ограничимся таким списком компонентов:
VSS Writer. В кириллическом простонародье известен как просто райтер, поэтому так и будем его называть в дальнейшем, вызывая праведный гнев ненавистников англицизмов.
Райтер занимается тем, что выстраивает мостик взаимодействия между VSS подсистемой и конкретным приложением. Поэтому а) в любой системе их будет достаточно много (проверьте у себя с помощью vssadmin list writers) б) райтер всегда пишется поставщиком приложения, ибо кроме него никто не знает, что там и как должно происходить во время создания снапшота.
Соответственно, райтер по своей сути выполняет роль “регулировщика”: сначала он говорит приложению подготовиться к снапшоту, затем даёт отмашку VSS сервису делать снапшот. Или не даёт, если приложение не смогло за установленный промежуток времени подготовить свои файлы.
VSS Provider. Тот самый парень, который занимается созданием и управлением снапшотами. Известен тем, что бывает софтовый или хардовый. Список установленных в системе провайдеров можно посмотреть с помощью команды vssadmin list providers. По дефолту, с системой идет Microsoft Software Shadow Copy provider. Он даже отлично и замечательно работает, но до тех пор, пока вы не подключите к системе брендовую СХД. Хорошие вендоры всегда снабжают свои железки управляющим софтом, в составе которого находится и родной провайдер к этой железяке. Благодаря этому можно уже делать всякие хитрые трюки, которые реализованы в вашем оборудовании, и именно поэтому мы в Veeam так гордимся списком интеграций с железом.
Как в итоге всё выглядит на самом высоком уровне: реквестор стучится в Volume Shadow Copy сервис, тот отдаёт команду райтерам предупредить приложения о надвигающемся снапшоте, райтеры рапортуют об успехе, а сервис отдаёт команду провайдерам делать снапшоты. О результатах докладывается реквестору.
Но что дальше происходит с данными? Если мы действительно используем какое-то приложение для бекапов, которое запустило весь этот процесс, дождалось его завершения и скачало данные в своё хранилище, то снимок можно просто удалить одной командой. Поскольку VSS пропагандирует CoW подход, то речь здесь действительно о банальном удалении нашей аллоцированной зоны, ведь все новые данные сразу пишутся на оригинальный диск. Это называется non-persistent shadow copy, и она не имеет никакого смысла без оригинального диска.
Чтобы пройти этот путь вручную, достаточно открыть консоль и набрать:
Здесь мы видим, что успешно создался снапшот со своим Shadow copy ID, и для удобства ему сразу присвоили алиас VSS_SHADOW_1. Этими данными вполне можно оперировать, если возникает такое желание. Однако не будем уходить в сторону и попробуем прочитать содержимое этого снимка. Для чего подмонтируем его в качестве диска.
И начинаем всё заново, только теперь укажем, что нам нужна персистентная копия, чтобы мы могли использовать её как полноценный диск.
Как мы видим: Attributes: No_Auto_Release Persistent Differential. Поэтому если теперь вы сделаете expose, то снапшот примаунтится как полноценный диск, по которому можно перемещаться и копировать с него файлы. Диск, само собой, виртуальный и состоит из блоков оригинального диска, плюс блоки изменившихся данных, читая которые, мы можем видеть состояние оригинального диска на момент снапшота. Всё просто.
Что тут хочется ещё сказать, а вернее, спросить: если всё так просто, то почему же я говорю, что всё так сложно? Проблема в том, что, отдавая на боевом сервере команду vssadmin create shadow, мы, конечно, создаём какой-то снимок, но как себя будут чувствовать приложения после отката на этот снимок, мы предсказать не можем. Это не шутка: команда create признаёт наличие ошибок при выполнении как вариант нормы. Райтер не вернул вовремя Ок от приложения? Да кому это надо, го делать снапшот, я создал.
Как лечить VSS
И что же делать, если VSS падает, в ивентах ничего нет, а понять, что происходит надо? Тут я могу порекомендовать три хороших статьи:
КВ от Veeam, посвящённое анализу поведения VSS с помощью diskshadow.
Другое KB от Veeam, посвящённое сбору информации с помощью vsstrace из Windows SDK. Но скажу сразу, это уже не для слабых духом.
И видео от моего коллеги, где он наглядно показывает, как работать с информацией из первых двух пунктов =) Рассказывает он действительно хорошо, но с непривычки голова у вас от объёма информации заболит, это я вам обещаю.
Также в гугле можно найти массу толковых советов по поводу приведения VSS в чувства, только рекомендую не бросаться на первый попавшийся случай, а постараться найти наиболее похожий именно на вашу проблему. По коду ошибки, например. Потому что слишком много возможных комбинаций ошибок, приложений и причин их возникновения.
А на сегодня всё. Я и так хотел кратенько, но получилось больше десяти страниц текста. Поэтому самое время закругляться. Если хочется раскрытия какой-то другой темы или углубиться в детали VSS, то обязательно пишите об этом в комментариях.