Открыть сервис

Volume Shadow Copy Service

Volume Shadow Copy Service (VSS, Служба теневого копирования томов) — это технология, входящая в состав операционных систем семейства Microsoft Windows, которая позволяет создавать резервные копии (снимки) данных на диске или томе, даже если эти данные в момент копирования используются приложениями или самой операционной системой. VSS обеспечивает согласованность данных, приостанавливая операции ввода-вывода (I/O) на время, необходимое для создания «мгновенного снимка» (snapshot) состояния тома.

История

Технология VSS была впервые представлена в Windows XP и Windows Server 2003 как часть инфраструктуры резервного копирования и восстановления. До её появления создание резервных копий открытых файлов требовало либо остановки соответствующих приложений, либо использования специализированных сторонних решений, часто работавших на уровне драйверов файловой системы. В Windows Vista и Windows Server 2008 VSS была интегрирована в функцию «Предыдущие версии файлов» (Previous Versions), позволяющую пользователям восстанавливать более старые версии документов. В последующих версиях Windows (7, 8, 10, 11 и соответствующих серверных редакциях) VSS остаётся ключевым компонентом для системных точек восстановления, резервного копирования (встроенная утилита «Архивация и восстановление») и работы сторонних программ для создания образов дисков (например, Acronis True Image, Macrium Reflect).

Архитектура и принцип работы

VSS состоит из нескольких взаимодействующих компонентов, работающих в пользовательском режиме (user mode) и режиме ядра (kernel mode).

Основные компоненты

  1. Запросчик (Requestor): Приложение, которое инициирует создание теневой копии. Обычно это программа резервного копирования (например, ntbackup, wbadmin), системный планировщик или стороннее ПО. Запросчик отправляет команду координатору VSS.
  2. Координатор (Coordinator): Системная служба VSSVC.exe (Volume Shadow Copy Service). Управляет всем процессом создания теневой копии: координирует работу запросчика, поставщиков и писателей, управляет состоянием томов.
  3. Поставщик (Provider): Компонент, который непосредственно создаёт и поддерживает теневую копию. Существует три типа поставщиков:
  • Системный поставщик (System Provider): Встроенный в Windows. Использует механизм копирования при записи (copy-on-write) на уровне файловой системы NTFS.
  • Программный поставщик (Software Provider): Реализуется сторонним ПО, часто для создания снимков на уровне логических томов (LVM) или для работы с не-NTFS файловыми системами.
  • Аппаратный поставщик (Hardware Provider): Работает с аппаратными RAID-контроллерами или системами хранения данных (SAN), которые имеют собственную функцию создания снимков (snapshot).
  1. Писатель (Writer): Специализированный компонент приложения или службы, который участвует в процессе создания теневой копии. Писатель уведомляет координатора о своих данных, приостанавливает запись на диск (flushes buffers) и гарантирует, что его данные находятся в согласованном состоянии. Примеры писателей: Microsoft Exchange Writer, SQL Server Writer, системные писатели (System Writer, Registry Writer).

Процесс создания теневой копии

  1. Инициализация: Запросчик вызывает координатора для начала создания теневой копии тома (или томов).
  2. Уведомление писателей: Координатор уведомляет всех зарегистрированных писателей о предстоящем снимке.
  3. Подготовка: Писатели завершают все текущие транзакции, очищают свои буферы и приводят данные в согласованное состояние. После этого они сообщают координатору о готовности.
  4. Приостановка I/O: Координатор приказывает файловой системе (обычно NTFS) заморозить все операции ввода-вывода на томе. Это состояние длится очень короткое время (обычно до 10 секунд).
  5. Создание снимка: Поставщик создаёт теневую копию. В случае системного поставщика это означает, что все блоки данных на томе помечаются как «только для чтения», и все последующие изменения записываются в отдельную область (diff area). Создаётся точка во времени, с которой можно читать данные.
  6. Возобновление I/O: Координатор размораживает I/O, и приложения продолжают работу.
  7. Уведомление об успехе: Писатели уведомляются о том, что снимок создан успешно. Они могут проверить свои данные и, если необходимо, выполнить откат.
  8. Использование снимка: Запросчик получает дескриптор теневой копии и может читать данные из неё, как из обычного тома, но с состоянием на момент снимка.

Типы теневых копий

VSS поддерживает два основных типа теневых копий:

  • Клонирование (Clone) или полное копирование (Full Copy): Создаётся полная физическая копия тома. Этот метод требует много дискового пространства, но обеспечивает максимальную производительность при чтении.
  • Разностное копирование (Differential Copy) или копирование при записи (Copy-on-Write): После создания снимка все изменения, вносимые в исходный том, записываются в специальную область (diff area). Исходные блоки данных, которые были изменены, сохраняются в теневой копии. Этот метод экономит дисковое пространство, но может снижать производительность при записи на исходный том.

Применение

VSS используется в широком спектре задач:

  • Системные точки восстановления: Windows автоматически создаёт точки восстановления с помощью VSS перед установкой драйверов, обновлений или приложений.
  • Резервное копирование: Встроенные утилиты (wbadmin, «Архивация и восстановление») и сторонние программы резервного копирования используют VSS для создания непротиворечивых резервных копий открытых файлов, баз данных (SQL Server, Exchange) и всей операционной системы.
  • Предыдущие версии файлов: Пользователи могут просматривать и восстанавливать более старые версии файлов из теневых копий, созданных автоматически или вручную.
  • Создание образов дисков: Программы для клонирования дисков (например, Acronis True Image) используют VSS для создания «горячих» (без остановки системы) образов.
  • Виртуализация: VSS используется для создания согласованных снимков виртуальных машин (например, в Hyper-V).

Ограничения и критика

Несмотря на широкое распространение, VSS имеет ряд ограничений:

  • Потребление дискового пространства: Разностные копии требуют выделения места в diff area. Если место заканчивается, старые теневые копии автоматически удаляются.
  • Производительность: Процесс заморозки I/O может быть критичным для высоконагруженных серверов с большим количеством операций записи. Длительная заморозка может привести к сбоям приложений.
  • Зависимость от писателей: Если приложение не имеет собственного писателя VSS, его данные могут быть скопированы в несогласованном состоянии (например, база данных, открытая в момент снимка, может оказаться повреждённой при восстановлении).
  • Сложность диагностики: Ошибки в работе VSS (например, сбой писателя, нехватка места в diff area) могут быть трудны для диагностики и устранения. Часто требуется перезагрузка службы VSS или всей системы.
  • Не поддерживается для всех файловых систем: VSS в первую очередь оптимизирована для NTFS. На томах с FAT32 или exFAT возможности ограничены или отсутствуют.

Безопасность

Теневые копии, созданные VSS, могут быть объектом атак. Вредоносное ПО (например, шифровальщики) может удалять теневые копии, чтобы воспрепятствовать восстановлению данных без уплаты выкупа. Microsoft и сторонние разработчики предоставляют средства для защиты теневых копий (например, ограничение доступа к ним через ACL, использование аппаратных снимков на SAN).

Источники

  • Microsoft Docs: Volume Shadow Copy Service (VSS)
  • Microsoft Docs: VSS Architecture
  • Windows Internals, Part 1 (7th Edition) by Pavel Yosifovich, Mark E. Russinovich, David A. Solomon, Alex Ionescu
  • TechNet: Volume Shadow Copy Service Overview
  • Статья "Understanding Volume Shadow Copy Service" на сайте Petri IT Knowledgebase

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →