将共享快照与 Azure 文件存储配合使用

Azure 文件提供了获取 SMB 和 NFS 文件共享的快照的功能。 共享快照可以捕获在某个时间点的共享状态。 本文介绍文件共享快照提供的功能,以及如何使用它们恢复以前版本的文件。

重要

共享快照只提供文件级保护。 它们无法防止文件共享或存储帐户中的意外删除。 为了帮助防止存储帐户被意外删除,可以启用软删除,或是锁定存储帐户和/或资源组。

适用于

文件共享类型 SMB NFS
标准文件共享 (GPv2)、LRS/ZRS 是 否
标准文件共享 (GPv2)、GRS/GZRS 是 否
高级文件共享 (FileStorage)、LRS/ZRS 是 是

何时使用共享快照

防止应用程序错误和数据损坏

使用文件共享的应用程序执行写入、读取、存储、传输和处理等操作。 如果应用程序配置不当或引入了意外的 bug,某些块可能会出现意外的覆盖或损坏。 为了帮助防止这种情况,可在部署新应用程序代码之前创建共享快照。 如果在新部署中引入了 bug 或应用程序错误,可以恢复到该文件共享中的先前数据版本。

防止意外删除或意外更改

假设我们要处理文件共享中的某个文本文件。 关闭该文本文件后,无法撤消所做的更改。 在这些情况下,需要恢复文件的先前版本。 使用共享快照可在文件被意外重命名或删除时将其恢复到先前的版本。

常规备份目的

创建文件共享后,可以定期创建文件共享的共享快照,以便使用它进行数据备份。 定期创建共享快照有助于维护之前版本的数据,以备未来审计之需或灾难恢复之用。 我们建议使用 Azure 文件共享备份来拍摄和管理快照。 还可以使用 Azure 门户Azure PowerShellAzure CLI 自行拍摄和管理快照。

功能

共享快照是数据在一个时间点只读副本。 共享快照功能是在文件共享级别提供的。 检索是在单个文件级别提供的,支持恢复单个文件。 共享快照与捕获它们的 Azure 文件共享具有相同的冗余。 如果已为帐户选择异地冗余存储,则共享快照也会在配对区域中进行冗余存储。

可以使用 SMB、NFS、REST API、Azure 门户、客户端库或 PowerShell/CLI 还原整个文件共享。 可以使用 REST API、SMB 或 NFS 查看共享快照。 可以检索目录或文件的版本列表,并且可以直接将特定版本作为驱动器装载(仅适用于 Windows - 请参阅限制)。

在创建共享快照后,可以读取、复制或删除该快照,但无法对其进行修改。 无法将整个共享快照复制到另一个存储帐户。 必须使用 AzCopy 或其他复制机制逐个复制文件。

文件共享的共享快照与其基本文件共享相同。 唯一的差别在于,共享 URI 的后面追加了一个 DateTime 值,用于指示共享快照的创建时间。 例如,如果文件共享 URI 为 http://storagesample.core.file.chinacloudapi.cn/myshare,则共享快照 URI 将类似于:

http://storagesample.core.file.chinacloudapi.cn/myshare?snapshot=2011-03-09T01:42:34.9360000Z

除非显式删除,否则共享快照会一直保留,直至文件共享被删除。 你无法删除文件共享而保留共享快照。 当你删除共享时,删除工作流将自动删除快照。 可以枚举与基本文件共享相关联的快照,以跟踪当前快照。

创建文件共享的共享快照时,共享系统属性中的文件会被复制到具有相同值的共享快照中。 基本文件和文件共享的元数据也会复制到共享快照,除非在创建共享快照时为其指定了不同的元数据。

空间使用量

共享快照在本质上是递增的。 只会保存最新共享快照之后发生更改的数据。 这将减少创建共享快照所需的时间,并节省存储成本,因为仅针对更改的内容计费。 对象或属性或元数据更新操作的任何写入操作,都将被计入“已更改内容”,并存储在共享快照中。

