物理磁盘读取如何与ntfs的卷影一起使用?

问题描述 投票:0回答:2

我的目标是使用VSS进行数据一致性,使备份程序读取物理磁盘(使用NTFS分区)。

我使用windows 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元数据文件)吗?

在另一种情况下:我可以像访问磁盘/分区一样访问卷影子吗? (为了读取隐藏的元数据文件等)

-i我目前正在使用Windows 7,但计划在不同版本的Windows服务器上使用它

- 我已经阅读了很多关于VSS的微软文档,但它的工作方式对我来说似乎真的不清楚(如果你回答一个请解释一下它的含义)

-i知道卷阴影存储在文件夹“System Volume Information”中,文件名为{3808876b-c176-4e48-b7ae-04046e6cc752}

winapi ntfs volume-shadow-service
2个回答
0
投票

“如何存储卷阴影?它是否存储自卷阴影以来已修改的数据,还是存储自上一卷阴影以来所做的修改?”

硬件或软件卷影副本提供程序使用以下方法之一创建卷影副本:(通过msdn doc回答)

完整副本此方法在给定时间点生成原始卷的完整副本(称为“完整副本”或“克隆”)。此副本是只读的。

Copy-on-write此方法不复制原始卷。相反,它通过复制在给定时间点之后对卷进行的所有更改(已完成的写入I / O请求)来生成差异副本。

Redirect-on-write此方法不复制原始卷,并且在给定时间点之后不会对原始卷进行任何更改。相反,它通过将所有更改重定向到不同的卷来生成差异副本。

“当我读取磁盘时,我会获得一致的数据(包括ntfs元数据文件)吗?”

即使应用程序没有以独占模式打开文件,也有可能 - 因为打开,备份和关闭文件所需的时间有限 - 复制到存储介质的文件可能并不都反映相同的应用程序状态。

“我可以像访问磁盘/分区一样访问卷影吗?(为了读取隐藏的元数据文件等)”

Requester Access to Shadow Copied Data

通过用设备对象替换原始路径的根来获得卷影复制卷上的路径。例如,给定原始卷“C:\ DATABASE * .mdb”上的路径和snapProp的VSS_SNAPSHOT_PROP实例,您将通过连接snapProp.m_pwszSnapshotDeviceObject,“\”和“\”来获取卷影复制卷上的路径。数据库* .MDB”。


0
投票

所以我做了更多测试,实际上Shadow Volume是在块级别而不是文件级别制作的。这意味着通过使用带有路径\\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1的createfile,它的工作方式与使用带有路径\\.\C:的createfile类似。

所以是的,你可以访问卷影复制文件系统,它有自己的启动扇区,mft等。

© www.soinside.com 2019 - 2024. All rights reserved.