【问题标题】:How do you create a Writable VSS Snapshot?如何创建可写 VSS 快照?
【发布时间】:2021-01-30 00:47:34
【问题描述】:

这意味着您可以创建一个可写的 vss 快照:Usability limit for Volume Shadow Copy Service (VSS) in Windows

但是你是怎么做到的呢?我玩过一些东西,我可以通过删除卷上的只读标志来获得可写的 FAT/FAT32 分区 VSS 快照,但对于 NTFS,它会报告 ERROR_WRITE_PROTECT

【问题讨论】:

  • 你能分享一下你做了什么吗?喜欢步骤,使用工具或winapi并在Windows服务器或客户端上?
  • 如果您可以通过 IVssBackupComponents 提供可用作 VSS 请求者的可写示例,这将很有帮助。 InitializeForBackup、SetContext、SetBackupState、GatherWriterMetadata、(处理组件)、StartSnapshotSet、AddToSnapshotSet、PrepareForBackup、DoSnapshotSet。从 vsobjprop.Obj.Snap.m_pwszSnapshotDeviceObject 获取音量,将该句柄用于 Win32 函数。或者只是我需要添加/执行什么步骤才能使其可写(除了从卷中删除只读属性,这已经完成并且适用于 FAT/FAT32)。

标签: winapi volume-shadow-service


【解决方案1】:

Shadow copies are read-only.如果要将卷影副本转换为读/写 LUN,则需要额外的操作。

IVssBackupComponentsEx2::BreakSnapshotSetExVSS_BREAKEX_FLAG_MAKE_READ_WRITE 选项可以使卷影副本 LUN 作为读写卷暴露给主机。

示例可以参考官方示例:VShadow Volume Shadow Copy Service sample。使用-bw 命令将影子集分解为可写卷。

【讨论】:

  • 这就是我的想法,但是当我在 FAT32 分区上测试时,它很棒!我可以简单地删除只读卷标志并修改快照(如果我再次打开卷上的只读位,这些修改将丢失,但不让它工作)。关于团队可能希望如何启用对 NTFS 的这种类型的支持有什么想法吗?
【解决方案2】:

将硬件 lun(和相关的 BreakSnapshotSetEx)放在一边,有两种可能的方式可以通过纯软件方式获取可写快照。第一个是编写自定义 VSS 编写器并公开 OnPostSnapshot 事件处理程序。这是快照在 vss 创建后立即变为可写的地方,以便所有相关的写入者可以在快照设备上执行其特定的回滚更正。第二个是编写一个块设备驱动程序,在只读持久快照设备之上分层一个可写的差异映像。就像差异虚拟磁盘的工作方式一样。

【讨论】:

    猜你喜欢
    • 2018-04-24
    • 1970-01-01
    • 2018-04-22
    • 1970-01-01
    • 2015-08-30
    • 2020-01-19
    • 1970-01-01
    • 1970-01-01
    • 2020-03-01
    相关资源
    最近更新 更多