为了节省空间,可以在改动幅度最大的期间删除共享快照。

尽管共享快照是增量方式进行保存的,但只需保留最新的共享快照即可还原共享。 删除共享快照时,仅删除该共享快照所独有的数据。 活动快照包含浏览和还原数据(从创建共享快照开始)到原始位置或替代位置所需的所有信息。 可以在项级还原。

快照不计入最大共享大小限制 100 TiB。 共享快照的总占用量或特定文件共享的共享快照所能占用的空间大小没有限制。 存储帐户限制仍然适用。

限制

Azure 文件允许的共享快照的上限是每个共享 200 个。 在达到 200 个共享快照之后,必须删除旧的共享快照,以便创建新的共享快照。 快照最多可以保留 10 年。

对于创建共享快照的同时调用次数,系统没有任何限制。

NFS Azure 文件共享快照仅支持文件管理 API (AzRmStorageShare)。 不支持文件数据平面 API (AzStorageShare)。

将数据从共享快照复制回共享

涉及文件和共享快照的复制操作遵循以下规则:

可以将文件共享快照中的各个文件复制到其基本共享或任何其他位置。 通过从共享快照中逐个复制文件,可以还原文件的早期版本或还原完整的文件共享。 共享快照不会被提升为基础共享。

复制后共享快照保持不变,但基本文件共享将被共享快照中可用的数据副本覆盖。 所有还原后的文件会计入“已更改内容”。

可将共享快照中的文件复制到具有不同名称的不同目标。 生成的目标文件是可写文件,而不是共享快照。 在这种情况下,基本文件共享将保持不变。

使用副本覆盖目标文件时,与原始目标文件关联的所有共享快照均将保持不变。

常规最佳做法

尽可能自动备份以便于数据恢复。 自动化操作比手动流程更可靠,有助于提高数据保护和可恢复性。 可以使用 Azure 文件共享备份(仅限 SMB 文件共享)、REST API、客户端 SDK 或脚本来实现自动化。

在部署共享快照计划程序之前,仔细考虑共享快照频率和保留设置,以免产生不必要的费用。

SMB 文件共享快照

使用 SMB Azure 文件共享的客户可以创建、列出、删除共享快照和从其还原。

创建 SMB 文件共享快照

可以使用 Azure 门户、Azure PowerShell 或 Azure CLI 创建 SMB Azure 文件共享的快照。

若要创建现有文件共享的快照,请登录到 Azure 门户并按照以下步骤操作。

  1. 在门户中导航到文件共享。

  2. 选择“快照”,选择“添加快照”,然后选择“确定”。

    存储帐户快照选项卡的屏幕截图。

列出 SMB 文件共享快照

可以使用 Azure 门户、Azure PowerShell 或 Azure CLI 列出文件共享的所有快照。

若要列出某个现有文件共享的所有快照,请登录到 Azure 门户并按照以下步骤操作。

  1. 在门户中导航到文件共享。

  2. 在文件共享中,选择“快照”。

  3. 在“快照”选项卡中,选择列表中的一个快照

    “快照”选项卡的屏幕截图,其中突出显示了第一个快照。

  4. 打开该快照以浏览它包含的文件。

从 SMB 文件共享快照还原

若要从快照还原文件,请登录到 Azure 门户并按照以下步骤操作。

  1. 在门户中导航到文件共享。

  2. 在文件共享中,选择“快照”。

  3. 从“文件共享快照”选项卡,右键单击要还原的文件,然后选择“还原”按钮

    “快照”选项卡的屏幕截图,其中已选择“qstestfile”,并突出显示了“还原”。

  4. 选择“覆盖原始文件”,然后选择“确定”。

    “还原”弹出窗口的屏幕截图,其中已选中“覆盖原始文件”。

文件的未修改版本现在应该已还原。

删除 SMB 文件共享快照

现有共享快照永远不会被覆盖。 这些快照必须显式删除。 可以使用 Azure 门户、Azure PowerShell 或 Azure CLI 删除共享快照。

