物理磁盘读取如何与 ntfs 的卷影一起使用?
how does physical disk read work with volume shadow for ntfs?
我的目标是制作一个备份程序读取物理磁盘(带有 NTFS 分区),同时使用 VSS 实现数据一致性。
我使用 windows api 的函数 CreateFile with '\.\PhysicalDriveN'
如此处所述(基本上,它允许我将磁盘作为大文件访问)
https://support.microsoft.com/en-us/help/100027/info-direct-drive-access-under-win32
为了测试,我使用此命令创建体积阴影
wmic shadowcopy call create Volume='C:\'
这是一个临时解决方案,我计划通过程序本身使用 VSS
我的问题是:
卷影是如何存储的?它存储自卷影以来修改过的数据还是存储自上次卷影以来所做的修改?
第一种情况:
当我读取磁盘时,我会得到一致的数据(包括 ntfs 元数据文件)吗?
另一种情况:
我可以像访问 disk/partition 一样访问卷影吗? (为了读取隐藏的元数据文件等)
-我目前正在使用 windows 7 但计划在不同版本的 windows server
上使用它
-我已经阅读了很多关于 VSS 的微软文档,但它的工作原理对我来说似乎真的不清楚(如果你回答一个,请解释一下它的含义)
-我知道卷影作为文件存储在文件夹 "System Volume Information" 中,名称类似于 {3808876b-c176-4e48-b7ae-04046e6cc752}
"如何存储卷影?它存储自卷影以来修改过的数据还是存储自上次卷影以来所做的修改?"
硬件或软件卷影副本提供商使用以下方法之一创建卷影副本:(msdn doc 回答)
Complete copy This method makes a complete copy (called a "full copy"
or "clone") of the original volume at a given point in time. This copy
is read-only.
Copy-on-write This method does not copy the original volume. Instead,
it makes a differential copy by copying all changes (completed write
I/O requests) that are made to the volume after a given point in time.
Redirect-on-write This method does not copy the original volume, and
it does not make any changes to the original volume after a given
point in time. Instead, it makes a differential copy by redirecting
all changes to a different volume.
"当我读取磁盘时,我会得到一致的数据(包括 ntfs 元数据文件)吗?"
即使应用程序没有以独占模式打开其文件,也有可能——因为打开、备份和关闭文件所需的时间有限——复制到存储介质的文件可能不会全部反映相同的应用程序状态。
"我可以像访问 disk/partition 一样访问卷影吗?(为了读取隐藏的元数据文件等)"
Requester Access to Shadow Copied Data
Paths on the shadow copied volume are obtained by replacing the root
of the original path with the device object. For example, given a path
on the original volume of "C:\DATABASE*.mdb" and a VSS_SNAPSHOT_PROP
instance of snapProp, you would obtain the path on the shadow copied
volume by concatenating snapProp.m_pwszSnapshotDeviceObject, "\",
and "\DATABASE*.mdb".
所以我做了更多测试,实际上 Shadow Volume 是在块级别而不是文件级别制作的。这意味着通过将 createfile 与路径一起使用
\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1
它的工作方式与使用带有路径 \.\C:
的 createfile 类似
是的,您可以访问卷影副本文件系统,它有自己的引导扇区、mft 等。
我的目标是制作一个备份程序读取物理磁盘(带有 NTFS 分区),同时使用 VSS 实现数据一致性。
我使用 windows api 的函数 CreateFile with '\.\PhysicalDriveN' 如此处所述(基本上,它允许我将磁盘作为大文件访问)
https://support.microsoft.com/en-us/help/100027/info-direct-drive-access-under-win32
为了测试,我使用此命令创建体积阴影
wmic shadowcopy call create Volume='C:\'
这是一个临时解决方案,我计划通过程序本身使用 VSS
我的问题是: 卷影是如何存储的?它存储自卷影以来修改过的数据还是存储自上次卷影以来所做的修改?
第一种情况: 当我读取磁盘时,我会得到一致的数据(包括 ntfs 元数据文件)吗?
另一种情况: 我可以像访问 disk/partition 一样访问卷影吗? (为了读取隐藏的元数据文件等)
-我目前正在使用 windows 7 但计划在不同版本的 windows server
上使用它-我已经阅读了很多关于 VSS 的微软文档,但它的工作原理对我来说似乎真的不清楚(如果你回答一个,请解释一下它的含义)
-我知道卷影作为文件存储在文件夹 "System Volume Information" 中,名称类似于 {3808876b-c176-4e48-b7ae-04046e6cc752}
"如何存储卷影?它存储自卷影以来修改过的数据还是存储自上次卷影以来所做的修改?"
硬件或软件卷影副本提供商使用以下方法之一创建卷影副本:(msdn doc 回答)
Complete copy This method makes a complete copy (called a "full copy" or "clone") of the original volume at a given point in time. This copy is read-only.
Copy-on-write This method does not copy the original volume. Instead, it makes a differential copy by copying all changes (completed write I/O requests) that are made to the volume after a given point in time.
Redirect-on-write This method does not copy the original volume, and it does not make any changes to the original volume after a given point in time. Instead, it makes a differential copy by redirecting all changes to a different volume.
"当我读取磁盘时,我会得到一致的数据(包括 ntfs 元数据文件)吗?"
即使应用程序没有以独占模式打开其文件,也有可能——因为打开、备份和关闭文件所需的时间有限——复制到存储介质的文件可能不会全部反映相同的应用程序状态。
"我可以像访问 disk/partition 一样访问卷影吗?(为了读取隐藏的元数据文件等)"
Requester Access to Shadow Copied Data
Paths on the shadow copied volume are obtained by replacing the root of the original path with the device object. For example, given a path on the original volume of "C:\DATABASE*.mdb" and a VSS_SNAPSHOT_PROP instance of snapProp, you would obtain the path on the shadow copied volume by concatenating snapProp.m_pwszSnapshotDeviceObject, "\", and "\DATABASE*.mdb".
所以我做了更多测试,实际上 Shadow Volume 是在块级别而不是文件级别制作的。这意味着通过将 createfile 与路径一起使用
\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1
它的工作方式与使用带有路径 \.\C:
是的,您可以访问卷影副本文件系统,它有自己的引导扇区、mft 等。