Azure Stack Hub 存储服务:托管磁盘、Blob/Table/Queue 与容量管理(下篇)

未经同意,请勿转载!

本篇定位:本文是 Azure Stack Hub 存储服务系列的下篇,专注于 存储服务管理 —— 托管磁盘(Managed Disks)的差异与版本演进、Blob 上传机制(含块 / 大对象模式)、Table 存储的分区与伸缩边界、Queue 消息队列的应用场景、容量分配 / 告警 / 配额 / 卷间迁移 / 删除保留期。

版本基础:本文基于 azs-1901 至当前主流 azs 版本(具体覆盖 azs-1901 / 2002 / 2005 / 2102 / 2206 / 2301 / 2405 / 2503 等版本)的 Azure Stack Hub Operator 文档整理。不同 OEM 集成系统以及不同 azs 版本之间可能存在差异,当版本与本文表述不一致时,以当期版本 Azure Stack Hub Operator 文档为准。


修订说明:

本篇为 Azure Stack Hub 存储服务介绍的新章下篇,基于材料( 内训课程 - "Azure Stack Hub 存储服务")整理,按档编写准则做工程化改写。


目录

  1. 托管磁盘概述:为什么需要托管磁盘

  2. 托管磁盘与 Azure 公有云的差异(关键速查)

  3. 托管磁盘的 REST 操作集

  4. 托管磁盘创建源:四种典型路径

  5. 快照:独立生命周期与 SAS 导出

  6. 对象存储服务(Blob):主要特性与上传机制

  7. Table 存储:NoSQL 模型与伸缩边界

  8. Queue 队列:消息中间件与典型应用

  9. 容量管理:分配 / 告警 / 配额 / 迁移 / 保留

  10. 运维红线与下篇小结


1. 托管磁盘概述:为什么需要托管磁盘

托管磁盘(Managed Disk)是 Azure Stack Hub 自 azs-1808 起引入的存储抽象,它把"VM 磁盘 → 存储账户 → 存储卷"的间接链路变成"VM 磁盘 = ARM 一级资源"的直接链路。

1.1 为什么需要托管磁盘(PPT 列出四大理由)

理由

含义

对谁的价值

更容易管理 blob

租户不需要手动管理底层 Page Blob / 存储账户

应用开发者

磁盘级 RBAC + 锁 + 标记

每个磁盘是独立的 ARM 资源,可独立授权 / 加锁 / 打标签

安全 / 治理

快照

支持磁盘级快照,独立生命周期

备份 / 灾备

自动均匀放置磁盘数据

SRP 自动把磁盘分布到合适的卷,避免单卷过热

性能 / 容量

1.2 托管磁盘 vs 非托管磁盘(架构差异)

L0 版本事实:自 azs-1808 起,创建 VM 时默认使用托管磁盘。这是 PPT slide 17 给出的明确表述。

托管磁盘架构:
  VM
   ↓
  Disk(ARM 一级资源)── 磁盘级 RBAC / 锁 / 标签
   ↓
  托管存储账户(Azure Stack Hub 自动管理,租户不可见)
   ↓
  Storage Volume(S2D VDisk)
   ↓
  物理磁盘

非托管磁盘架构:
  VM
   ↓
  VHD(Page Blob)── 租户需要手动管理存储账户
   ↓
  存储账户(租户管理)
   ↓
  Storage Volume(S2D VDisk)
   ↓
  物理磁盘

关键差异托管磁盘把"存储账户"这一中间层对租户屏蔽。租户操作的对象是"磁盘",不是"存储账户里的 VHD"。这一抽象带来四个直接好处:

  1. 简单 —— 租户不需要关心存储账户的容量规划、副本策略、访问密钥管理

  2. 易管理 —— Azure Stack Hub 自动优化数据放置,避免单卷过热

  3. 顶级资源 —— 磁盘、快照、镜像都是 ARM 的一级资源,可独立管理

  4. 细粒度访问控制 —— 通过 Azure RBAC 在磁盘级别控制访问权限