需要先删除存储帐户上的任何锁,然后才能删除共享快照。 导航到存储帐户,然后选择“设置”>“”。 如果列出了任何锁,请将其删除。

若要删除现有文件共享的快照,请登录到 Azure 门户并按照以下步骤操作。

  1. 在 Azure 门户顶部的搜索框中,键入并选择“存储帐户”。

  2. 选择包含要为其删除快照的文件共享的存储帐户。

  3. 选择“数据存储”>“文件共享”。

  4. 选择你要删除一个或多个快照的文件共享,然后选择“操作”>“快照”。 此时会列出该文件共享的任何现有快照。

  5. 选择要删除的快照,然后选择“删除”。

    “快照”选项卡的屏幕截图,选择了最后一个快照,并突出显示了“删除”按钮。

在 Windows 中使用 SMB 文件共享快照

与使用本地卷影复制 (VSS) 快照时一样,可以使用 Windows 中的“以前版本”选项卡查看装载的 Azure 文件共享的快照。

  1. 在文件资源管理器中找到装载的共享。

    文件资源管理器中已装载的共享的屏幕截图。

  2. 浏览到需要还原的项或父项。 右键单击,然后从菜单中选择“属性”。

    所选目录的右键菜单的屏幕截图。

  3. 选择"以前版本”,以查看此目录的共享快照列表。

  4. 选择“打开”以打开该快照。

    “以前版本”选项卡的屏幕截图。

  5. 选择“还原”。 此操作以递归方式将整个目录的内容复制到创建共享快照时所在的原始位置。

    以前版本选项卡的屏幕截图,突出显示了警告消息中的还原按钮。

    注意

    如果文件未更改,则不会看到该文件的之前版本,因为该文件的版本与快照的版本相同。 这与 Windows 文件服务器上的工作原理一致。

在 Linux 上装载 SMB 文件共享快照

如果要在 Linux 上装载 SMB Azure 文件共享的特定快照,则必须在 mount 命令中提供 snapshot 选项,其中 snapshot 是以某种格式创建特定快照的时间(例如 @GMT-2023.01.05-00.08.20)。 从版本 4.19 起,Linux 内核中已支持 snapshot 选项。

创建文件共享快照后,请按照这些说明来装载它。

  1. 在 Azure 门户中,导航到要装载快照的文件共享所在的存储帐户。

  2. 选择“数据存储”>“文件共享”,然后选择文件共享。

  3. 选择“操作”>“快照”并记下要装载的快照的名称。 快照名称将为 GMT 时间戳,如下面的屏幕截图所示。

    屏幕截图显示了如何在 Azure 门户中查找文件共享快照名称和时间戳。

  4. 将时间戳转换为 mount 命令所需的格式,即 @GMT-year.month.day-hour.minutes.seconds。 在此示例中,你将 2023-01-05T00:08:20.0000000Z 转换成了 @GMT-2023.01.05-00.08.20。

  5. 运行 mount 命令并使用 GMT 时间以指定 snapshot 值。 请务必将 <storage-account-name><file-share-name> 和 GMT 时间戳替换为你的值。 .cred 文件包含要用来装载共享的凭据。

    sudo mount -t cifs //<storage-account-name>.file.core.chinacloudapi.cn/<file-share-name> /media/<file-share-name>/snapshot1 -o credentials=/etc/smbcredentials/snapshottestlinux.cred,snapshot=@GMT-2023.01.05-00.08.20
    
  6. 如果你能够在路径 /media/<file-share-name>/snapshot1 下找到该快照,则装载成功。

如果装载失败,请参阅排查 Azure 文件存储连接和访问问题 (SMB)

NFS 文件共享快照

使用 NFS Azure 文件共享的客户可以创建、列出、删除共享快照和从其还原。

重要

在创建快照之前,应装载文件共享。 如果在装载共享之前创建新的 NFS 文件共享并拍摄快照,尝试列出共享的快照时将返回空列表。 建议删除首次装载之前拍摄的任何快照,并在装载共享后重新创建快照。

