此操作用來還原HBlock上云卷。
說明
以下場景適合還原卷功能:
原HBlock中存在上云卷,并且將數據上傳到了云端。如果此時HBlock發生故障無法啟動,可以通過還原卷的功能,在另一個HBlock中將該卷重新生成,并且從云端進行數據恢復。
原上云卷被刪除,但云上數據保留,可以通過還原卷功能恢復卷數據。
注意
在執行還原卷的操作前,請確保源卷已經將所有數據上傳到云端,并且源卷不再繼續使用(源卷已刪除,或者源卷所在系統已經停止服務)。
還原的卷名稱在當前HBlock中不存在。
還原的卷必須在指定的Bucket/prefix中找到,且數據完整。
還原操作異步執行,請通過查詢卷的功能查看還原進度。
請求語法
單機版
POST /rest/v1/block/lun/recover HTTP/1.1
Date:date
Content-Type: application/json; charset=utf-8
Content-Length: length
Host: ip:port
Authorization: authorization
{
"lunName": lunName,
"uuid": lunuuid,
"targetName": targetName,
"storageMode": storageMode,
"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
},
"cloud": {
"provider": provider,
"bucketName": bucketName,
"prefix": prefix,
"accessKey": accessKey,
"secretKey": secretKey,
"endpoint": endpoint,
"signVersion": signVersion,
"region": region,
"storageClass": storageClass,
"compression": compression
}
}集群版
POST /rest/v1/block/lun/recover HTTP/1.1
Date:date
Content-Type: application/json; charset=utf-8
Content-Length: length
Host: ip:port
Authorization: authorization
{
"lunName": lunName,
"uuid": lunuuid,
"targetName": targetName,
"storageMode": storageMode,
"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
},
"cloud": {
"provider": provider,
"bucketName": bucketName,
"prefix": prefix,
"accessKey": accessKey,
"secretKey": secretKey,
"endpoint": endpoint,
"signVersion": signVersion,
"region": region,
"storageClass": storageClass,
"compression": compression
}
}請求參數
| 參數 | 類型 | 描述 | 是否必須 |
|---|---|---|---|
| lunName | String | 源卷的卷名稱。 | 是 |
| uuid | String | 源卷的唯一標識碼。 | 是 |
| targetName | String | 指定還原卷的target名稱。 說明 還原卷時,如果指定的target名稱不存在,那么同時創建iSCSI target。 取值:長度范圍是1~16,可以由小寫字母、數字、句點(.)和短橫線(-)組成,且僅支持以字母或數字開頭。 | 是 |
| storageMode | String | 指定還原卷的存儲類型。 取值:
存儲類型默認為源卷的存儲類型。 | 否 |
| config.localStorageClass | String | 指定還原卷冗余模式(僅集群版支持)。 取值:
默認值為源卷的冗余模式。 說明 以下場景均為集群可用的前提下:
| 否 |
| config.minReplica | Integer | 指定還原卷的最小副本數(僅集群版支持)。 對于副本模式的卷,假設卷副本數為X,最小副本數為Y(Y必須≤X),該卷每次寫入時,至少Y份數據寫入成功,才視為本次寫入成功。對于EC N+M模式的卷,假設該卷最小副本數設置為Y(必須滿足N≤Y≤N+M),必須滿足總和至少為Y的數據塊和校驗塊寫入成功,才視為本次寫入成功。 注意 如果指定了還原卷的最小副本數,必須指定還原卷的冗余模式。 取值:對于副本卷,取值范圍是[1, N],N為副本模式卷的副本數;對于EC卷,取值范圍是[N, N+M]。如果未設置還原卷的最小副本數,默認值為源卷的最小副本數。 | 否 |
| config.redundancyOverlap | Integer | 指定還原卷的折疊副本數(僅集群版支持)。在數據冗余模式下,同一份數據的不同副本/分片默認分布在不同的故障域,當故障域損壞時,允許根據卷的冗余折疊原則,將多份數據副本放在同一個故障域中,但是分布在不同的path上。 注意 如果存儲池故障域級別為path,此參數不生效。如果指定了還原卷的折疊副本數,必須指定還原卷的冗余模式。 取值:對于副本卷,取值范圍是[1, N],N為副本模式卷的副本數;對于EC模式,取值范圍是[1, N+M]。如果未設置還原卷的折疊副本數,默認值為源卷的折疊副本數。 | 否 |
| config.ECfragmentSize | Integer | 設置還原卷的糾刪碼模式分片大小(僅集群版支持)。 config.localStorageClass為EC模式時,此設置才生效,否則忽略。 取值:1、2、4、8、16、32、64、128、256、512、1024、2048、4096,單位是KiB。默認值為源卷的糾刪碼模式分片大小。 | 否 |
| config.cachePool | String | 指定還原卷的緩存存儲池(僅集群版支持)。如果指定了緩存存儲池,卷數據首先寫入緩存存儲池,然后再存入存儲池。 注意 存儲池與緩存存儲池不能是同一個存儲池。 取值:長度范圍是1~16,只能由字母、數字和短橫線(-)、下劃線(_)組成,字母區分大小寫,且僅支持以字母和數字開頭。 | 否 |
| config.pool | String | 指定還原卷的存儲池(僅集群版支持),表示最終存儲池,卷數據最終落在該存儲池內。默認使用集群的基礎存儲池。 取值:長度范圍是1~16,只能由字母、數字和短橫線(-)、下劃線(_)組成,字母區分大小寫,且僅支持以字母和數字開頭。 說明 不指定,默認使用基礎存儲池。 | 否 |
| config.highAvailability | String | 指定還原卷的高可用類型(僅集群版支持)。 取值:
默認值為源卷的高可用類型。 | 否 |
| config.writePolicy | String | 設置還原卷的寫策略。 取值:
默認值為源卷的寫策略。 | 否 |
| config.qosPolicy | Object | 卷關聯的QoS策略信息,詳見“表1 請求參數config.qosPolicy說明”。 | 否 |
| config.path | String | 指定還原卷存儲數據的數據目錄(僅單機版支持)。 取值:只能包含字母、數字、漢字和特殊字符(~ ! @ $ ( ) _ + - ; . :)。如果還原卷時不指定數據目錄,使用服務器設置的默認數據目錄。 | 否 |
| cloud.provider | String | 指定還原卷的對象存儲服務名稱:
默認值為OOS。 說明 源卷和還原卷必須使用相同的對象存儲服務。 | 否 |
| cloud.bucketName | String | 源卷所在存儲桶的名稱。 注意 請勿開啟Bucket的生命周期設定和合規保留。 | 是 |
| cloud.prefix | String | 源卷的前綴名稱。如果源卷未指定前綴,則此處不設置。 取值:長度范圍是1~256。 | 否 |
| cloud.accessKey | String | 源卷的Access Key。 | 是 |
| cloud.secretKey | String | 源卷的Secret Access Key。 | 是 |
| cloud.endpoint | String | 源卷的Endpoint。 注意 如果僅輸入域名將會使用HTTPS協議進行訪問。 | 是 |
| cloud.signVersion | String | 指定還原卷上云簽名認證的類型。 取值:
默認值為v2。 | 否 |
| cloud.region | String | 還原卷的region,即Endpoint資源池所在區域。 OOS region詳見OOS Endpoint和區域。 V4簽名時,此項必填。 | 否 |
| cloud.storageClass | String | 設置還原卷上傳數據至對象存儲的存儲類型。 取值:
默認為源卷上傳數據至對象存儲的存儲類型。 | 否 |
| cloud.compression | String | 設置還原卷是否壓縮數據上傳至對象存儲。 取值:
默認值為源卷的設置。 | 否 |
表1 請求參數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,單位是秒。 | 否 |
請求示例1
單機版:還原卷luna9。
POST /rest/v1/block/lun HTTP/1.1
Date: Mon, 13 May 2024 10: 46: 42 GMT
Content-Type: application/json; charset=utf-8
Connection: keep-alive
Authorization: HBlock userName:signature
Content-Length: 516
Host: 192.168.0.32: 1443
{
"lunName": "luna9",
"uuid": "lun-uuid-df8308a9-bfb0-40a0-bf9d-7e741b1b6a63",
"targetName": "targeta",
"storageMode": "Storage",
"config": {
"writePolicy": "WriteThrough"
},
"cloud": {
"bucketName": "hblocktest3",
"prefix": "hblock1",
"accessKey": "cb22b08b1f9229f85874",
"secretKey": "**************************",
"endpoint": "oos-cn.ctyunapi.cn",
"signVersion": "v4",
"region": "cn"
}
}響應示例1
HTTP/1.1 200 OK
x-hblock-request-id: 20b087c7711f44af9588cc013ede8654
Connection: keep-alive
Content-Length: 0
Date: Mon, 13 May 2024 10: 46: 42 GMT
Server: HBlock請求示例2
集群版:還原卷lun08a。
POST /rest/v1/block/lun/recover HTTP/1.1
Date: Mon, 13 May 2024 09:33:12 GMT
Content-Type: application/json; charset=utf-8
Connection: keep-alive
Authorization: HBlock userName:signature
Content-Length: 629
Host: 192.168.0.110: 1443
{
"lunName": "lun08a",
"uuid": "lun-uuid-a74475f7-8d73-49b5-bd82-0ac0309e1fae",
"targetName": "target08",
"storageMode": "Storage",
"config": {
"localStorageClass": "EC 2+1",
"minReplica": 2,
"highAvailability": "ActiveStandby",
"writePolicy": "WriteThrough"
},
"cloud": {
"bucketName": "hblocktest3",
"prefix": "hblock",
"accessKey": "cb22b08b1f9229f85874",
"secretKey": "*****************************",
"endpoint": "oos-cn.ctyunapi.cn",
"signVersion": "v4",
"region": "cn"
}
}響應示例2
HTTP/1.1 200 OK
x-hblock-request-id: 251c5dcfab5247599aca4f60f5784b34
Connection: keep-alive
Content-Length: 0
Date: Mon, 13 May 2024 09: 33: 12 GMT
Server: HBlock