1.3 托管磁盘的"顶级资源"属性

在 Azure Resource Manager 视角下,托管磁盘是与其他资源同级的 ARM 对象:

Resource Group
├── VM(Microsoft.Compute/virtualMachines)
├── Disk(Microsoft.Compute/disks)      ← ARM 一级资源
├── Snapshot(Microsoft.Compute/snapshots)  ← ARM 一级资源
├── Image(Microsoft.Compute/images)   ← ARM 一级资源
├── Virtual Network(Microsoft.Network/virtualNetworks)
└── Storage Account(Microsoft.Storage/storageAccounts)  ← 仅用于非托管磁盘

L3 最佳实践托管磁盘时代,租户通常不需要直接创建存储账户——存储账户成为 Azure Stack Hub 的内部实现细节。这一变化让 RBAC 设计更简单(按磁盘授权而不是按账户授权),也让备份 / 灾备工具(基于磁盘快照)更容易实现。


2. 托管磁盘与 Azure 公有云的差异(关键速查)

托管磁盘与 Azure 公有云的对比矩阵,本节显式标注差异来源层(L0 版本事实 / L1 微软硬要求 / L2 OEM 实现)。

2.1 核心差异速查表

差异点

Azure(公有云)

Azure Stack Hub

差异来源

备份选项

Azure Backup 服务

尚未支持

L0 版本事实(azs 版本演进中)

灾难恢复选项

Azure Site Recovery

Azure Site Recovery on Azure Stack Hub

L0 版本事实

磁盘性能分析

聚合指标 + 每盘指标

尚未支持

L0 版本事实

磁盘大小上限

P80(32 TiB)/ E80(32 TiB)/ S80(32 TiB)

M30(1023 GiB)

L1 微软硬要求(Hub 平台限制)

磁盘快照复制

运行中 VM 磁盘快照支持

通过备份厂商支持

L0 版本事实

磁盘类型

Premium SSD / Standard SSD / Standard HDD

Premium SSD + Standard HDD(无 Standard SSD)

L0 版本事实

静态加密

Azure SSE / Azure Disk Encryption

BitLocker 128-bit AES

L1 微软硬要求(Hub 平台限制)

磁盘扩容

支持(Windows / Linux)

支持(Windows / Linux)

L0 版本事实

镜像

托管自定义镜像

支持

L0 版本事实

迁移工具

ConvertTo-AzVMManagedDisk cmdlet

不支持(需手动重建 VM)

L0 版本事实

Premium 性能保证

完全支持(按 SKU 分级)

可配置但无性能保证

L1 微软硬要求

Premium IOPs

取决于磁盘大小

2300 IOPs / 单盘 cap

L0 版本事实

Premium 吞吐

取决于磁盘大小

145 MB/s / 单盘 cap

L0 版本事实

关键澄清:上表中标注"尚未支持"的项是 L0 版本事实——它们随 azs 版本演进可能逐步补齐,不应被理解为"长期或永久不可用"。本文表述以当期 azs 版本为准。

2.2 关键数字的来源层解读

数字

数值

来源层

含义

托管磁盘最大 1023 GiB

M30 SKU

L1 微软硬要求

Azure Stack Hub 平台级容量上限,未来版本可能变化

Premium IOPs 上限 2300

2300 IOPs / 单盘

L0 版本事实

cap(上限)而不是 provisioned(保证)

Premium 吞吐上限 145 MB/s

145 MB/s / 单盘

L0 版本事实

cap 而不是 provisioned

BitLocker 128-bit AES

128-bit AES

L1 微软硬要求

Azure Stack Hub 静态加密的唯一选项

关于 IOPs / 吞吐的"cap"语义:微软官方明确说明"Managed disks IOPs and throughput in Azure Stack Hub is a cap number instead of a provisioned number, which can be impacted by hardware and workloads running in Azure Stack Hub." —— 这是非常重要的差异点。Azure 公有云的 Premium SSD 是按 SKU 保证的,Azure Stack Hub 的 Premium SSD 只是上限

