你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Azure 应用程序一致性快照工具的预览功能

本文提供有关Azure 应用程序一致快照工具(AzAcSnap)预览版中新功能的设置和使用指南。 有关该工具的基本信息,请参阅什么是Azure 应用程序一致性快照工具?

AzAcSnap 9 提供的预览功能包括:

  • Azure NetApp 文件备份
  • Azure 托管磁盘

注意

预览版“按原样”、“所有故障”和“可用”。它们被排除在服务级别协议和有限担保之外。 有关详细信息,请参阅 Microsoft Azure 预览版补充使用条款

提供反馈

你可以在线提供有关 AzAcSnap(包括此预览版)的反馈。

使用 AzAcSnap 预览功能

AzAcSnap 预览版功能与正式版功能一起提供。 使用预览功能需要使用 --preview 命令行选项。 若要设置和安装 AzAcSnap,请参阅Azure 应用程序一致快照工具入门。

Azure NetApp 文件备份

在多个卷上使用 AzAcSnap 获取快照时,默认情况下,所有快照的名称都相同。 由于将快照存档到Azure NetApp 文档备份中时从资源 ID 层次结构中删除卷名称,必须确保快照名称是唯一的。

AzAcSnap 可以通过将卷名称追加到普通快照名称,在创建快照时自动确保使用唯一名称。 例如,对于一个包含两个数据卷(hanadata01()hanadata02的系统,使用-c backup--prefix daily时,完整的快照名称将变为daily__F2AFDF98703__hanadata01daily__F2AFDF98703__hanadata02

可以通过在配置文件中设置 "anfBackup": "renameOnly" 在 AzAcSnap 中启用此功能,如以下代码片段所示:

"anfStorage": [
  {
    "anfBackup" : "renameOnly",
    "dataVolume": [

还可以使用 azacsnap -c configure --configuration edit --configfile <configfilename>.. 对于 Enter new value for 'ANF Backup (none, renameOnly)' (current = 'none'):,请输入 renameOnly

有关此功能的详细信息,请参阅配置Azure 应用程序一致快照工具

Azure 托管磁盘

Microsoft 提供了许多存储选项,用于部署 SAP HANA 等数据库。 有关其中一些选项的详细信息,请参阅 SAP 工作负荷Azure 存储类型。 还有一个 具有成本意识的解决方案,其中包含 Azure 高级存储

在此类体系结构(即具有托管磁盘的虚拟机 [VM] )上部署数据库时,AzAcSnap 可以采用应用程序一致性数据库快照。 但是,此平台的设置稍微复杂一些,因为在此方案中,需要先阻止 I/O 到装入点(通过使用xfs_freeze),然后才能在装载的逻辑卷中快照托管磁盘。

重要

Linux 系统必须有可用的 xfs_freeze才能阻止磁盘 I/O。

请特别注意使用正确的装入点(文件系统)配置 AzAcSnap,因为 xfs_freeze 阻止 I/O 到 Azure 托管磁盘的装入点指定的设备。 此行为可能会无意中阻止正在运行的应用程序,直到 azacsnap 完成运行。

下面是一个高级别的体系结构:

  1. 使用 Azure 门户将 Azure 托管磁盘附加到 VM。

  2. 从这些托管磁盘创建逻辑卷。

  3. 将逻辑卷装载到 Linux 目录。

  4. 以与 AzAcSnap 安装中的Azure NetApp 文档相同的方式创建服务主体。

  5. 安装和配置 AzAcSnap。

    配置器有一个新选项来定义逻辑卷的装入点。 将数据库置于备份模式并刷新 I/O 缓存(依赖于 Linux 内核参数 fs.xfs.xfssyncd_centisecs)后,此参数将 xfs_freeze 传递给阻止 I/O。

  6. 安装并配置为 xfs_freeze 以非特权用户身份运行:

    1. 创建包含以下内容的可执行文件 $HOME/bin/xfs_freeze

      #!/bin/sh
      /usr/bin/sudo /usr/sbin/xfs_freeze $1 $2
      
    2. 创建一个调用 /etc/sudoers.d/azacsnap 的 sudoers 文件,以允许用户 azacsnap 使用以下内容运行 xfs_freeze

      #
      # What: azacsnap
      # Why: Allow the azacsnap user to run "specific" commands with elevated privileges.
      #
      # User_Alias = SAP HANA Backup administrator user.
      User_Alias      AZACSNAP = azacsnap
      #
      AZACSNAP ALL=(ALL) NOPASSWD: /usr/sbin/xfs_freeze
      
    3. azacsnap通过以用户身份azacsnap运行以下代码,测试用户是否可以冻结和取消冻结目标装入点的 I/O。

      此示例运行每个命令两次以显示它第一次工作,因为没有用于确认是否已 xfs_freeze 冻结 I/O 的命令。

      冻结 I/O:

      su - azacsnap
      xfs_freeze -f /hana/data
      xfs_freeze -f /hana/data
      
      xfs_freeze: cannot freeze filesystem at /hana/data: Device or resource busy
      

      取消冻结 I/O:

      su - azacsnap
      xfs_freeze -u /hana/data
      xfs_freeze -u /hana/data
      
      xfs_freeze: cannot unfreeze filesystem mounted at /hana/data: Invalid argument
      

有关将 Azure 托管磁盘用作存储后端的详细信息,请参阅配置Azure 应用程序一致性快照工具

示例配置文件

下面是一个示例配置文件。 请注意的层次结构dataVolumemountPoint,以及azureManagedDisks

{
  "version": "5.1 Preview",
  "logPath": "./logs",
  "securityPath": "./security",
  "comments": [],
  "database": [
    {
      "hana": {
        "serverAddress": "127.0.0.1",
        "sid": "P40",
        "instanceNumber": "00",
        "hdbUserStoreName": "AZACSNAP",
        "savePointAbortWaitSeconds": 600,
        "autoDisableEnableBackint": false,
        "hliStorage": [],
        "anfStorage": [],
        "amdStorage": [
          {
            "dataVolume": [
              {
                "mountPoint": "/hana/data",
                "azureManagedDisks": [
                  {
                    "resourceId": "/subscriptions/<sub-id>/resourceGroups/<rg-name>/providers/Microsoft.Compute/disks/<disk01>",
                    "authFile": "azureauth.json"
                  },
                  {
                    "resourceId": "/subscriptions/<sub-id>/resourceGroups/<rg-name>/providers/Microsoft.Compute/disks/<disk02>",
                    "authFile": "azureauth.json"
                  }
                ]
              }
            ],
            "otherVolume": []
          }
        ]
      },
      "oracle": null
    }
  ]
}

虚拟机存储布局

存储层次结构如 SAP HANA 的以下示例所示:

  • SAP HANA 数据库的数据文件:

    /hana/data/mnt00001
    
  • 装入点:

    /dev/mapper/hanadata-hanadata on /hana/data type xfs 
    
  • 逻辑卷:

    lvdisplay
    
    --- Logical volume ---
    LV Path                /dev/hanadata/hanadata
    LV Name                hanadata
    VG Name                hanadata
    
  • 卷组:

    vgdisplay
    
    --- Volume group ---
    VG Name               hanadata
    System ID
    Format                lvm2
    Metadata Areas        2
    Metadata Sequence No  2
    VG Access             read/write
    VG Status             resizable
    MAX LV                0
    Cur LV                1
    Open LV               1
    Max PV                0
    Cur PV                2
    Act PV                2
    VG Size               1023.99 GiB
    
  • 物理卷(附加的 Azure 托管磁盘):

    pvdisplay
    
    --- Physical volume ---
    PV Name               /dev/sdd
    VG Name               hanadata
    PV Size               512.00 GiB / not usable 4.00 MiB
    Allocatable           yes (but full)
    PE Size               4.00 MiB
    Total PE              131071
    Free PE               0
    Allocated PE          131071
    PV UUID               K3yhxN-2713-lk4k-c3Pc-xOJQ-sCkD-8ZE6YX
    --- Physical volume ---
    PV Name               /dev/sdc
    VG Name               hanadata
    PV Size               512.00 GiB / not usable 4.00 MiB
    Allocatable           yes (but full)
    PE Size               4.00 MiB
    Total PE              131071
    Free PE               0
    Allocated PE          131071
    PV UUID               RNCylW-F3OG-G93c-1XL3-W6pw-M0XB-2mYFGV
    

以这种方式安装和设置 Azure VM 和 Azure 托管磁盘遵循 Microsoft 指南,在 VM 上创建托管磁盘的逻辑卷管理器(LVM)条带。

根据规定设置 Azure VM,AzAcSnap 可以采用 Azure 托管磁盘快照。 快照操作类似于 AzAcSnap 支持的其他存储后端的操作;例如,Azure NetApp 文档或 Azure 大型实例(裸机)。 由于 AzAcSnap 与 Azure 资源管理器 通信以采用快照,因此还需要具有正确权限的服务主体才能获取托管磁盘快照。

此功能允许客户在较小的系统上测试 AzAcSnap,并纵向扩展到Azure NetApp 文档和/或 Azure 大型实例(裸机)。

azacsnap Azure 托管磁盘支持的命令功能是configuretestbackupdeletedetails,但尚不支持restore

从 Azure 托管磁盘还原快照

尽管 azacsnap 当前缺少 -c restore Azure 托管磁盘的选项,但可以按如下所示手动还原:

  1. 通过Azure 门户从快照创建磁盘。

    请确保在与目标 VM 相同的可用性区域中创建磁盘。

  2. 通过 Azure 门户将磁盘连接到 VM。

  3. 以根用户身份登录到 VM,并使用 dmesgpvscan

    • 使用 dmesg

      dmesg | tail -n30
      
      [2510054.252801] scsi 5:0:0:2: Direct-Access     Msft     Virtual Disk     1.0  PQ:0 ANSI: 5
      [2510054.262358] scsi 5:0:0:2: Attached scsi generic sg4 type 0
      [2510054.268514] sd 5:0:0:2: [sde] 1073741824 512-byte logical blocks: (550 GB/512 GiB)
      [2510054.272583] sd 5:0:0:2: [sde] 4096-byte physical blocks
      [2510054.275465] sd 5:0:0:2: [sde] Write Protect is off
      [2510054.277915] sd 5:0:0:2: [sde] Mode Sense: 0f 00 10 00
      [2510054.278566] sd 5:0:0:2: [sde] Write cache: disabled, read cache: enabled, supports DPO and FUA
      [2510054.314269] sd 5:0:0:2: [sde] Attached SCSI disk
      [2510054.573135] scsi 5:0:0:3: Direct-Access     Msft     Virtual Disk     1.0  PQ: 0 ANSI: 5
      [2510054.579931] scsi 5:0:0:3: Attached scsi generic sg5 type 0
      [2510054.584505] sd 5:0:0:3: [sdf] 1073741824 512-byte logical blocks: (550 GB/512 GiB)
      [2510054.589293] sd 5:0:0:3: [sdf] 4096-byte physical blocks
      [2510054.592237] sd 5:0:0:3: [sdf] Write Protect is off
      [2510054.594735] sd 5:0:0:3: [sdf] Mode Sense: 0f 00 10 00
      [2510054.594839] sd 5:0:0:3: [sdf] Write cache: disabled, read cache: enabled, supports DPO and FUA
      [2510054.627310] sd 5:0:0:3: [sdf] Attached SCSI disk
      
    • 使用 pvscan

      saphana:~ # pvscan
      
      WARNING: scan found duplicate PVID RNCylWF3OGG93c1XL3W6pwM0XB2mYFGV on /dev/sde
      WARNING: scan found duplicate PVID K3yhxN2713lk4kc3PcxOJQsCkD8ZE6YX on /dev/sdf
      WARNING: Not using device /dev/sde for PV RNCylW-F3OG-G93c-1XL3-W6pw-M0XB-2mYFGV.
      WARNING: Not using device /dev/sdf for PV K3yhxN-2713-lk4k-c3Pc-xOJQ-sCkD-8ZE6YX.
      WARNING: PV RNCylW-F3OG-G93c-1XL3-W6pw-M0XB-2mYFGV prefers device /dev/sdc because device is used by LV.
      WARNING: PV K3yhxN-2713-lk4k-c3Pc-xOJQ-sCkD-8ZE6YX prefers device /dev/sdd because device is used by LV.
      PV /dev/sdd   VG hanadata        lvm2 [512.00 GiB / 0    free]
      PV /dev/sdc   VG hanadata        lvm2 [512.00 GiB / 0    free]
      Total: 2 [1023.99 GiB] / in use: 2 [1023.99 GiB] / in no VG: 0 [0   ]
      
  4. 使用 vgimportclone 根用户身份从磁盘导入卷组克隆:

    vgimportclone --basevgname hanadata_adhoc /dev/sde /dev/sdf
    
    WARNING: scan found duplicate PVID RNCylWF3OGG93c1XL3W6pwM0XB2mYFGV on /dev/sde
    WARNING: scan found duplicate PVID K3yhxN2713lk4kc3PcxOJQsCkD8ZE6YX on /dev/sdf
    WARNING: Not using device /dev/sde for PV RNCylW-F3OG-G93c-1XL3-W6pw-M0XB-2mYFGV.
    WARNING: Not using device /dev/sdf for PV K3yhxN-2713-lk4k-c3Pc-xOJQ-sCkD-8ZE6YX.
    WARNING: PV RNCylW-F3OG-G93c-1XL3-W6pw-M0XB-2mYFGV prefers device /dev/sdc because device is used by LV.
    WARNING: PV K3yhxN-2713-lk4k-c3Pc-xOJQ-sCkD-8ZE6YX prefers device /dev/sdd because device is used by LV.
    
  5. 通过使用 pvscan 根用户和 vgchange 作为根用户激活逻辑卷:

    pvscan --cache
    
    pvscan[23761] PV /dev/sdc online.
    pvscan[23761] PV /dev/sdd online.
    pvscan[23761] PV /dev/sde online.
    pvscan[23761] PV /dev/sdf online.
    
    vgchange -ay hanadata_adhoc
    
    1 logical volume(s) in volume group "hanadata_adhoc" now active
    
  6. 将逻辑卷装载为根用户。

    使用 mount -o rw,nouuid 选项。 否则,卷装载会因为 VM 上的重复 UUID(通用唯一标识符)而失败。

    mount -o rw,nouuid /dev/hanadata_adhoc/hanadata /mnt/hanadata_adhoc
    
  7. 访问数据:

    ls /mnt/hanadata_adhoc/
    
    software  write-test.txt
    

后续步骤