NFS 快照限制

NFS Azure 文件共享快照仅支持文件管理 API (AzRmStorageShare)。 不支持文件数据平面 API (AzStorageShare)。

Azure 备份目前不支持 NFS 文件共享。

AzCopy 目前不支持 NFS 文件共享。 若要从 NFS Azure 文件共享或共享快照复制数据,请使用文件系统复制工具,例如 rsync 或 fpsync。

创建 NFS 文件共享快照

可以使用 Azure 门户、Azure PowerShell 或 Azure CLI 创建 NFS Azure 文件共享的快照。

若要创建现有文件共享的快照,请登录到 Azure 门户并按照以下步骤操作。

  1. 在 Azure 门户顶部的搜索框中,键入并选择“存储帐户”。

  2. 选择你要为其创建快照的 NFS Azure 文件共享所在的 FileStorage 存储帐户。

  3. 选择“数据存储”>“文件共享”。

  4. 选择你要为其创建快照的文件共享,然后选择“操作”>“快照”。

  5. 选择“+ 添加快照”。 添加可选的注释并选择“确定”。

添加文件共享快照的屏幕截图。

列出 NFS 文件共享快照

可以使用 Azure 门户、Azure PowerShell 或 Azure CLI 列出文件共享的所有快照。

若要列出某个现有文件共享的所有快照,请登录到 Azure 门户并按照以下步骤操作。

  1. 在 Azure 门户顶部的搜索框中,键入并选择“存储帐户”。

  2. 选择你要列出其快照的 NFS Azure 文件共享所在的存储帐户。

  3. 选择“数据存储”>“文件共享”。

  4. 选择你要列出其快照的文件共享。

  5. 选择“操作”>“快照”,此时会列出该文件共享的任何现有快照。

从 NFS Azure 文件共享快照还原

若要将 NFS Azure 文件共享快照装载到 Linux VM(NFS 客户端)并还原文件,请执行以下步骤。

  1. 在控制台中运行以下命令。 有关其他建议的装载选项,请参阅装载选项。 若要改进复制性能,请使用 nconnect 装载快照以使用多个 TCP 通道。

    sudo mount -o vers=4,minorversion=1,proto=tcp,sec=sys $server:/nfs4account/share /media/nfs
    
  2. 将目录更改为 /media/nfs/.snapshots,以便查看可用的快照。 默认情况下,.snapshots 目录处于隐藏状态,但可以像任何目录一样查看和读取。

    cd /media/nfs/.snapshots
    
  3. 列出 .snapshots 文件夹的内容。

    ls
    
  4. 每个快照都有自己的目录作为恢复点。 更改为需要还原文件的快照目录。

    cd <snapshot-name>
    
  5. 列出目录的内容,以查看可恢复的文件列表和目录。

    ls
    
  6. 将所有文件和目录从快照复制到 restore 目录以完成还原

    cp -r <snapshot-name> ../restore
    

快照中的文件和目录现在应该位于 /media/nfs/restore 目录中。

删除 NFS 文件共享快照

现有共享快照永远不会被覆盖。 这些快照必须显式删除。 可以使用 Azure 门户、Azure PowerShell 或 Azure CLI 删除共享快照。

需要先删除存储帐户上的任何锁,然后才能删除共享快照。 导航到存储帐户,然后选择“设置”>“”。 如果列出了任何锁,请将其删除。

若要删除现有文件共享的快照,请登录到 Azure 门户并按照以下步骤操作。

  1. 在 Azure 门户顶部的搜索框中,键入并选择“存储帐户”。

  2. 选择你要删除其快照的 NFS Azure 文件共享所在的 FileStorage 存储帐户。

  3. 选择“数据存储”>“文件共享”。

  4. 选择你要删除一个或多个快照的文件共享,然后选择“操作”>“快照”。 此时会列出该文件共享的任何现有快照。

  5. 选择要删除的快照,然后选择“删除”。

    删除文件共享快照的屏幕截图。

另请参阅