2.3 与 Azure 公有云的迁移注意事项

从 Azure 公有云迁回 Azure Stack Hub 时,托管磁盘相关代码需要做以下调整:

场景

Azure 公有云做法

Azure Stack Hub 做法

磁盘大小

可选 32 TiB / P80

最大 1023 GiB / M30

加密选项

SSE / ADE 多套选项

仅 BitLocker

Premium 性能假设

按 SKU 保证

无保证,仅 cap 上限

ConvertTo-AzVMManagedDisk

支持

不支持(手动迁移)

磁盘性能监控

聚合 + 每盘指标

尚未支持(需依赖 OEM 监控工具)

L3 最佳实践不要假设 Azure Stack Hub 与 Azure 公有云的存储性能线性对应。在做工作负载迁移时,必须在 Azure Stack Hub 上做实际性能测试,根据实测结果调整应用层假设


3. 托管磁盘的 REST 操作集

托管磁盘的 REST 操作分为四类,本节把它们与实际运维场景对应。

3.1 REST 操作分类

操作类别

典型 REST 调用

运维场景

磁盘创建 / 更新 / 删除

PUT /subscriptions/.../disks/{diskName}、DELETE /subscriptions/.../disks/{diskName}

创建新盘 / 修改 SKU / 删除盘

创建快照

PUT /subscriptions/.../snapshots/{snapshotName}

备份 / 灾备

导出快照 / 磁盘

GET /subscriptions/.../snapshots/{snapshotName}(返回 SAS URI)

数据迁移 / 备份归档

VM 操作(挂载磁盘)

VM 创建 / 更新 API 中 disks 数组

创建 VM 时挂载 / 热添加磁盘

VM 读写磁盘 IOPS / 时延 / 吞吐量

在 VM 内部通过 OS 工具(iostat / PerfMon)观测

性能调优

L3 最佳实践"VM 读写磁盘 IOPS / 时延 / 吞吐量"观测在 VM 内部完成——这不属于 Azure Stack Hub 平台的 REST API 范围,而是 OS 内部的性能工具范畴。常见的观测手段包括 Linux 的 iostat / fio、Windows 的 PerfMon / Get-Disk + Get-Counter

3.2 与 Azure 公有云的 API 兼容性

L0 版本事实:Azure Stack Hub 托管磁盘支持的 API 版本比 Azure 公有云滞后数代。当前主流 azs 版本支持的版本号(按版本段):

  • azs-2102 ~ azs-2604:2019-07-01

  • azs-2008 ~ azs-2604:2019-03-01 / 2018-09-30 / 2018-06-01 / 2018-04-01 / 2017-03-30

  • azs-1802 ~ azs-2005:2017-03-30 / 2017-12-01(managed images only)

迁移含义:从 Azure 公有云下载的 ARM 模板,如果使用了较新的 API 版本,可能无法直接部署到 Azure Stack Hub——需要把 apiVersion 字段改写为 Azure Stack Hub 支持的版本。这一改写是迁移 Azure Stack Hub 时最容易踩坑的环节之一。

3.3 ConvertTo-AzVMManagedDisk cmdlet 不可用

L0 版本事实:Azure PowerShell 的 ConvertTo-AzVMManagedDisk cmdlet 在 Azure Stack Hub 上不可用——这是与 Azure 公有云的明确差异。如果租户从 Azure 公有云导入一个非托管磁盘 VM,不能直接用 ConvertTo cmdlet 转换,需要通过:

  1. 导出 VHD(通过存储账户 SAS)

  2. 创建托管磁盘(指定 VHD 作为创建源)

  3. 创建 VM 并挂载新磁盘


4. 托管磁盘创建源:四种典型路径

"多种创建源"——本节展开四种典型创建源及适用场景。

4.1 磁盘创建源速查

创建源

用途

典型场景

空盘

创建全新空磁盘

新 VM 的数据盘

从 VHD 创建

指定 VHD URL 创建磁盘

跨 Azure Stack Hub 实例迁移

从快照创建

从已有磁盘快照恢复

