此操作用來創建克隆卷。
前提條件:用于創建克隆卷的快照,其狀態必須是Normal。
說明
系統支持的最大克隆卷數:100000。
單個快照可創建的最大克隆卷數:512。
系統支持的最大克隆深度:16。
請求語法
單機版
POST /rest/v1/block/lun/clone HTTP/1.1
Date:date
Content-Type: application/json; charset=utf-8
Content-Length: length
Host: ip:port
Authorization: authorization
{
"lunName": lunName,
"snapshotName": snapshotName,
"targetName": targetName,
"capacity": capacity,
"config": {
"sectorSize": sectorSize,
"writePolicy": writePolicy,
"qosPolicy": {
"qosName": qosName,
"IOPS": IPOS,
"readIOPS": readIOPS,
"writeIOPS": writeIOPS,
"Bps": Bps,
"readBps": readBps,
"writeBps": writeBps,
"IOPSBurst": IOPSBurst,
"readIOPSBurst": readIOPSBurst,
"writeIOPSBurst": writeIOPSBurst,
"BpsBurst": BpsBurst,
"readBpsBurst": readBpsBurst,
"writeBpsBurst": writeBpsBurst,
"IOPSBurstSecs": IOPSBurstSecs,
"readIOPSBurstSecs": readIOPSBurstSecs,
"writeIOPSBurstSecs": writeIOPSBurstSecs,
"BpsBurstSecs": BpsBurstSecs,
"readBpsBurstSecs": readBpsBurstSecs,
"writeBpsBurstSecs": writeBpsBurstSecs
},
"path": path
}
}集群版
POST /rest/v1/block/lun/clone HTTP/1.1
Date:date
Content-Type: application/json; charset=utf-8
Content-Length: length
Host: ip:port
Authorization: authorization
{
"lunName": lunName,
"snapshotName": snapshotName,
"targetName": targetName,
"capacity": capacity,
"config": {
"localStorageClass": localStorageClass,
"minReplica": minReplica,
"ECfragmentSize": ECfragmentSize,
"redundancyOverlap": redundancyOverlap,
"sectorSize": sectorSize,
"cachePool": poolName,
"pool": poolName,
"highAvailability": highAvailability,
"writePolicy": writePolicy,
"serverAffinity": {
"autoFailback": autoFailback,
"priority": [
SeverID,ServerID…
]
},
"qosPolicy": {
"qosName": qosName,
"IOPS": IPOS,
"readIOPS": readIOPS,
"writeIOPS": writeIOPS,
"Bps": Bps,
"readBps": readBps,
"writeBps": writeBps,
"IOPSBurst": IOPSBurst,
"readIOPSBurst": readIOPSBurst,
"writeIOPSBurst": writeIOPSBurst,
"BpsBurst": BpsBurst,
"readBpsBurst": readBpsBurst,
"writeBpsBurst": writeBpsBurst,
"IOPSBurstSecs": IOPSBurstSecs,
"readIOPSBurstSecs": readIOPSBurstSecs,
"writeIOPSBurstSecs": writeIOPSBurstSecs,
"BpsBurstSecs": BpsBurstSecs,
"readBpsBurstSecs": readBpsBurstSecs,
"writeBpsBurstSecs": writeBpsBurstSecs
}
}
}參數 | 類型 | 描述 | 是否必須 |
|---|---|---|---|
lunName | String | 克隆卷名稱。 | 是 |
| snapshotName | String | 指定克隆卷關聯的快照名稱。 | 是 |
| targetName | String | 指定克隆卷關聯的iSCSI target名稱,可以跟源卷的iSCSI target不同。 說明 創建卷時,如果指定的target名稱不存在,那么同時創建iSCSI target,新創建iSCSI target的回收策略默認為Delete。 取值:長度范圍是1~16,可以由小寫字母、數字、句點(.)和短橫線(-)組成,且僅支持以字母或數字開頭。 | 是 |
| capacity | Integer | 指定克隆卷的容量。 | 否 |
| config.localStorageClass | String | 指定克隆卷的冗余模式(僅集群版支持)。 注意 如果設置了克隆卷的minReplica或redundancyOverlap,則必須同時指定該參數。 取值:
說明(以下場景均為集群可用的前提下):
| 否 |
config.minReplica | Integer | 指定克隆卷的最小副本數(僅集群版支持)。 注意 如果指定該參數,則必須指定克隆卷的localStorageClass。 對于副本模式的卷,假設卷副本數為X,最小副本數為Y(Y必須≤X),該卷每次寫入時,至少Y份數據寫入成功,才視為本次寫入成功。對于EC N+M模式的卷,假設該卷最小副本數設置為Y(必須滿足N≤Y≤N+M),必須滿足總和至少為Y的數據塊和校驗塊寫入成功,才視為本次寫入成功。 取值:
| 否 |
config.ECfragmentSize | Integer | 指定克隆卷的糾刪碼模式分片大小(僅集群版支持)。 | 否 |
| config.redundancyOverlap | Integer | 指定克隆卷的折疊副本數(僅集群版支持)。在數據冗余模式下,同一份數據的不同副本/分片默認分布在不同的故障域,當故障域損壞時,允許根據卷的冗余折疊原則,將多份數據副本放在同一個故障域中,但是分布在不同的path上。 注意 如果存儲池故障域級別為path,此參數不生效。如果指定該參數,則必須指定克隆卷的localStorageClass。 取值:
| 否 |
| config.sectorSize | Integer | 指定克隆卷的扇區大小。 說明 扇區大小的選取:根據自身業務場景,一般情況下,單次I/O操作的數據大小大于或接近4KiB,則推薦選擇4096;單次I/O操作的數據大小接近512Bytes,則推薦選擇512。如果對接VMware等虛擬化平臺,則推薦選擇512。 | 否 |
| config.cachePool | String | 指定緩存存儲池(僅集群版支持)。 注意
| 否 |
| config.pool | String | 指定存儲池(僅集群版支持)。 注意
| 否 |
| config.highAvailability | String | 指定克隆卷的高可用類型(僅集群版支持)。
默認值為源卷的高可用類型。 | 否 |
| config.writePolicy | String | 指定克隆卷的寫策略。
默認為源卷的寫策略。 | 否 |
| config.serverAffinity | Object | 卷主備分布優先級設置,詳見“表1 請求參數config.serverAffinity說明”。 | 否 |
| config.qosPolicy | Object | 卷關聯的QoS策略信息,詳見“表2 請求參數config.qosPolicy說明”。 | 否 |
| config.path | String | 指定存儲克隆卷數據的數據目錄(僅單機版支持)。 | 否 |
表1 請求參數config.serverAffinity說明
| 參數 | 類型 | 描述 | 是否必須 |
|---|---|---|---|
autoFailback | String | 是否根據指定的克隆卷主備分布優先級自動進行主備切換(僅集群版支持),即針對卷主備狀態,當高優先級的服務器恢復正常后,是否自動進行主備狀態切換。
默認值為Enabled。 | 否 |
priority | Array of string | 指定卷主備分布優先級的服務器ID(僅集群版支持),系統根據指定的服務器ID順序來選擇卷的主備IQN。可以指定一個或者多個服務器ID,以英文逗號分開。 | 否 |
表2 請求參數config.qosPolicy說明
| 參數 | 類型 | 描述 | 是否必須 |
|---|---|---|---|
| qosName | String | 指定QoS策略名稱。 說明 創建卷時,如果指定QoS策略名稱不存在,那么同時創建QoS策略,新創建的QoS策略的回收策略默認為Delete。 對于集群版,不指定QoS策略時:
取值:長度范圍1~64,只能由字母、數字和短橫線(-)組成,區分大小寫,且僅支持以字母或數字開頭。 注意
| 是 |
| IOPS | Long | 每秒能夠進行讀寫操作次數的最大值。 取值:取值范圍為[-1, 999999999],默認值為-1。-1表示不限制。 | 否 |
| readIOPS | Long | 每秒能夠進行讀操作次數的最大值。 取值:取值范圍為[-1, 999999999],默認值為-1。-1表示不限制。 | 否 |
| writeIOPS | Long | 每秒能夠進行寫操作次數的最大值。 取值:取值范圍為[-1, 999999999],默認值為-1。-1表示不限制。 | 否 |
| Bps | Long | 每秒可傳輸數據量的最大值。 取值:取值范圍為[-1, 4096000000000],默認值為-1,單位是Bytes/s。-1表示不限制。 | 否 |
| readBps | Long | 讀帶寬上限。 取值:取值范圍為[-1, 4096000000000],默認值為-1,單位是Bytes/s。-1表示不限制。 | 否 |
| writeBps | Long | 寫帶寬上限。 取值:取值范圍為[-1, 4096000000000],默認值為-1,單位是Bytes/s。-1表示不限制。 | 否 |
| IOPSBurst | Long | 使用Burst功能時,每秒能夠進行讀寫操作次數的最大值。 取值:只有當IOPS大于等于1時,此項設置為-1或(IOPS, 999999999]內的正整數方可生效。默認值為-1,表示不限制。 | 否 |
| readIOPSBurst | Long | 使用Burst功能時,每秒能夠進行讀操作次數的最大值。 取值:只有當readIOPS大于等于1時,此項設置為-1或(readIOPS, 999999999]內的正整數方可生效。默認值為-1,表示不限制。 | 否 |
| writeIOPSBurst | Long | 使用Burst功能時,每秒能夠進行寫操作次數的最大值。 取值:只有當writeIOPS大于等于1時,此項設置為-1或(writeIOPS, 999999999]內的正整數方可生效。默認值為-1,表示不限制。 | 否 |
| BpsBurst | Long | 使用Burst功能時,每秒可傳輸的數據量最大值。 取值:只有當Bps大于等于1時,此項設置為-1或(Bps, 4096000000000]內的正整數方可生效,默認值為-1,單位是Bytes/s。-1表示不限制。 | 否 |
| readBpsBurst | Long | 使用Burst功能時,讀帶寬上限。 取值:只有當readBps大于等于1時,此項設置為-1或(readBps, 4096000000000]內的正整數方可生效,默認值為-1,單位是Bytes/s。-1表示不限制。 | 否 |
| writeBpsBurst | Long | 使用Burst功能時,寫帶寬上限。 取值:只有當writeBps大于等于1時,此項設置為-1或(writeBps, 4096000000000]內的正整數方可生效,默認值為-1,單位是Bytes/s。-1表示不限制。 | 否 |
| IOPSBurstSecs | Long | 使用Burst功能時,按照Burst上限的能力進行讀寫操作所能持續的時間。 注意 只有在IOPS Burst功能啟用時,此配置才生效。 取值:取值范圍為[1, 999999999],默認值為1,單位是秒。 | 否 |
| readIOPSBurstSecs | Long | 使用Burst功能時,按照Burst上限的能力進行讀操作所能持續的時間。 注意 只有在read IOPS Burst功能啟用時,此配置才生效。 取值:取值范圍為[1, 999999999],默認值為1,單位是秒。 | 否 |
| writeIOPSBurstSecs | Long | 使用Burst功能時,按照Burst上限的能力進行寫操作所能持續的時間。 注意 只有在write IOPS Burst功能啟用時,此配置才生效。 取值:取值范圍為[1, 999999999],默認值為1,單位是秒。 | 否 |
| BpsBurstSecs | Long | 使用Burst功能時,按照Burst上限的流量能力所能持續的時間。 注意 只有在Bps Burst功能啟用時,此配置才生效。 取值:取值范圍為[1, 999999999],默認值為1,單位是秒。 | 否 |
| readBpsBurstSecs | Long | 使用Burst功能時,按照Burst上限的讀流量能力所能持續的時間,單位是秒。 注意 只有在read Bps Burst功能啟用時,此配置才生效。 取值:取值范圍為[1, 999999999],默認值為1,單位是秒。 | 否 |
| writeBpsBurstSecs | Long | 使用Burst功能時,按照Burst上限的寫流量能力所能持續的時間。 注意 只有在write Bps Burst功能啟用時,此配置才生效。 取值:取值范圍為[1, 999999999],默認值為1,單位是秒。 | 否 |
響應結果
| 名稱 | 類型 | 描述 |
|---|---|---|
| iSCSITargets | Array of iSCSITarget | iSCSI target屬性集合,詳見“表3 響應參數iSCSITarget說明”。 |
| cloneDepth | Integer | 克隆卷的深度。 |
表3 響應參數iSCSITarget說明
| 名稱 | 類型 | 描述 |
|---|---|---|
iqn | String | iSCSI target IQN。 |
| status | String | 克隆卷對應的Target的狀態:
|
| ips | Array of ip | iSCSI target的IP屬性集合,詳見“表4 響應參數ip說明”。 |
| serverId | String | 服務器ID。 |
表4 響應參數ip說明
| 名稱 | 類型 | 描述 |
|---|---|---|
| ip | String | iSCSI target的IP。 |
| port | Integer | iSCSI target的端口號。 |
請求示例1
單機版:創建克隆卷luna1-C2。
POST /rest/v1/block/lun/clone HTTP/1.1
Date: Tue, 11 Mar 2025 06:55:43 GMT
Content-Type: application/json; charset=utf-8
Authorization: HBlock userName:signature
Connection: keep-alive
Content-Length: 211
Host:192.168.0.66:1443
{
"lunName": "luna1-C2",
"snapshotName": "luna1-snap4",
"targetName": "targeta",
"capacity": 500,
"config": {
"sectorSize": 512,
"writePolicy": "WriteThrough"
}
}響應示例1
HTTP/1.1 200 OK
x-hblock-request-id: 1e3c374dc4044830828d69d3657d996a
Connection: keep-alive
Content-Length: 172
Date: Tue, 11 Mar 2025 06:55:43 GMT
Content-Type: application/json;charset=utf-8
Server: HBlock
{
"data": {
"iSCSITargets": [
{
"iqn": "iqn.2012-08.cn.ctyunapi.oos:targeta.1",
"status": "Active",
"ips": [
{
"ip": "192.168.0.66",
"port": 3260
}
],
"serverId": "hblock_1"
}
],
"cloneDepth": 1
}
}請求示例2
集群版:創建克隆卷lun02-clone-6。
POST /rest/v1/block/lun/clone HTTP/1.1
Date: Tue, 11 Mar 2025 06:41:03 GMT
Content-Type: application/json; charset=utf-8
Authorization: HBlock userName:signature
Connection: keep-alive
Content-Length: 559
Host:192.168.0.64:1443
{
"lunName": "lun02-clone-6",
"snapshotName": "lun02-snap20250304170942",
"targetName": "target02",
"capacity": 500,
"config": {
"localStorageClass": "EC 2+1",
"ECfragmentSize": 1024,
"sectorSize": 512,
"cachePool": "default",
"pool": "pool2",
"highAvailability": "ActiveStandby",
"writePolicy": "WriteThrough",
"serverAffinity": {
"autoFailback": "Enabled",
"priority": [
"hblock_1"
]
}
}
}響應示例2
HTTP/1.1 200 OK
x-hblock-request-id: 379a264ec280457ea92a44ba3e0413eb
Connection: keep-alive
Content-Length: 314
Date: Tue, 11 Mar 2025 06:41:03 GMT
Content-Type: application/json;charset=utf-8
Server: HBlock
{
"data": {
"iSCSITargets": [
{
"iqn": "iqn.2012-08.cn.ctyunapi.oos:target02.3",
"status": "Unavailable",
"ips": [
{
"ip": "192.168.0.65",
"port": 3260
}
],
"serverId": "hblock_1"
},
{
"iqn": "iqn.2012-08.cn.ctyunapi.oos:target02.4",
"status": "Unavailable",
"ips": [
{
"ip": "192.168.0.64",
"port": 3260
}
],
"serverId": "hblock_2"
}
],
"cloneDepth": 1
}
}