块存储 ABS
产品介绍
块存储ABS(SenseCore AI Block Storage)是一款低时延、高性能、持久性、高可靠的分布式块存储 ,可以作为云服务器和弹性容器服务的可扩展硬盘使用,保护数据的安全。
产品优势
极致的云盘性能,高可靠设计,管理方式丰富,弹性扩容,多方位满足业务需求。
1.数据持久性
- 云盘基于多副本机制,多重冗余机制,避免数据单点故障风险,提供99.9999999%可靠性,确保数据安全可靠。
2.动态扩容
- 单盘最大支持32TB,容量和性能均可弹性扩展,满足业务不断增长的需求。
3.丰富管理
- 提供控制台、OpenAPI等多种管理方式,通过简单操作即可使用及管理云盘,可有效降低人工成本的投入。
产品功能
1.丰富的存储类型
- 云盘采用NVMe SSD存储介质,根据不同的业务场景,提供多种云盘规格。
2.企业级块存储特性
- 分布式多副本机制,为云盘提供稳定、训效的数据访问能力,避免单点故障带来的数据丢失问题。
3.极致性能
- 云盘提供单盘高达400MB/s吞吐和微秒的时延能力。
产品规格
| 规格 | SSD云盘 | 高效云盘 |
|---|---|---|
| 单盘容量范围(GB) | 20~32,768 | 20~32,768 |
| 单盘IOPS性能计算公式 | min{1,800+30*容量, 25,000} 最大25000 | min{1,800+8*容量, 5,000} 最大5000 |
| 单盘吞吐量性能计算公式(MB/s) | min{120+0.5*容量, 400} 最大400MB/s | min{100+0.15*容量, 180}最大180MB/s |
| 随机写平均延时(ms) block 4K | 0.5~2 | 1~3 |
应用场景
1.数据库应用
ABS采用 NVMe 标准SSD硬件,具有高性能、低延时的特点,充分满足数据库高性能存储要求。
- 单盘最高400MB/s吞吐量和微秒级时延。
- 盘最大容量达32TB
2.开发测试场景
ABS多重冗余机制、弹性扩容、高性价比等优势,保证开发测试环境稳定可靠与高质量存储。
- 数据可靠性达9个9。
- 磁盘随容量增长,性能线性增长。
- 单盘容量最大32TB
3.数据保护
实例中运行的关键业务,数据误删或者被恶意篡改,需要进行数据恢复 。
-根据实际业务保护需求,创建不同的快照策略,当云盘发生错误时,通过快照功能进行秒级回滚。
计费说明
1.计费方式
包年包月:包年包月是一种先付费后使用的计费方式,通过包年包月,您可以提前预留资源,并享受更大的价格优惠。
按量计费:按量付费是一种先使用后付费的计费方式。
| 计量项 | 计量方式 | 计费方式 |
|---|---|---|
| 云盘容量 | 容量规格和购买时长 | 包年包月:云盘容量(GiB) × 云盘单价 × 购买时长。按量付费:云盘容量(GiB) × 云盘单价 × 计费时长 |
2.使用规则
- 云盘创建成功后开始计费,与是否挂载使用无关。
3.到期提醒
- 包年包月服务到期前5天、前3天、前1天通过站内信消息通知用户。
4.欠费处理
- 费用到期后24小时内资源只读;到期后14天内保留数据但不可读取;到期15天后自动销毁数据,数据不可恢复。
5.强制退订
- 云盘在云管订单侧强制退订,数据将会删除,不可恢复,请提前做好数据备份。
快速入门
本章节介绍如何快速上手ABS块存储,包括创建云盘、挂载、分区格式化。
步骤一: 创建云盘
1.登录云服务控制台(https://console.sensecore.cn )

2.在左侧产品导航栏点击 块存储ABS,进入到云盘的控制台。

3.点击创建云盘按钮,进入到购买页,选择云盘类型,填写容量(容量范围:20-32768GB)和显示名称(支持中文字符、英文字母、数字及下划线“_",1-63个字符,中英文或数字开头)
4.确认填写信息无误后,点击 立即购买。
步骤二:挂载云盘
1.打开云盘控制台
2.在云盘列表页面,选择目标云盘,在操作字段点击 挂载。

3.弹出挂载对话框,选择目标实例,点确认,即可挂载成功。

步骤三:分区格式化
以linux操作系统为例,当云主机挂载新云盘后,进行分区格式化云盘操作,分区形式默认设置为MBR。
1.登录linux实例
2.执行命令,查看新橧的数据盘信息。
fdisk -l
输出的磁盘信息中,表示当前的云服务器有两块磁盘,/dev/sda是系统盘,/dev/sdc是新增数据盘。
3.执行fdisk新增数据盘命令,开始进行数据盘分区操作。
以新挂载的/dev/sdc为例:
fdisk /dev/sdc
回显如下信息:
[root@XXX ~]# fdisk /dev/sdc
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0xff816a4b.
Command (m for help):
4.输入n,按“Enter”,开始新建分区。
Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
表示磁盘有两种分区类型:
“p”表示主分区。
“e”表示扩展分区。
说明:
磁盘使用MBR分区形式,最多可以创建4个主分区,或者3个主分区加1个扩展分区,扩展分区不可以直接使用,需要划分成若干个逻辑分区才可以使用。
磁盘使用GPT分区形式时,没有主分区、扩展分区以及逻辑分区之分。
5.以创建一个主要分区为例,输入p,按“Enter”,开始创建一个主分区。
Select (default p): p
Partition number (1-4, default 1):
6.以分区编号选择“1”为例,输入主分区编号1,按“Enter”。
Partition number (1-4, default 1): 1
First sector (2048-41943039, default 2048):
7.以选择默认磁柱值为2050为例,按“Enter”。系统会自动提示分区可用空间的起始磁柱值和截止磁柱值,可以在该区间内自定义,或者使用默认值。起始磁柱值必须小于分区的截止磁柱值。
First sector (2048-41943039, default 2048): 2050
Last sector, +sectors or +size{K,M,G} (2050-41943039, default 41943039):
“Last sector”表示截止磁柱值,可以选择2050-41943039,默认为41943039。
8.以选择默认截止磁柱值41943039为例,按“Enter”。系统会自动提示分区可用空间的起始磁柱值和截止磁柱值,可以在该区间内自定义,或者使用默认值。起始磁柱值必须小于分区的截止磁柱值。
Last sector, +sectors or +size{K,M,G} (2050-41943039, default 41943039):
Using default value 41943039
Partition 1 of type Linux and of size 20 GiB is set
Command (m for help):
表示分区完成,即为数据盘新建了1个分区。
9.输入p,按“Enter”,查看新建分区的详细信息。
Disk /dev/sdc: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0xff816a4b
Device Boot Start End Blocks Id System
/dev/sdc1 2050 41943039 20970495 83 Linux
Command (m for help):
表示新建分区/dev/sdc1的详细信息。
10.输入w,按“Enter”,将分区结果写入分区表中。
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
说明:
如果之前分区操作有误,请输入“q”,则会退出fdisk分区工具,之前的分区结果将不会被保留。
11.执行以下命令,将新的分区表变更同步至操作系统。
partprobe
12.执行以下命令,将新建分区文件系统设为系统所需格式。
mkfs -t _文件系统格式_ /dev/sdc1
以设置文件系统为“ext4”为例:
mkfs -t ext4 /dev/sdc1
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
1310720 inodes, 5242623 blocks
262131 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2153775104
160 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
格式化需要等待一段时间,请观察系统运行状态,不要退出。
13.执行mkdir 挂载目录 命令,新建挂载目录。
mkdir /mnt/sdc
14.执行mount 磁盘分区 挂载目录 命令,将新建分区挂载到步骤13中创建的目录下。
以挂载新建分区/dev/sdc1至/mnt/sdc为例:
mount /dev/sdc1 /mnt/sdc
15.执行df -TH命令,查看挂载结果。
df -TH
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda1 ext4 43G 1.7G 39G 5% /
devtmpfs devtmpfs 4.1G 0 4.1G 0% /dev
tmpfs tmpfs 4.2G 0 4.2G 0% /dev/shm
tmpfs tmpfs 4.2G 9.1M 4.1G 1% /run
tmpfs tmpfs 4.2G 0 4.2G 0% /sys/fs/cgroup
tmpfs tmpfs 821M 0 821M 0% /run/user/0
/dev/sdb xfs 22G 34M 22G 1% /data
/dev/sdc1 ext4 22G 47M 20G 1% /mnt/sdc
表示新建分区/dev/sdc1已挂载至/mnt/sdc。
设置开机自动挂载磁盘分区
在Linux操作系统中,可以通过配置fstab文件,设置云服务器系统启动时自动挂载磁盘分区。
本文介绍如何在fstab中使用UUID来配置自动挂载磁盘分区。不采用/etc/fstab直接指定设备名,比如 /dev/sdb1的方法,因为在开机或者开启云服务器中可能会发生改,/dev/sdb1可能会变为/dev/sdb2。
前提条件:数据盘已经挂载至ECS实例。
注:UUID(universally unique identifier)是Linux系统为磁盘分区提供的唯一的标识字符串。
操作步骤:
1.登录linux实例。
2.执行blkid磁盘分区命令,查询磁盘分区的UUID。以查询磁盘分区/dev/sdc1 的UUID为例:
blkid /dev/sdc1
/dev/sdc1: UUID="0b2060d2-1235-5abc-931d-ddb0b935****" TYPE="ext4"
表示/dev/sdc1的UUID。
3.使用VI编辑器打开fstab文件。
vi /etc/fstab
4.按i,进入编辑模式,新增以下文件信息。
UUID="0b2060d2-1235-5abc-931d-ddb0b935**** /mnt/sdc ext4 defaults, errors=remount-ro 0 2
以内容上仅为示例,具体请以实际情况为准,参数说明如下:
UUID:此处填写步骤中查询到的磁盘分区的UUID。
mnt/sdc:为磁盘分区的挂载目录,可以通过df -TH命令查询。
ext4:为磁盘分区的文件系统格式, 可以通过df -TH命令查询。
defaults,errors=remount-ro:为磁盘分区的挂载选项,此处通常使用默认设置即可。
0 为Linux dump备份选项。
其中:0表示不使用Linux dump备份。现在通常不使用dump备份,此处设置为0即可。
1表示使用Linux dump备份。
命令行末尾参数 2 为fsck选项,即开机时是否使用fsck检查磁盘。
如果写0表示不检验。
挂载点为/根目录的分区,此处必须填写1。
根分区设置为1,其他分区只能从2开始,系统会按照数字从小到大依次检查下去。
5.按“ESC”后,输入:wq,按“Enter”,保存设置并退出编辑器。
6.执行umount 磁盘分区命令,卸载已挂载的分区。
以卸载/dev/sdc1为例,命令示例如下:
umount /dev/sdc1
7.执行mount -a命令,将/etc/fstab文件所有内容重新加载。
8.执行mount | grep 挂载目录命令,查询文件系统挂载信息。
以查询/dev/sdc1为例,命令示例如下:
mount | grep /mnt/sdc
/dev/sdc1 on /mnt/sdc type ext4 (rw,relatime,errors=remount-ro,data=ordered)
说明自动挂载功能生效。
取消开机自动挂载
如果您想取消开机自动挂载磁盘分区,您可以在/etc/fstab文件注释自动挂载命令。
1.执行以下命令,编辑/etc/fstab文件。
vim /etc/fstab
2.在自动挂载信息前添加#,注释开机自动挂载磁盘命令,然后保存并退出/etc/fstab文件。
# UUID=0b2060d2-1235-5abc-931d-ddb0b935**** /mnt/sdc ext4 defaults,errors=remount-ro 0 2
云盘扩容
云盘扩容步骤:
1.控制台云盘实例扩容。
打开云盘控制台-云盘列表,找到需要扩容的磁盘,在操作列选择【扩容】按钮,按照界面引导,进行容量扩容。
2.查看分区和文件系统情况。
以root用户执行以下命令,查看系统盘和数据盘情况。
fdisk -l
可以展示出当前云服务器的磁盘情况。
执行以下命令,查看已有分区的文件系统类型,Mounted on 表示文件系统的挂载点。
df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda1 ext4 43G 1.7G 39G 5% /
devtmpfs devtmpfs 4.1G 0 4.1G 0% /dev
tmpfs tmpfs 4.2G 0 4.2G 0% /dev/shm
tmpfs tmpfs 4.2G 9.1M 4.1G 1% /run
tmpfs tmpfs 4.2G 0 4.2G 0% /sys/fs/cgroup
tmpfs tmpfs 821M 0 821M 0% /run/user/0
/dev/sdb xfs 22G 34M 22G 1% /data
/dev/sdc1 ext4 22G 47M 20G 1% /mnt/sdc
3.扩容分区和文件系统
Disk label type值为dos表示MBR分区,值为gpt表示GPT分区,云盘小于2TB,可以为MBR和GPT。云盘容量大于2TB时,分区格式需要转为GPT。
执行命令安装gdisk工具。
yum install -y gdisk
Debian 9及以上版本、Ubuntu14及以上版本则执行
apt-get install -y gdisk
如果MBR分区转换为GPT分区,举例如下,可以把sdb分区转为GPT
sgdisk -g /dev/sdb
扩容分区
安装growpart命令,用于扩容分区。
yum install -y cloud-utils-growpart
通过以下命令,扩容分区,其中LC_ALL=en_US.UTF-8 growpart是环境变量设置,为了兼容中文操作系统的字符编码
LC_ALL=en_US.UTF-8 growpart /dev/sdc 1
扩容文件系统
需要扩容ext4文件系统
resize2fs /dev/sdc1
需要扩容xfs文件系统
xfs_growfs /mnt 其中/mnt表示文件系统的挂载点.
最后执行df -Th查看分区和文件系统是否扩容成功。
CSI动态PVC使用指南
CSI动态PVC功能使用:支持在裸金属 Kubernetes 集群中,通过 StorageClass 动态创建 PVC,由 CSI 自动订购 ABS 云盘,并通过 Pod 挂载使用。按量计费仅走 CreateDisk;按包月或包年预付费,通过余额或资源包方式。
CSI 支持 CreateVolume 动态供给。本文档说明 Secret、StorageClass、PVC 的配置方式及订购、挂载、退订流程。
1. 前置条件
动态 PVC 需要 v2.1.2+ 版本的 ABS 裸金属 CSI的镜像包与 Helm 包下载。
1.1 初始化 nvme-cli
# 安装 nvme_tcp 内核模块
lsmod | grep nvme_tcp
modprobe nvme_tcp
echo nvme-tcp | sudo tee /etc/modules-load.d/nvme-tcp.conf
# 安装 nvme-cli
nvme --version
# 如果没有,需要安装
# Ubuntu
sudo apt update && sudo apt install -y nvme-cli
# CentOS / Rocky Linux
sudo yum install -y nvme-cli
# 或者在新版本中使用 dnf
sudo dnf install -y nvme-cli
# hostnqn 初始化
cat /etc/nvme/hostnqn
# 仅当不存在时创建
sudo mkdir -p /etc/nvme
sudo nvme gen-hostnqn | sudo tee /etc/nvme/hostnqn
# multipath 设置
touch /etc/udev/rules.d/71-nvme-io-policy.rules
echo 'ACTION=="add|change",SUBSYSTEM=="nvme-subsystem",ATTR{iopolicy}="round-robin"' >> /etc/udev/rules.d/71-nvme-io-policy.rules
udevadm control --reload-rules
# 用于新规则对已有 nvme 设备生效,没有 nvme 设备时可以不执行
udevadm trigger --subsystem-match=nvme-subsystem --action=change
1.2 下载离线镜像包并导入
若未安装 ctr 或 containerd,可先安装:
containerd --version
ctr version
# 若未安装
sudo apt update
sudo apt install -y containerd
containerd --version
ctr version
sudo systemctl enable --now containerd
sudo systemctl status containerd
# 26.06.30 版本,支持动态 PVC
wget https://quark.aoss.cn-sh-01.sensecoreapi-oss.cn/abs/release/v2.1.2/abs-baremetal-csi-images-bundle.tar
# sha256: 6844a85de1dd2cf71ae4bc04cbfba1a747202ad1cd341e3fa01fd2e5344e5706
sudo ctr -n k8s.io images import abs-baremetal-csi-images-bundle.tar
sudo ctr -n k8s.io images ls
1.3 下载Helm包,部署ABS裸金属CSI
若未安装 helm,可先安装:
helm version
# 若未安装
wget https://get.helm.sh/helm-v3.15.4-linux-amd64.tar.gz
tar -zxvf helm-v3.15.4-linux-amd64.tar.gz
sudo mv linux-amd64/helm /bin/
helm version
# 26.06.30 版本支持动态 PVC
wget https://quark.aoss.cn-sh-01.sensecoreapi-oss.cn/abs/release/v2.1.2/abs-baremetal-csi-charts-2.1.2.tgz
# sha256: 03b9ec814c4b923c072acae62aee361739dc69ccca03c4fb5ada95512da5d70e
helm install abs-baremetal-csi ./abs-baremetal-csi-charts-2.1.2.tgz --namespace kube-system
# 或者解压后,用文件夹部署
helm install abs-baremetal-csi ./prod-quark-abs-v2-csi-charts.chart --namespace kube-system
部署完成后,确认 CSI 相关 Pod 均为 Running:
kubectl get pod -n kube-system | grep abs-baremetal-csi
1.4 更新服务
更新前请修改 values.yaml 中的 mounterVersion;仅当版本与当前环境有变化时,CSI 服务才会实际更新。
# 用目录包更新
helm upgrade --install abs-baremetal-csi ./prod-quark-abs-v2-csi-charts.chart -n kube-system
# 或用 tgz 包更新
helm upgrade --install abs-baremetal-csi ./abs-baremetal-csi-charts-2.1.2.tgz -n kube-system
1.5 删除服务
helm uninstall abs-baremetal-csi -n kube-system
2. 使用
2.1 创建 Secret
在控制台上查看 Access Key,并通过 OpenAPI 获取 Secret Key。AKSK 与 endpoint 配置在 Secret 的 stringData 中,由 CSI 标准 secret 注解引用。
apiVersion: v1
kind: Secret
metadata:
name: abs-aksk-secret
namespace: kube-system
type: Opaque
stringData:
accessKey: <YOUR_ACCESS_KEY>
secretKey: <YOUR_SECRET_KEY>
endpoint: <YOUR_ENDPOINT>
kubectl create -f abs-secret.yaml
区域 endpoint 与 zone 对照:
| 可用区 | endpoint | zone |
|---|---|---|
| sh02a | cn-sh-02.sensecoreapi.cn | cn-sh-02a |
| yc01a | cn-yc-01.sensecoreapi.cn | cn-yc-01a |
2.2 创建 StorageClass
将创建云盘的参数填入 StorageClass;容量在 PVC 中指定,最小 20G,最大 32768G。
参数说明:
- 可用区
zone、订阅subscriptionName、资源组resourceGroupName、SKUskuID或 资源包originalId须配置在 StorageClass 中。skuID与originalId二选一;若两者同时提供,以originalId(合同包)绑定的 SKU 为准。 - 购买时长
billingCycleNumber、是否续订autoRenew:按月 / 按年预付费场景需要填写,按量计费不需要;可在 StorageClass 或 PVC 注解中填写,PVC 优先级更高。 - 按月 / 按年预付费须走 Pay 支付步骤,付款方式二选一:
- 余额支付:仅提供预付费 SKU 的
skuID; - 资源包支付:提供
originalId(合同包 ID),SKU 由资源包绑定。
- 余额支付:仅提供预付费 SKU 的
- Secret 引用须同时配置 provisioner-secret(CreateVolume / DeleteVolume)与 node-publish-secret(NodePublishVolume)。
| 字段 | 取值或单位 | StorageClass | PVC | CSI 校验策略 |
|---|---|---|---|---|
| 可用区 | 如 cn-sh-02a | zone,必需 | — | 缺省则报错 |
| 容量 | GiB,最小 20G,最大 32768G | — | resources.requests.storage,必需 | 小于 20G 或大于 32768G 则报错 |
| 资源组 | — | resourceGroupName,必需 | — | 缺省则报错 |
| 订阅 | — | subscriptionName,必需 | — | 缺省则报错 |
| SKU / 资源包 | — | skuID 与 originalId 二选一;originalId 优先。skuID 决定计费模式;预付费时 originalId 存在则为资源包支付,否则余额支付 | — | 两者皆缺则报错;按量不走 Pay;预付费须 Pay |
| 购买时长 | 月 / 年 | billingCycleNumber,可选 | 注解 csi.abs.sensecore.com/billingCycleNumber,可选,优先 | 按量计费不需要;预付费且 SC/PVC 均未提供则报错 |
| 是否续订 | bool | autoRenew,可选 | 注解 csi.abs.sensecore.com/autoRenew,可选,优先 | 按量计费不需要;预付费 SC/PVC 均未提供时默认为不续订 |
| provisioner secret | — | csi.storage.k8s.io/provisioner-secret-name / -namespace,必需 | — | 缺省则报错 |
| node-publish secret | — | csi.storage.k8s.io/node-publish-secret-name / -namespace,必需 | — | 缺省则报错 |
按量计费示例(abs-baremetal-usage-sc.yaml):
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: abs-baremetal-usage-sc
provisioner: csi.abs.sensecore.com
# 出于数据安全,reclaimPolicy 默认为 Retain;删除 PVC 时 PV 保留,不触发删盘。
# 需要自动回收 PV 并退订云盘时,使用 Delete。
reclaimPolicy: Retain
volumeBindingMode: Immediate
allowVolumeExpansion: false
parameters:
zone: <YOUR_ZONE>
subscriptionName: <YOUR_SUBSCRIPTION_NAME>
resourceGroupName: <YOUR_RESOURCE_GROUP_NAME>
skuID: <YOUR_USAGE_SKU_ID>
csi.storage.k8s.io/provisioner-secret-name: abs-aksk-secret
csi.storage.k8s.io/provisioner-secret-namespace: kube-system
csi.storage.k8s.io/node-publish-secret-name: abs-aksk-secret
csi.storage.k8s.io/node-publish-secret-namespace: kube-system
余额支付示例(按月 / 按年预付费,abs-baremetal-balance-sc.yaml):
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: abs-baremetal-balance-sc
provisioner: csi.abs.sensecore.com
# 出于数据安全,reclaimPolicy 默认为 Retain;删除 PVC 时 PV 保留,不触发删盘。
# 需要自动回收 PV 并退订云盘时,使用 Delete。
reclaimPolicy: Retain
volumeBindingMode: Immediate
allowVolumeExpansion: false
parameters:
zone: <YOUR_ZONE>
subscriptionName: <YOUR_SUBSCRIPTION_NAME>
resourceGroupName: <YOUR_RESOURCE_GROUP_NAME>
skuID: <YOUR_PREPAID_SKU_ID>
billingCycleNumber: "1"
autoRenew: "true"
csi.storage.k8s.io/provisioner-secret-name: abs-aksk-secret
csi.storage.k8s.io/provisioner-secret-namespace: kube-system
csi.storage.k8s.io/node-publish-secret-name: abs-aksk-secret
csi.storage.k8s.io/node-publish-secret-namespace: kube-system
资源包支付示例(按月 / 按年预付费,abs-baremetal-contract-sc.yaml):
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: abs-baremetal-contract-sc
provisioner: csi.abs.sensecore.com
reclaimPolicy: Retain
volumeBindingMode: Immediate
allowVolumeExpansion: false
parameters:
zone: <YOUR_ZONE>
subscriptionName: <YOUR_SUBSCRIPTION_NAME>
resourceGroupName: <YOUR_RESOURCE_GROUP_NAME>
billingCycleNumber: "1"
autoRenew: "true"
originalId: "<YOUR_CONTRACT_PACK_ID>"
csi.storage.k8s.io/provisioner-secret-name: abs-aksk-secret
csi.storage.k8s.io/provisioner-secret-namespace: kube-system
csi.storage.k8s.io/node-publish-secret-name: abs-aksk-secret
csi.storage.k8s.io/node-publish-secret-namespace: kube-system
kubectl create -f storageclass.yaml
2.3 创建 PVC,订购云盘
创建动态 PVC 时会自动创建 PV,并触发 CSI CreateVolume。按量计费仅 CreateDisk;按月 / 按年预付费在 CreateDisk 后另走 Pay。
按量计费 PVC 示例:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: abs-baremetal-usage-pvc
namespace: default
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 20Gi
volumeMode: Filesystem
storageClassName: abs-baremetal-usage-sc
预付费 PVC 示例(billingCycleNumber / autoRenew 可在 PVC 注解中覆盖 StorageClass):
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: abs-baremetal-dynamic-pvc
namespace: default
annotations:
csi.abs.sensecore.com/billingCycleNumber: "2"
csi.abs.sensecore.com/autoRenew: "false"
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 20Gi
volumeMode: Filesystem
storageClassName: abs-baremetal-balance-sc
kubectl create -f pvc.yaml
kubectl get pvc
PVC 绑定 PV 后,可在控制台云盘列表看到新购卷及新购成功通知。云盘资源名称为 abs-{pvname},显示名称为 PV 名称(与 PVC 动态生成的 PV 名一致)。
2.4 挂载到 Pod
挂载效果与静态 PVC 一致。示例 Pod:
apiVersion: v1
kind: Pod
metadata:
name: abs-baremetal-csi-dynamic-pod
namespace: default
spec:
# nodeName: host-172-31-16-12
containers:
- name: app
image: registry.sensetime.com/sensecore-quark/cephcsi-test:3.20.2
command: ["sleep", "3600"]
volumeMounts:
- name: data
mountPath: /mnt/test
volumes:
- name: data
persistentVolumeClaim:
claimName: abs-baremetal-dynamic-pvc
若使用示例测试镜像,需先导入离线测试镜像包(见 RFD 0006 2.3 节)。
kubectl create -f pod.yaml
kubectl exec -it abs-baremetal-csi-dynamic-pod -n default -- /bin/sh
df -h /mnt/test
Pod 运行后,容器内可看到挂载的云盘;宿主机上可看到 NVMe 连接(nvme list / nvme list-subsys)。
2.5 删除 Pod,卸载卷
kubectl delete -f pod.yaml
卸载效果与静态 PVC 一致:云盘从节点卸载,宿主机 NVMe 连接断开。
2.6 删除 PVC,退订云盘
kubectl delete -f pvc.yaml
- StorageClass
reclaimPolicy: Delete时,删除 PVC 会回收 PV,并触发 CSIDeleteVolume退订云盘。 reclaimPolicy: Retain时,删除 PVC 后 PV 保留,不会删除 ABS 侧云盘;需手动清理 PV 或在控制台退订。
可在控制台确认云盘已退订(Delete 策略下)。
3. 注意事项
- Secret 中的
endpoint与 StorageClasszone须与目标区域、可用区一致。 - 各节点需提前完成 nvme-cli、hostnqn 及 multipath 初始化(见1.1)。
- 删除云盘前须确保无 Pod 挂载;若 ABS 侧仍有残留 Attachment,
DeleteVolume会报错。 - 使用其他用户的 AKSK 无法订购或挂载该用户名下的卷(鉴权由 OpenAPI 保障)。
用户指南
本章节主要帮助用户了解如何在控制台管理云盘:主要包括云盘相关状态、云盘类型、云盘容量、创建时间、付费类型等基础信息的查看;云盘基础操作;云盘性能展示等。
1.云盘列表
在控制台的云盘列表页面,可以选择不同的数据中心,查看用户当前数据中心所有已创建的云盘,在当前页面可以直观查看到云盘的相关基础信息。同时支持使用云盘名称、云盘ID等过滤条件查看指定的云盘内容。
在云盘列表,可以创建云盘以及实现对已创建云盘的管理功能。通过点击某个云盘名称/ID,可以进入该云盘的详情页查看详细信息和性能监控。通过点击操作栏的按钮,可以实现云盘的挂载、卸载和释放。
云盘列表展示

点击【挂载】可以将当前云盘挂载至实例,为实例提供可扩展的高可用存储支持

点击【卸载】可以将当前已挂载的云盘从实例上卸载,以支持释放云盘或者挂载至同一区域的其他实例操作

点击【释放】可以将当前未挂载的云盘上的数据全部释放,同时云盘停止计费,该云盘信息从云盘列表中删除

2.云盘详情
在控制台的云盘列表页面,选中目标云盘,点击云盘名称进入详情页面,详情分为云盘详情、性能监控两个模块,用户可以查看该云盘更详细的信息。
云盘详情展示
云盘详情可以查看当前云盘的资源组、创建时间、以及挂载实例的详细信息。

性能监控展示
展示云盘的IOPS、吞吐及延迟信息
3.快照功能
创建快照
目前支持云盘快照功能,当前为快照试用期间,所以创建快照为免费试用。当云盘的数据受损时,可以通过快照进行回滚云盘恢复快照数据。
功能入口:云盘控制台-快照-快照列表
点击【创建云盘快照】弹出创建云盘快照对象框,选择云盘名称/ID下拉列表里已创建的云盘,填写快照名称,点击确认后,在快照列表生成一条快照信息。

回滚云盘
当云盘数据受损,需要通过快照进行回滚时,在快照列表页的操作列,点击【回滚云盘】弹出回滚云盘对话框,点击确认后,开始进行回滚操作。

删除快照
快照不需要保留,进行删除时,点击操作列的【删除快照】,弹出对话框,进行【确认】后,快照删除。
常见问题
1.什么是块存储ABS?
块存储ABS(SenseCore AI Block Storage)是一款低时延、持久性、高可靠的块级随机存储,可以作为云服务器和弹性容器服务的可扩展硬盘使用,保护数据的安全。
2.什么是云盘?1台云主机实例可以挂载多少云盘?
云盘是为云服务器云主机或弹性容器产品提供的块存储产品,具有低时延、高性能、持久性、高可靠的分布式块存储。1台云主机实例最多可挂载1块系统盘和64块数据盘。
3.实例的挂载点是什么?
挂载点是云服务器上盘在磁盘控制器总线上的位置。所选配的设备名,在Linux操作系统下与磁盘设备号对应,在Windows操作系统下与磁盘管理器中的磁盘顺序一致。
4.云盘数量是否有上限?
没有上限。