备份恢复、版本回滚

从托管镜像创建

从共享镜像创建

标准化 VM 模板

4.2 通过 VHD 文件创建托管磁盘(迁移场景)

这是 Azure Stack Hub 之间迁移数据的典型路径:

源 Azure Stack Hub
  └─ Storage Account 1
       └─ Page Blob (vhd-source.vhd)
                ↓ (生成 SAS URI)
                ↓ (提供 read 权限)
目标 Azure Stack Hub
  └─ 创建托管磁盘(Source = SAS URI)
       └─ 挂载到新 VM

L3 最佳实践VHD 跨实例迁移期间,源 Page Blob 的 SAS URI 必须保持有效——使用短期 SAS(数小时)即可,避免暴露长期 SAS。

4.3 创建快照(独立生命周期)

快照是独立的 ARM 资源,不依赖于父磁盘:

Disk(ARM 资源 #1)── 父
  └─ Snapshot 1(ARM 资源 #2,独立生命周期)
  └─ Snapshot 2(ARM 资源 #3,独立生命周期)

关键特性

  • 独立生命周期:删除父磁盘时,快照可以独立保留

  • 快照级 RBAC:可以为每个快照单独设置访问权限

  • 基于 SAS URI 导出:可以生成 SAS URI 供其他实例读取


5. 快照:独立生命周期与 SAS 导出

Azure Stack Hub把快照定位为"独立的 ARM 资源"。本节展开快照的运维动作。

5.1 快照的核心特性

特性

含义

对运维的价值

独立生命周期

快照是独立 ARM 资源,可独立保留 / 删除

父磁盘删除不影响快照

快照级 RBAC

每个快照可独立授权

不同快照可分发给不同租户

基于 SAS URI 的导出

可生成 SAS URI 供其他实例读取

跨实例数据迁移

5.2 快照的存储方式

L0 版本事实:Azure Stack Hub 快照是完整复制(full copy) 而不是 Azure 公有云的"增量快照"(incremental snapshot)。

关键含义:Azure 公有云的快照可以只存储增量差异,节省存储;Azure Stack Hub 的快照是完整复制。这意味着频繁创建快照会显著消耗存储容量——快照存储成本在 Azure Stack Hub 上比 Azure 公有云更高,需要在备份策略中考虑。

5.3 快照 vs 备份 vs 灾备的边界

能力

快照

备份

灾备

数据保护范围

单磁盘 / 单 VM

多 VM / 多业务系统

跨数据中心

恢复速度

秒级

分钟级

小时级

存储成本

高(完整复制)

中(增量 / 压缩)

高(跨地域复制)

Azure Stack Hub 支持

✅ 平台内建

通过备份厂商支持

通过 OEM / 第三方方案

L3 最佳实践不要把快照当作备份的替代品——快照是"快速回滚"工具,不是"长期数据保护"工具。生产环境的备份 / 灾备应该用专业备份软件 + 异地复制。


6. 对象存储服务(Blob):主要特性与上传机制

Azure Stack Hub的Blob服务主要特性和两种上传模式。本节展开核心要点。

6.1 Blob 服务的主要功能

功能

含义

价值

弹性伸缩

自动适应负载变化

无需容量规划

数据持久耐用(LRS)

本地三副本(无 GRS / ZRS 选项)

Scale Unit 内高可用

高可用性

多节点冗余 + 自动故障转移

业务连续性

强一致性

写入立即可读

与最终一致性 NoSQL 区分

动态扩展带宽和 TPS

根据负载自动扩展

应对突发流量

成本效益

按用量计费,无最低消费

适合突发工作负载

6.2 上传对象:单次 PutBlob(≤ 256 MB)

L0 版本事实:单次 REST 调用最大支持 256 MB(API version 2016-05-31 之后;更早版本是 64 MB)。

REST Call: PutBlob(Image.jpg)
           ↓
       Image.jpg(≤ 256 MB)
           ↓
       Blob 后端存储

关键特性PutBlob 是"替换式"上传——单次调用把整个 Blob 内容替换为目标内容。如果上传失败,Blob 内容可能是损坏的旧版本,需要重传。

6.3 上传大容量对象:分块 PutBlockList

L0 版本事实:分块上传(PutBlockList)的限制——

  • 每个数据块最大 100 MB

  • 每个块大小可变

  • 总块数最多 50,000 块

  • BlockId 长度固定

REST Calls:
  PutBlock(blobName, BL001, BL001Data);
  PutBlock(blobName, BL002, BL002Data);
  ...
  PutBlock(blobName, BLN00, BLN00Data);
  PutBlockList(blobName, BL001, ..., BL00N);  ← 提交块列表,完成上传

关键优势

  1. 高效的上传和重试机制 —— 单块失败可重传,不需要重传整个 Blob

  2. 支持并行且无序的上传 —— 块可乱序上传,最后 PutBlockList 提交

  3. 适用于大文件 —— 视频 / 备份 / 大文档

6.4 100 MB / 50,000 块的存储容量含义

限制

数学含义

实务含义

每块最大 100 MB

单块大小上限

单块超过 100 MB 的应用需要分块

最多 50,000 块

单 Blob 容量上限 = 50,000 × 100 MB = 5 TB

单 Blob 最大 5 TB;超过此值需要分片

关键判断:Azure Stack Hub Blob 单 Blob 最大 5 TB 与 Azure 公有云对齐——这是 Block Blob 设计的硬上限。如果业务需要存超过 5 TB 的单个对象,需要在应用层做分片。

6.5 Blob 服务在实际场景中的典型应用

场景

Blob 类型

模式

用户上传图片 / 文档

Block Blob

小于 256 MB 用 PutBlob;更大用 PutBlockList

视频文件

Block Blob

通常用 PutBlockList 分块上传

虚拟机磁盘(VHD)

Page Blob

通过 VM 管理层创建,租户不需要直接操作

审计日志 / 顺序写入

Append Blob

日志追加场景

备份归档

Block Blob

大文件用 PutBlockList


7. Table 存储:NoSQL 模型与伸缩边界

Azure Stack Hub Table 存储的 NoSQL 模型。本节展开关键限制和应用模式。

7.1 Table 存储的 NoSQL 数据模型

Table 存储的每条记录由三部分组成:

  • PK(Partition Key) —— 分区键,决定数据物理分布

  • RK(Row Key) —— 行键,分区内唯一

  • 属性列 —— 灵活 schema,可包含任意属性

PK | RK      | Name        | Status    | WebSite        | Email
A  | AlexP   | Alex Pen    | Busy      | http://...     | alexp@...
B  | BillP   | Bill Peters | Available | http://...     | alexp@...

PK | RK      | Name        | Status    | Photo       | Email
B  | BillP   | Bill Peters | Available | http://...  | alexp@...

PK | RK      | Name        | Status    | EmpNo
A  | AliceC  | Alice Clarke| Available | 1223

PK | RK      | Name        | Status
B  | BobS    | Bob Stevens | Offline

关键特性

  • NoSQL 键值对存储 —— 灵活 schema,不同行可有不同属性

  • 快速开发 —— 不需要预定义 schema

  • 扩展性 —— 从很少记录扩展到数百万记录

  • 强一致性模型 —— 写入立即可读(区别于最终一致性 NoSQL)

7.2 Table 存储的典型应用场景

场景

描述

购物车

用户会话级数据,PK = UserId

地址簿

用户联系人,PK = UserId,RK = ContactId

设备信息

IoT 设备元数据,PK = DeviceType

服务器状态

监控心跳,PK = ServerId

事件与指标

时序数据,PK = EventTime

应用配置

配置项存储,PK = AppName

7.3 Table 存储的伸缩边界(关键约束)

L0 版本事实:Table 存储有两个明确的伸缩边界——

限制

数值

含义

Partition Key + Row Key 大小限制

400 个字符(800 字节)

PK + RK 联合最大 800 字节

单租户表的伸缩上限

单个表服务器数据库的事务速率限制

一个表的所有分区都存在同一个数据库中

关键含义 1(PK + RK 大小):PK + RK 联合不能超过 800 字节。PK 设计需要考虑大小——避免把大字符串(如完整的 URL / 长 JSON 串)直接作为 PK

关键含义 2(伸缩边界)一个租户表的所有分区都在同一个数据库中,这意味着单表的可伸缩性受限于单个表服务器数据库的事务速率。如果业务需要单表支持超过数据库事务速率的 QPS,应该考虑拆分多个表

7.4 Table 存储的存储分布(管理员视角)

租户表(多个)
   │
   ├── 表记录(rows)
   │
   └── 数据库(DB1 ~ DB8)
          │
          └── 卷 1 / 卷 2(S2D VDisk)

L2 OEM 实现:数据库的物理分布由 Azure Stack Hub 内部自动管理,管理员不需要也不应该干预。租户只需要关心"表 / 分区 / 行"的概念层级。


8. Queue 队列:消息中间件与典型应用

PPT slide 32 给出 Queue 的核心特性。本节展开实际应用模式。

8.1 Queue 的核心特性

特性

含义

简单

标准 FIFO 消息队列

经济

成本极低,适合大规模消息流

持久

消息持久化到磁盘(三副本)

HTTP / HTTPS 访问

通过标准 HTTP 协议访问,经过身份验证

消息大小上限

64 KB

消息数量上限

数百万条

访问范围

从任何地方通过认证 HTTP / HTTPS

8.2 Queue 的典型应用场景

场景

描述

解耦异步消息

应用程序组件之间的异步通信

故障弹性

应对组件故障的弹性设计

削峰填谷

突发请求缓冲,平滑后端处理

任务分发

把耗时任务异步分发到后台 worker

8.3 Queue 与其他消息中间件的边界

L3 最佳实践:Azure Stack Hub Queue 是轻量级消息队列不替代以下企业级消息中间件:

中间件

适用场景

Queue 不适合的场景

Azure Service Bus

主题订阅 / 事务消息 / 会话

Queue 不支持主题订阅

Azure Event Hubs

大规模事件流 / 实时分析

Queue 不是事件流方案

Apache Kafka

大数据流处理

Queue 不是流处理平台

RabbitMQ

复杂路由 / 多协议

Queue 不支持高级路由

关键判断Queue 适合简单 FIFO 场景,复杂消息模式需要用其他中间件或迁移到 Azure 公有云的对应服务

8.4 Queue 的存储分布(管理员视角)

租户队列(多个)
   │
   ├── 队列消息(messages)
   │
   └── 数据库(DB1 ~ DB8)
          │
          └── 卷 1 / 卷 2(S2D VDisk)

L2 OEM 实现:与 Table 存储类似,Queue 的物理存储分布由 Azure Stack Hub 内部自动管理。


9. 容量管理:分配 / 告警 / 配额 / 迁移 / 保留

Azure Stack Hub容量管理的完整图谱。本节按"分配 → 监控 → 配额 → 迁移 → 保留"的顺序展开。

9.1 容量管理全景

Azure Stack Hub 存储容量管理
   │
   ├── 容量分配(系统订阅 vs 租户订阅)
   │
   ├── 容量监控 + 告警
   │     ├── 可用性告警
   │     ├── 容量用完告警
   │     ├── 服务健康度告警
   │     └── 数据存储不可用告警
   │
   ├── 配额管理(Plan / Offer 配置)
   │
   ├── 卷间迁移(管理员操作)
   │
   └── 删除保留期(默认 15 天)

9.2 容量分配:两套订阅视图

Azure Stack Hub容量分配的"系统订阅 vs 租户订阅"两套视图:

订阅类型

用途

包含内容

系统订阅

Azure Stack Hub 基础设施自身

Infrastructure VM 数据、诊断数据、系统对象

租户订阅

租户工作负载

VM 磁盘、镜像、快照、Blob、Table、Queue

关键认知两套订阅的容量是分开计数的——租户配额耗尽不影响系统订阅的基础设施运行,但反过来系统订阅预留的容量是"硬预留"的,租户不能使用这部分容量。

9.3 IaaS 场景 vs 应用场景的容量消耗差异

场景

容量消耗主体

容量规划特点

IaaS 场景

VM OS Disk + Data Disk + 镜像 + 快照 + Page Blob

单 VM 容量相对可预测

应用场景

对象存储(Blob)+ 表存储 + 队列 + 诊断 + 应用数据

容量增长模式不规则,需持续监控

L3 最佳实践IaaS 场景的容量规划相对简单(每 VM 容量 × VM 数量),应用场景的容量规划复杂(Blob 增长、Table 增长、Queue 增长可能非线性)。建议在 Azure Stack Hub 部署前先做应用场景的容量预测,把"未来 12 个月增长曲线"作为容量规划的核心输入。

9.4 容量监控 + 告警:四类告警

四类容量相关告警:

告警类别

触发条件

严重程度

可用性告警

数据存储不可用

紧急

容量用完告警

卷使用率达到阈值

警告

服务健康度告警

存储服务整体异常

警告 / 紧急

数据存储不可用告警

部分数据访问失败

警告

基础设施依赖不可用告警

底层依赖服务故障

警告

L0 版本事实:容量用完告警的阈值随 azs 版本演进变化,通常建议关注 70% 警告 / 90% 紧急这两档。实际阈值以当期版本 + OEM 配置为准,不要假设固定值。

9.5 配额管理(管理员视角)

管理员通过 Plan / Offer 控制租户的容量上限:

配额类型

控制对象

配置位置

存储账户数量

单订阅可创建的存储账户数

Plan / Offer

存储容量

单订阅可使用的总容量

Plan / Offer

容器 / Blob / Table / Queue 数量

各对象的数量上限

Plan / Offer

L3 最佳实践

  1. 为现有 Offer 增加 Plan —— 不影响现有租户,平滑升级配额

  2. 修改配额 —— 通过 Plan / Offer 配置,需要走变更审批

  3. 不要绕过配额 —— 配额是多租户治理的基础,绕过等于破坏治理

9.6 卷间迁移(管理员关键动作)

L1 微软硬要求磁盘迁移不支持热迁移,目前是离线操作

9.6.1 为什么需要卷间迁移

L0 版本事实:由于租户使用模式不同,一些租户份额比其他份额使用更多的空间。结果可能是一个份额(卷)比其他相对未使用的份额占用的空间少。

卷间不平衡场景:

初始状态(不平衡):
  卷 1 = 80% 已用
  卷 2 = 40% 已用

迁移后(平衡):
  卷 1 = 50% 已用
  卷 2 = 70% 已用
9.6.2 离线迁移对业务的影响

状态

业务影响

迁移前

业务正常运行

迁移过程中

VM 不可用(磁盘被卸载 → 复制到目标卷 → 重新挂载)

迁移完成后

业务恢复(需要 VM 重新启动)

运维红线卷间迁移是离线操作,迁移期间相关 VM 不可用。必须在业务低峰期执行,且需要提前通知业务方。不要在生产时段做卷间迁移

9.6.3 迁移决策清单

在执行卷间迁移前,管理员应该确认:

检查项

目的

目标卷剩余容量足够

避免迁移后目标卷过满

业务时段确认

在业务低峰期执行

VM 数据已备份

迁移失败时可回滚

通知业务方

业务方需提前知晓中断窗口

9.7 删除保留期

保留期的关键参数:

参数

含义

取值范围

保留期

已删除账户在物理盘上的保留时间

0~9999 天默认 15 天

"0" 表示立即不保留

删除后立即释放物理空间

0 = 无保留期

按区域定义

每个区域独立配置保留期

以天为单位定义

不支持小时 / 分钟粒度

L0 版本事实:保留期默认 15 天,可在管理员门户调整到 0~9999 天范围内的任意值。

9.7.1 保留期的实务含义

保留期设置

含义

适用场景

0 天

删除账户立即释放物理空间(无保留)

严格存储效率优先场景

1~7 天

短期保留,主要应对误删除

通用场景

15 天(默认)

中期保留,覆盖多数误删恢复需求

默认配置

30~90 天

长期保留,符合合规要求

合规要求严格的行业

>90 天

超长保留,存储成本显著上升

极少使用

L3 最佳实践保留期越长,物理存储成本越高(删除的账户数据继续占用三副本空间)。建议根据业务实际需求设置保留期,不要无脑使用最大值

9.7.2 强制立即回收(管理员动作)

管理员可以选择"立即回收"已删除账户的容量——这绕过了保留期:

动作

效果

风险

等保留期自动回收

数据保留期内可恢复

占物理容量

强制立即回收

立即释放物理容量

不可恢复

运维红线强制立即回收是不可逆操作——一旦执行,已删除账户无法恢复。必须确认业务方没有恢复需求后才能执行。

9.8 容量管理的常见误判信号

误判

真相

排查建议

"存储账户已删除,容量应该释放了"

删除账户还在保留期内,物理容量未释放

检查保留期配置 + 强制回收

"租户配额满了就是 Scale Unit 满了"

租户配额满只是租户视角上限,管理员可调整 Plan / Offer

区分租户配额 vs Scale Unit 物理容量

"卷使用率 90% 是告警"

告警阈值因版本 / 配置而异

检查当期版本告警阈值配置

"卷间迁移可以热迁移"

当前只支持离线迁移

必须 VM 停机

"保留期 0 = 立即删除账户"

0 = 立即释放物理容量,账户本身不可恢复

区分"账户删除" vs "容量释放"


10. 运维红线与下篇小结

10.1 容量管理运维红线

红线

原因

不要在生产时段做卷间迁移

离线迁移导致 VM 不可用

不要绕过 Plan / Offer 配额

破坏多租户治理

不要假设保留期默认是某个固定值

默认 15 天可配置,要确认当期配置

不要把托管磁盘转换 cmdlet 当作 Azure 等价工具

Azure Stack Hub 上 ConvertTo-AzVMManagedDisk 不可用

不要假设 Premium SSD 有性能保证

Azure Stack Hub 上是 cap(上限),不是 provisioned(保证)

不要假设 Azure 公有云的存储性能在 Azure Stack Hub 上线性对应

必须实测,不能假设

不要假设单 Blob 上限是固定值

5 TB 是当前硬上限,未来版本可能变化

不要假设 Table 存储可无限扩展

单表受限于单个表服务器数据库的事务速率

10.2 下篇小结

本篇以 Azure Stack Hub 存储服务管理为主线,完成了从托管磁盘到容量管理的完整图谱。

核心要点回顾

  1. 托管磁盘自 azs-1808 起是默认:创建 VM 时默认使用托管磁盘,把"存储账户"中间层对租户屏蔽

  2. 托管磁盘与 Azure 公有云的差异明确:最大 1023 GiB / BitLocker 加密 / 2300 IOPs & 145 MB/s cap(不是保证)/ 多个功能尚未支持

  3. Blob 上传两种模式清晰:单次 PutBlob(≤256 MB)适合小对象;PutBlockList(最多 50,000 块 × 100 MB = 5 TB)适合大对象

  4. Table 存储伸缩边界明确:PK + RK 最大 800 字节;单表受限于单个表服务器数据库的事务速率

  5. Queue 是轻量级消息队列:64 KB 消息大小,不替代 Service Bus / Event Hubs / Kafka

  6. 容量管理五类动作明确:分配 / 监控 / 配额 / 迁移(离线)/ 保留(默认 15 天,可配 0~9999 天)

本系列下一篇预告

Azure Stack Hub 系列下一篇:Azure Stack Hub 容量规划专题 —— 物理容量 / 内存 / 计算容量的数学推导与 Capacity Planner 工具使用。


本系列上一篇:[上篇] Azure Stack Hub 存储服务:从 S2D 物理栈到租户服务全景

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值