Как чтение физического диска работает с тенью тома для NTFS? - PullRequest
0 голосов
/ 29 января 2019

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

Я использую функции Windows API API CreateFile с '\. \ PhysicalDriveN', как описано здесь (в основном, это позволяет мне получить доступ к диску как к большому файлу)

https://support.microsoft.com/en-us/help/100027/info-direct-drive-access-under-win32

для тестов я создаю тени томов с помощью этой команды

wmic shadowcopy call create Volume='C:\'

этовременное решение, я планирую использовать VSS через саму программу

Мой вопрос: как хранятся тени тома?хранит ли он данные, которые были изменены со времени тени тома, или он хранит изменения, сделанные со времени последней тени тома?

в первом случае: когда я прочитаю диск, получу ли янепротиворечивые данные (включая файлы метаданных ntfs)?

в другом случае: могу ли я получить доступ к тени тома так же, как и к диску / разделу?(для чтения скрытых файлов метаданных и т. д.)

-им я в настоящее время использую Windows 7, но планирую использовать его на другой версии сервера Windows

-Я читал много MicrosoftДокумент о VSS, но как он работает, мне действительно неясно (если вы ответите одним из них, объясните немного его значение)

- я знаю, что тени томов хранятся в папке «System Volume Information» как файлы симена типа {3808876b-c176-4e48-b7ae-04046e6cc752}

Ответы [ 2 ]

0 голосов
/ 07 марта 2019

Итак, я сделал больше тестов, и фактически Shadow Volume сделаны на уровне блоков, а не на уровне файлов.это означает, что при использовании createfile с путем \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1 это будет работать аналогично использованию createfile с путем \\.\C:

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

0 голосов
/ 31 января 2019

" как хранятся тени томов? Хранятся ли данные, которые были изменены со времени тени тома, или хранятся изменения, сделанные после последней тени тома? "

Аппаратное обеспечение илипоставщик теневой копии программного обеспечения использует один из следующих методов для создания теневой копии: (Ответ msdn doc )

Полная копия Этот метод делает полнуюкопия (называемая «полной копией» или «клоном») исходного тома в данный момент времени.Эта копия доступна только для чтения.

Копирование при записи Этот метод не копирует исходный том.Вместо этого он создает дифференциальную копию, копируя все изменения (выполненные запросы ввода-вывода записи), которые вносятся в том после определенного момента времени.

Redirect-on-write ThisМетод не копирует исходный том и не вносит никаких изменений в исходный том после определенного момента времени.Вместо этого он создает дифференциальную копию, перенаправляя все изменения на другой том.

" при чтении диска получу ли я непротиворечивые данные (включая файлы метаданных ntfs)? "

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

" Могу ли я получить доступ к тени тома так же, как и к диску / разделу? (для чтения скрытых файлов метаданных и т. д.) "

Запрос доступа к теневым копиям

Пути на томе, скопированном в тени, получаются путем замены корня исходного пути на объект устройства.Например, если указать путь к исходному тому «C: \ DATABASE * .mdb» и экземпляру snapProp VSS_SNAPSHOT_PROP, вы получите путь к теневому скопированному тому, связав snapProp.m_pwszSnapshotDeviceObject, «\» и «\БАЗА ДАННЫХ * .mdb ".

...