华为云用户手册

  • URI GET /v2/{project_id}/huaweicloudchain/instances/{instance_id}/chain/contract/report 表1 路径参数 参数 是否必选 参数类型 描述 project_id 是 String 项目ID instance_id 是 String 实例ID 表2 Query参数 参数 是否必选 参数类型 描述 name 是 String 合约名称 language 否 String 扫描报告语言类型:中文(zh-cn)、英文(en-us),默认英文
  • 响应示例 状态码: 200 请求成功 { "count" : 0, "backups" : [ { "id" : "string", "name" : "string", "instance_name" : "string", "instance_id" : "string", "status" : "string", "reason" : "string", "type" : "string", "create_time" : "string", "is_restored" : true } ]}
  • 响应参数 状态码: 200 表4 响应Body参数 参数 参数类型 描述 count Integer 个数 backups Array of RestoreBackupsResponse objects 备份列表 表5 RestoreBackupsResponse 参数 参数类型 描述 id String 备份ID name String 备份名称 instance_name String 备份实例名称 instance_id String 备份实例ID status String 状态; 初始化(Initing),恢复中(Restoring),可用(Active),恢复失败(RestoreFail) reason String 失败原因 只有Status为恢复失败(RestoreFail)才有值 type String 备份方式:手动备份(ManualBackup),自动备份(AutoBackup) create_time String 备份创建时间 is_restored Boolean 是否已经恢复,如果是true则不能再恢复 状态码: 400 表6 响应Body参数 参数 参数类型 描述 code String 状态码 error_code String 错误码 error_msg String 错误信息 message String 错误详细信息 状态码: 401 表7 响应Body参数 参数 参数类型 描述 code String 状态码 error_code String 错误码 error_msg String 错误信息 message String 错误详细信息 状态码: 403 表8 响应Body参数 参数 参数类型 描述 code String 状态码 error_code String 错误码 error_msg String 错误信息 message String 错误详细信息 状态码: 500 表9 响应Body参数 参数 参数类型 描述 code String 状态码 error_code String 错误码 error_msg String 错误信息 message String 错误详细信息
  • 响应示例 状态码: 200 Ok { "resources" : [ { "type" : "instance", "unit" : "", "min" : 0, "max" : 100, "quota" : 5, "used" : 0, "free" : 0 } ]} 状态码: 400 Bad Request { "error_code" : " BCS .4006014", "error_msg" : "Invalid Parameter quotasType : ecs"} 状态码: 401 Unauthorized { "error_code" : "B CS .4010401", "error_msg" : "Incorrect token or token resolution failed"} 状态码: 403 Forbidden { "error_code" : "BCS.4030403", "error_msg" : "No permissions to request this method"} 状态码: 404 Not Found { "error_code" : "BCS.4040404", "error_msg" : "Not Found:the url is not found"} 状态码: 500 InternalServerError { "error_code" : "BCS.5000500", "error_msg" : "Internal Server Error"}
  • 响应参数 状态码: 200 表3 响应Body参数 参数 参数类型 描述 resources Array of Resource objects 配额信息 表4 Resource 参数 参数类型 描述 type String 资源类型,包含instance(服务实例数) unit String 单位 min Long 最小值 max Long 最大值 quota Long 配额 used Long 已使用配额 free Long 剩余配额 状态码: 400 表5 响应Body参数 参数 参数类型 描述 error_code String 错误码 最小长度:8 最大长度:36 error_msg String 错误描述 最小长度:2 最大长度:512 状态码: 401 表6 响应Body参数 参数 参数类型 描述 error_code String 错误码 最小长度:8 最大长度:36 error_msg String 错误描述 最小长度:2 最大长度:512 状态码: 403 表7 响应Body参数 参数 参数类型 描述 error_code String 错误码 最小长度:8 最大长度:36 error_msg String 错误描述 最小长度:2 最大长度:512 状态码: 404 表8 响应Body参数 参数 参数类型 描述 error_code String 错误码 最小长度:8 最大长度:36 error_msg String 错误描述 最小长度:2 最大长度:512 状态码: 500 表9 响应Body参数 参数 参数类型 描述 error_code String 错误码 最小长度:8 最大长度:36 error_msg String 错误描述 最小长度:2 最大长度:512
  • 概述 欢迎使用 区块链 服务(Blockchain Service,简称BCS)。区块链服务可以帮助您在云上快速部署、管理、维护区块链网络,降低您使用区块链的门槛,让您专注于自身业务的开发与创新,实现业务快速上链。 BCS除了提供web界面管理运维资源之外,还提供了API调用方式,便于用户集成自有管理系统,实现定制化管理入口。可以使用本文档提供API对区块链服务进行相关操作,如创建、查询、删除等。具体API请参见API(Hyperledger Fabric增强版)。 在调用区块链服务API之前,请确保已经充分了解区块链服务基本概念与知识。 父主题: 使用前必读
  • API概览 通过使用区块链服务所提供的管理接口,您可以通过调用API使用区块链服务的功能,包括BCS实例的创建、删除,构建联盟链等,接口说明如表1所示。 表1 API概览 类型 API 说明 BCS管理 创建服务实例 创建BCS服务实例。 查询创建状态 查询指定服务实例创建状态。 查询实例信息 查询指定服务实例详细信息。 修改服务实例 修改实例的节点、组织,目前仅支持添加节点,添加组织。 创建通道 创建通道。 查询通道信息 查询指定服务实例通道信息。 peer节点加入通道 peer节点加入通道。 BCS组织退出某通道 用于BCS组织退出某通道。 下载证书 下载指定服务实例相关证书。 下载SDK配置 下载指定服务实例SDK配置文件。 生成用户证书 通过用户名生成指定服务实例组织用户证书。 解冻用户证书 解冻指定服务实例组织用户证书,解冻后需等待半分钟到一分钟左右生效。 冻结用户证书 冻结指定服务实例组织用户证书,冻结后需等待半分钟到一分钟左右生效。 查询配额 查询当前项目下BCS服务所有资源的配额信息。 查询规格 查询当前项目下所有服务实例的简要信息。 查询节点信息 查询指定服务实例节点信息。 查询异步操作结果 查询异步操作结果。 查询服务实例列表 查询当前项目下所有服务实例的简要信息。 删除bcs实例 删除BCS实例。 BCS某个组织中的节点退出某通道 BCS某个组织中的节点退出某通道。 BCS删除某个通道 BCS删除某个通道。 BCS联盟 邀请联盟成员 批量邀请联盟成员加入通道,此操作会向被邀请方发出邀请通知。 处理联盟邀请 处理联盟邀请。 获取全部通知 获取全部通知。 获取联盟成员列表 获取联盟成员列表。 删除邀请成员信息 批量取消邀请或删除对已退出或拒绝加入或解散的成员邀请信息。 被邀请方退出联盟 被邀请方退出联盟。 BCS监控 查询服务实例告警信息 用于查询BCS服务的监控数据,可以指定相应的指标名称。 查询服务实例告警统计接口 用于查询BCS服务的告警统计数据,可以指定相应的指标名称。 查询BCS服务实例监控数据 用于查询BCS服务的监控数据,可以指定相应的指标名称。 查询BCS组织监控数据列表 用于查询BCS组织的监控数据列表。 查询BCS组织实例监控数据详情 用于BCS组织实例监控数据详情。 父主题: Hyperledger Fabric增强版管理
  • 购买一个组织 接口相关信息 URI格式: POST /v2/{project_id}/huaweicloudchain/instances/{instance_id}/organizations 请求示例 POST https://{bcs_endpoint}/v2/{project_id}/huaweicloudchain/instances/{instance_id}/organizations {bcs_endpoint}信息请从地区和终端节点获取,{project_id}信息请参考获取项目ID,{instance_id}信息请参考查询实例列表。 Body: { "orgs" : [ { "name" : "org1" }], "org_order_info" : { "charge_mode" : 0, "period_type" : 2, "period_num" : 1, "is_auto_pay" : true, "is_auto_renew" : true }} 响应示例 { "order_id" : "CS2205101612RBMZD", "order_num" : 1, "instance_id" : "e224e6b6-e215-11ec-9675-0255ac101552", "job_id" : "e9541c1a-e17e-11ec-9826-0255ac10040d"}
  • 响应示例 状态码: 200 Ok { "basic_info" : { "id" : "50ca216f-f0e5-ea05-5aee-de8d8f0fb6fa", "name" : "bcs-vqf1x5", "version" : "3.0.7", "service_type" : "union", "purchase_type" : "", "sign_algorithm" : "ECDSA", "consensus" : "sflic", "charging_mode" : 1, "version_type" : 3, "database_type" : "goleveldb", "cluster_id" : "aaace2ac-c18b-11ea-aefb-0255ac100022", "cluster_name" : "roma-cluster", "cluster_type" : "", "cluster_platform_type" : "", "cluster_az" : "", "created_time" : "2020-07-22T04:03:44Z", "deploy_type" : "", "order_fade_enabled" : false, "order_fade_cache" : 0, "is_cross_region" : false, "is_support_rollback" : false, "is_support_restful" : false, "is_old_service" : false, "old_service_version" : "", "agent_portal_addrs" : [ "24.68.213.148:30603" ], "status" : "Normal", "process_status" : "", "order_status" : 0, "deploy_status" : 0, "block_info" : { "batch_timeout" : 2, "max_message_count" : 500, "preferred_maxbytes" : 2 }, "is_support_tc3" : false }, "channels" : [ { "name" : "channel", "org_names" : [ "organization" ], "org_name_hash" : [ "organization:8ba7c7c2e84e57d1f16bd4739245e78aa2b08d3d" ], "peers" : { "8ba7c7c2e84e57d1f16bd4739245e78aa2b08d3d" : [ "peer-8ba7c7c2e84e57d1f16bd4739245e78aa2b08d3d-0.peer-8ba7c7c2e84e57d1f16bd4739245e78aa2b08d3d.default.svc.cluster.local", "peer-8ba7c7c2e84e57d1f16bd4739245e78aa2b08d3d-1.peer-8ba7c7c2e84e57d1f16bd4739245e78aa2b08d3d.default.svc.cluster.local" ] } } ], "peer_info" : [ { "name" : "organization", "node_cnt" : 2, "status" : "Normal", "status_detail" : "2/2", "pvc_name" : "" } ], "light_peer_info" : [ ], "orderer_info" : { "name" : "bcs-vqf1x5-orderer", "node_cnt" : 4, "status" : "Normal", "status_detail" : "4/4", "address" : [ { "domain_port" : "orderer-7d5c1e483233482cfe8c8b003e003da45f07d545-0.orderer-7d5c1e483233482cfe8c8b003e003da45f07d545.default.svc.cluster.local:7050", "ip_port" : "24.68.213.148:30835" }, { "domain_port" : "orderer-7d5c1e483233482cfe8c8b003e003da45f07d545-1.orderer-7d5c1e483233482cfe8c8b003e003da45f07d545.default.svc.cluster.local:7050", "ip_port" : "24.68.213.148:30836" }, { "domain_port" : "orderer-7d5c1e483233482cfe8c8b003e003da45f07d545-2.orderer-7d5c1e483233482cfe8c8b003e003da45f07d545.default.svc.cluster.local:7050", "ip_port" : "24.68.213.148:30837" }, { "domain_port" : "orderer-7d5c1e483233482cfe8c8b003e003da45f07d545-3.orderer-7d5c1e483233482cfe8c8b003e003da45f07d545.default.svc.cluster.local:7050", "ip_port" : "24.68.213.148:30838" } ], "pvc_name" : "" }, "couch_db_info" : { "user" : "" }, "dms_kafka_info" : { "order_fade_enable" : false, "order_fade_cache" : 0, "status" : "", "status_detail" : "" }, "ief_info" : { "deploy_mode" : 0 }, "sfs_info" : { "pvc_name" : "", "name" : "", "addr" : "", "type" : "host" }, "agent_info" : { "name" : "baas-agent", "node_cnt" : 0, "status" : "Normal", "status_detail" : "1/1", "pvc_name" : "" }, "restapi_info" : { "name" : "", "node_cnt" : 0, "status" : "", "status_detail" : "", "pvc_name" : "" }, "tc3_taskserver_info" : { "name" : "", "node_cnt" : 0, "status" : "", "status_detail" : "", "pvc_name" : "" }, "obs_bucket_info" : { "name" : "", "addr" : "" }} 状态码: 400 Bad Request { "error_code" : "BCS.4006005", "error_msg" : "keyType error, keyType: blok not supported"} 状态码: 401 Unauthorized { "error_code" : "BCS.4010401", "error_msg" : "Incorrect token or token resolution failed"} 状态码: 403 Forbidden { "error_code" : "BCS.4030403", "error_msg" : "No permissions to request this method"} 状态码: 404 Not Found { "error_code" : "BCS.4040404", "error_msg" : "Not Found:the url is not found"} 状态码: 500 InternalServerError { "error_code" : "BCS.5000500", "error_msg" : "Internal Server Error"}
  • AK/SK认证 AK/SK签名认证方式仅支持消息体大小12M以内,12M以上的请求请使用Token认证。 AK/SK认证就是使用AK/SK对请求进行签名,在请求时将签名信息添加到消息头,从而通过身份认证。 AK(Access Key ID):访问密钥ID。与私有访问密钥关联的唯一标识符;访问密钥ID和私有访问密钥一起使用,对请求进行加密签名。 SK(Secret Access Key):与访问密钥ID结合使用的密钥,对请求进行加密签名,可标识发送方,并防止请求被修改。 使用AK/SK认证时,您可以基于签名算法使用AK/SK对请求进行签名,也可以使用专门的签名SDK对请求进行签名。详细的签名方法和SDK使用方法请参见API签名指南。 签名SDK只提供签名功能,与服务提供的SDK不同,使用时请注意。
  • Token认证 Token的有效期为24小时,需要使用一个Token鉴权时,可以先缓存起来,避免频繁调用。 Token在计算机系统中代表令牌(临时)的意思,拥有Token就代表拥有某种权限。Token认证就是在调用API的时候将Token加到请求消息头,从而通过身份认证,获得操作API的权限。 Token可通过调用获取用户Token接口获取,调用本服务API需要project级别的Token,即调用获取用户Token接口时,请求body中auth.scope的取值需要选择project,如下所示。 { "auth": { "identity": { "methods": [ "password" ], "password": { "user": { "name": "username", "password": "********", "domain": { "name": "domainname" } } } }, "scope": { "project": { "name": "xxxxxxxx" } } } } 获取Token 后,再调用其他接口时,您需要在请求消息头中添加“X-Auth-Token”,其值即为Token。例如Token值为“ABCDEFJ....”,则调用接口时将“X-Auth-Token: ABCDEFJ....”加到请求消息头即可,如下所示。 123 POST https://iam.cn-north-1.myhuaweicloud.com/v3/auth/projectsContent-Type: application/jsonX-Auth-Token: ABCDEFJ....
  • 响应参数 状态码: 200 表4 响应Body参数 参数 参数类型 描述 job_id String 操作对应Job ID 状态码: 400 表5 响应Body参数 参数 参数类型 描述 code String 状态码 error_code String 错误码 error_msg String 错误信息 message String 错误详细信息 状态码: 401 表6 响应Body参数 参数 参数类型 描述 code String 状态码 error_code String 错误码 error_msg String 错误信息 message String 错误详细信息 状态码: 500 表7 响应Body参数 参数 参数类型 描述 code String 状态码 error_code String 错误码 error_msg String 错误信息 message String 错误详细信息
  • 响应参数 状态码: 200 表3 响应Body参数 参数 参数类型 描述 chain_engine_version String 当前最新区块链引擎版本 besu_engine_version String besu链最新版本 editions Array of ServiceFlavor objects 服务支持规格详情 plugins Array of ServiceSupportPlugin objects 服务插件 表4 ServiceFlavor 参数 参数类型 描述 name String 版本类型: 专业版(Professional)、企业版(Enterprise)、铂金版(Platinum) max_org_num Integer 最大组织数:专业版最多2个组织,企业版最多10个组织,铂金版最多100个组织 tps_limit Integer 区块链最高tps:专业版2000tps,企业版10000tps,铂金版50000tps 表5 ServiceSupportPlugin 参数 参数类型 描述 type String 插件类型 version String 插件版本 状态码: 401 表6 响应Body参数 参数 参数类型 描述 code String 状态码 error_code String 错误码 error_msg String 错误信息 message String 错误详细信息
  • 响应示例 状态码: 200 请求成功 { "chain_engine_version" : "strings", "besu_engine_version" : "string", "editions" : [ { "name" : "string", "max_org_num" : 100, "tps_limit" : 50000 } ], "plugins" : [ { "type" : "string", "version" : "string" } ]}
  • URI GET /v2/{project_id}/huaweicloudchain/instances/{instance_id}/chain/contract 表1 路径参数 参数 是否必选 参数类型 描述 project_id 是 String 项目ID instance_id 是 String 实例ID 表2 Query参数 参数 是否必选 参数类型 描述 name 是 String 合约名称
  • 响应示例 状态码: 200 请求成功 { "name" : "test01", "version" : "1.0", "type" : "go", "status" : "Success", "description" : "", "failed_message" : "", "chain_id" : "default", "install_orgs" : [ "organization" ], "endorse_orgs" : [ "organization" ], "endorse_policy" : "OR", "file_hash_code" : "da366b9aac3fee0a54888f5d5ad94b4f57468fc43ecd29ffa2ec3b1e367bd35b", "security_check" : true, "security_check_status" : 2, "install_time" : "2022-04-29T01:30:50Z"}
  • 响应参数 状态码: 200 表4 响应Body参数 参数 参数类型 描述 name String 合约名称 version String 合约版本号 type String 合约类型:Go语言类型(go)、Solidity语言类型(solidity)、Java语言类型(java) status String 合约状态:安装中(Installing)、安装失败(Failed)、安装完成(Success) failed_message String 合约安装失败详细错误信息 description String 合约描述 chain_id String 合约所属链ID install_orgs Array of strings 合约安装组织 endorse_orgs Array of strings 合约背书组织 endorse_policy String 合约背书策略:任意组织背书(OR)、全部组织背书(AND) file_hash_code String 合约文件SHA256哈希值 security_check Boolean 合约是否开启安全检查任务 security_check_status Integer 合约安全检查任务状态:不存在(0)、正在执行(1)、完成(2)、失败(3) install_time String 合约安装时间 状态码: 400 表5 响应Body参数 参数 参数类型 描述 code String 状态码 error_code String 错误码 error_msg String 错误信息 message String 错误详细信息 状态码: 401 表6 响应Body参数 参数 参数类型 描述 code String 状态码 error_code String 错误码 error_msg String 错误信息 message String 错误详细信息 状态码: 500 表7 响应Body参数 参数 参数类型 描述 code String 状态码 error_code String 错误码 error_msg String 错误信息 message String 错误详细信息
  • 响应示例 状态码: 200 Ok { "node_orgs" : { "organization" : { "org_msp_id" : "328000cb35d8971e0b0388f6182f95eaa4100784MSP", "org_domain" : "peer-328000cb35d8971e0b0388f6182f95eaa4100784.default.svc.cluster.local", "peers" : { "peer-328000cb35d8971e0b0388f6182f95eaa4100784-0" : { "channels" : [ "channel" ], "ip_port" : "100.93.3.32:30605" }, "peer-328000cb35d8971e0b0388f6182f95eaa4100784-1" : { "channels" : [ "channel" ], "ip_port" : "100.93.3.32:30606" } } } }} 状态码: 400 Bad Request { "error_code" : "BCS.4006005", "error_msg" : "keyType error, keyType: blok not supported"} 状态码: 401 Unauthorized { "error_code" : "BCS.4010401", "error_msg" : "Incorrect token or token resolution failed"} 状态码: 403 Forbidden { "error_code" : "BCS.4030403", "error_msg" : "No permissions to request this method"} 状态码: 404 Not Found { "error_code" : "BCS.4040404", "error_msg" : "Not Found:the url is not found"} 状态码: 500 InternalServerError { "error_code" : "BCS.5000500", "error_msg" : "Internal Server Error"}
  • 响应参数 状态码: 200 表3 响应Body参数 参数 参数类型 描述 is_enable Boolean 是否开启自动备份 rule Integer 备份规则 状态码: 400 表4 响应Body参数 参数 参数类型 描述 code String 状态码 error_code String 错误码 error_msg String 错误信息 message String 错误详细信息 状态码: 401 表5 响应Body参数 参数 参数类型 描述 code String 状态码 error_code String 错误码 error_msg String 错误信息 message String 错误详细信息 状态码: 403 表6 响应Body参数 参数 参数类型 描述 code String 状态码 error_code String 错误码 error_msg String 错误信息 message String 错误详细信息 状态码: 500 表7 响应Body参数 参数 参数类型 描述 code String 状态码 error_code String 错误码 error_msg String 错误信息 message String 错误详细信息
  • 操作步骤 打开VirtualBox,单击“新建”,在弹出的“新建虚拟电脑”对话框中输入虚拟机名称,并选择类型和版本,单击“下一步”。 以Windows 2008 64bit为例,类型选择:Microsoft Windows。 请确保选择的版本与待安装的操作系统版一致。 图1 创建虚拟机 在选择内存的对话框中,选择内存大小并单击“下一步”。 选择内存时请参考虚拟机配置及待安装操作系统的官方要求。本文以设置为2048MB为例。 图2 选择内存 在虚拟硬盘对话框中,选择“现在创建虚拟硬盘”,并单击“创建”。 图3 虚拟硬盘 选择虚拟硬盘文件类型为“VHD”,单击“下一步”。 图4 虚拟硬盘文件类型 选择磁盘分配方式为“动态分配”,单击“下一步”。 图5 磁盘分配 设置磁盘大小及存储位置。 本文以设置磁盘大小为25GB为例。 图6 文件位置和大小 单击“创建”,完成空虚拟机的创建。
  • 约束与限制 qemu-img镜像格式转换工具支持vhd、vmdk、qcow2、raw、vhdx、qcow、vdi或qed社区格式的镜像的相互转换。 zvhd和zvhd2是云服务内部自研格式,qemu-img工具无法识别这两种格式的镜像文件。如需将镜像文件转换为这两种格式,请使用自研qemu-img-hw工具,详细指导参见转换镜像格式(qemu-img-hw)。 vhd格式镜像在执行命令转换格式时请使用vpc代替。 例如,将CentOS 6.9镜像的vhd格式转换为qcow2格式,请执行如下命令: qemu-img convert -p -f vpc -O qcow2 centos6.9.vhd centos6.9.qcow2 如遇报错,请删除-f vpc,qemu-img工具将自动识别镜像格式。
  • 典型应用举例 应用场景 用户从VMware平台导出一个pre-allocated格式的镜像文件(pre-allocated格式是VMDK monolithic Flat子格式类型),pre-allocated格式镜像依赖2个文件“xxxx.vmdk”和“xxxx-flat.vmdk”(“xxxx.vmdk”是一个配置文件,“xxxx-flat.vmdk”是实际数据文件),这两种格式的镜像文件不能直接导入到云平台,需提前转换成通用的vmdk或qcow2格式才能导入。 以下以镜像文件格式为centos6.9-64bit-flat.vmdk和centos6.9-64bit.vmdk为例,通过qemu-img工具转换镜像格式。 操作步骤 执行如下命令,查询镜像文件的详细信息。 ls -lh centos6.9-64bit* qemu-img info centos6.9-64bit.vmdk qemu-img info centos6.9-64bit-flat.vmdk 回显信息如下所示: [root@CentOS7 tmp]# ls -lh centos6.9-64bit*-rw-r--r--. 1 root root 10G Jun 13 05:30 centos6.9-64bit-flat.vmdk-rw-r--r--. 1 root root 327 Jun 13 05:30 centos6.9-64bit.vmdk[root@CentOS7 tmp]# qemu-img info centos6.9-64bit.vmdkimage: centos6.9-64bit.vmdkfile format: vmdkvirtual size: 10G (10737418240 bytes)disk size: 4.0KFormat specific information: cid: 3302005459 parent cid: 4294967295 create type: monolithicFlat extents: [0]: virtual size: 10737418240 filename: centos6.9-64bit-flat.vmdk format: FLAT[root@CentOS7 tmp]# qemu-img info centos6.9-64bit-flat.vmdkimage: centos6.9-64bit-flat.vmdkfile format: rawvirtual size: 10G (10737418240 bytes)disk size: 0 从回显信息中看出,centos6.9-64bit.vmdk文件的格式为vmdk,centos6.9-64bit-flat.vmdk文件的格式为raw,在执行镜像格式转换命令时,源镜像文件必须使用centos6.9-64bit.vmdk(详见步骤3)。 执行如下命令,查看pre-allocated格式的镜像文件的相关配置信息。 cat centos6.9-64bit.vmdk 回显信息如下所示: [root@CentOS7 tmp]# cat centos6.9-64bit.vmdk# Disk DescriptorFileversion=1CID=c4d09ad3parentCID=ffffffffcreateType="monolithicFlat" # Extent descriptionRW 20971520 FLAT "centos6.9-64bit-flat.vmdk" 0 # The Disk Data Base#DDB ddb.virtualHWVersion = "4"ddb.geometry.cylinders = "20805"ddb.geometry.heads = "16"ddb.geometry.sectors = "63"ddb.adapterType = "ide" 将centos6.9-64bit-flat.vmdk和centos6.9-64bit.vmdk放在同一个目录下,执行如下命令,通过qemu-img工具转换镜像格式为qcow2。 [root@CentOS7 tmp]# qemu-img convert -p -f vmdk -O qcow2 centos6.9-64bit.vmdk centos6.9-64bit.qcow2 (100.00/100%) 执行如下命令,查询转换后的qcow2格式镜像文件的详细信息。 qemu-img info centos6.9-64bit.qcow2 回显信息如下所示: [root@CentOS7 tmp]# qemu-img info centos6.9-64bit.qcow2image: centos6.9-64bit.qcow2file format: qcow2virtual size: 10G (10737418240 bytes)disk size: 200Kcluster_size: 65536Format specific information: compat: 1.1 lazy refcounts: false
  • 本地为Linux操作系统 操作过程中如果出现报错,可参考附2:执行qemu-img-hw常见报错。 安装qemu-img。 Ubuntu、Debian系列操作系统,请执行如下命令: apt install qemu-img CentOS、Red Hat、Oracle系列操作系统,请执行如下命令: yum install qemu-img SUSE、openSUSE系列操作系统,请执行如下命令: zypper install qemu-img 执行如下命令,验证安装成功。 qemu-img -v 如回显信息中出现qemu-img工具的版本信息和帮助手册,即表示安装成功。以CentOS 7为例,回显信息如下所示: [root@CentOS7 ~]# qemu-img -vqemu-img version 1.5.3, Copyright (c) 2004-2008 Fabrice Bellardusage: qemu-img command [command options]QEMU disk image utilityCommand syntax: check [-q] [-f fmt] [--output=ofmt] [-r [leaks | all]] [-T src_cache] filename create [-q] [-f fmt] [-o options] filename [size] commit [-q] [-f fmt] [-t cache] filename compare [-f fmt] [-F fmt] [-T src_cach] 转换镜像格式,以CentOS 7操作系统中转换vmdk格式为qcow2格式的镜像为例。 执行如下命令转换镜像文件格式。 qemu-img convert -p -f vmdk -O qcow2 centos6.9.vmdk centos6.9.qcow2 上述命令中各参数对应的说明如下: -p标识转换的进度条。 -f后面为源镜像格式。 -O(必须是大写)后面的参数为转换出来的镜像格式 + 源镜像文件名称 + 目标文件名称。 转换完成后,目标文件会出现在源镜像文件所在的目录下。 回显信息如下所示: [root@CentOS7 home]# qemu-img convert -p -f vmdk -O qcow2 centos6.9.vmdk centos6.9.qcow2 (100.00/100%) 执行如下命令,查询转换后的qcow2格式镜像文件的详细信息。 qemu-img info centos6.9.qcow2 回显信息如下所示: [root@CentOS7 home]# qemu-img info centos6.9.qcow2image: centos6.9.qcow2file format: qcow2virtual size: 1.0G (1073741824 bytes)disk size: 200Kcluster_size: 65536Format specific information: compat: 1.1 lazy refcounts: false
  • 操作步骤 下载VirtualBox安装包。 VirtualBox官方下载地址:https://www.virtualbox.org/wiki/Downloads 解压VirtualBox安装包,以VirtualBox-5.2.0版本为例,右键单击“VirtualBox-5.2.0-118431-Win.exe”,并选择“以管理员身份运行”,根据界面提示完成安装。 图2 VirtualBox安装提示 在安装路径选择页面,选择VirtualBox安装路径,单击“Next”。 图3 选择VirtualBox安装路径 根据实际情况,设置个性化需求,单击“Next”。 图4 设置VirtualBox个性化需求 单击“Finish”完成安装。
  • 安装前准备 安装VirtualBox的主机需满足以下条件。 推荐使用64位的Windows操作系统的主机安装VirtualBox。 建议主机内存不低于4 GB,且使用双核处理器,例如:主机规格为8U16G。 建议剩余硬盘空间不低于20 GB。 设置主机CPU支持硬件虚拟化(Intel VT-x或AMD-V虚拟化),设置方法参见设置主机CPU支持硬件虚拟化。 安装VirtualBox更多信息请参考VirtualBox官方文档:https://www.virtualbox.org/manual/UserManual.html
  • 定义Packer模板 使用Packer创建镜像,需要一个后缀为.pkr.hcl格式模板文件。在模板文件中,您需要指定构建器、配置器,还可以指定后处理器。在配置器中,您可以指定对源镜像的任何操作,可以指定安装软件也可以对相关配置做修改。本示例使用后处理器重定向manifest的输出路径,如果您的Packer模板文件中有多个builders(构建器),您可以通过manifest的输出内容,找到每个builder创建镜像的ID。关于构建器、配置器以及后处理器的详细介绍请参考Packer官方文档。
  • 安装Packer 登录管理控制台,创建一台弹性云服务器(以CentOS 8.2 64bit为例),并绑定弹性公网IP。 登录弹性云服务器。 在Packer工具下载页面选择与云服务器操作系统及架构类型相对应的Packer版本,版本号建议选择最新版本。 执行以下命令,安装Packer(本节操作以packer_1.9.1_linux_amd64.zip为例)。 wget --no-check-certificate https://releases.hashicorp.com/packer/1.9.1/packer_1.9.1_linux_amd64.zip 需要提前给云服务器绑定弹性公网IP,以便能够访问外网。 如果执行本步骤命令后报“command not found”的错误,说明没有预装wget工具,需要执行yum install wget进行安装。 执行以下命令,解压Packer安装包。 unzip packer_1.9.1_linux_amd64.zip 执行以下命令,将Packer安装包移动至“/usr/local/bin”目录下。 mv packer /usr/local/bin “/usr/local/bin”目录已被添加到环境变量,您也可以将Packer安装包移动至其它目录下,并确保该目录已被添加到环境变量中。 执行以下命令,查询Packer版本号,检查Packer是否安装成功。 packer -v 如果回显信息为Packer版本号,表示已完成Packer安装。 如果回显信息为“command not found”,表示Packer安装失败,请检查Packer所在目录是否被添加到环境变量中。 使用命令env | grep PATH打印环境变量,查看环境变量PATH是否包含Packer的安装目录。 如果环境变量PATH中没有包含Packer安装目录,请依次使用以下命令,将Packer的安装路径添加到环境变量PATH中: 执行以下命令,打开profile文件。 vim /etc/profile 按“i”键进入编辑模式,在文件末尾添加“export PATH=$PATH:/usr/local/bin”。 请将/usr/local/bin换成您实际安装Packer的目录。 按“ESC”退出编辑模式,输入:wq,按回车键保存修改并退出。 执行以下命令,使修改生效。 source /etc/profile
  • 附2:执行qemu-img-hw常见报错 问题描述: 执行qemu-img-hw命令时回显信息如下: ./qemu-img-hw: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by ./qemu-img-hw) 解决方法: 执行strings /lib64/libc.so.6 | grep GLIBC查看GLIBC版本,若由于版本过低造成,可安装高版本即可。依次执行下述命令: wget http://ftp.gnu.org/gnu/glibc/glibc-2.15.tar.gz wget http://ftp.gnu.org/gnu/glibc/glibc-ports-2.15.tar.gz tar -xvf glibc-2.15.tar.gz tar -xvf glibc-ports-2.15.tar.gz mv glibc-ports-2.15 glibc-2.15/ports mkdir glibc-build-2.15 cd glibc-build-2.15 ../glibc-2.15/configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin 此命令若报错“configure: error: no acceptable C compiler found in $PATH”,请先执行:yum -y install gcc make make install 问题描述: 执行qemu-img-hw命令时回显信息如下: ./qemu-img-hw: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory 解决方法:请先执行命令yum install libaio 问题描述: 执行qemu-img-hw命令时回显信息如下: ./qemu-img-hu: error while loading shared libraries: libcrypto.so.10: cannot open shared object file: No such file or directory 解决方法:执行openssl version查看当前openssl版本是否大于1.0,若版本大于1.0,需要安装1.0版本。 请依次执行下述命令: wget https://github.com/openssl/openssl/releases/download/OpenSSL_1_0_2k/openssl-1.0.2k.tar.gz tar -xvf openssl-1.0.2k.tar.gz cd openssl-1.0.2k ./config -d shared --prefix=/tmp/openssl(安装目录,可自定义) make make install cp /tmp/openssl/lib/libcrypto.so.1.0.0 /usr/lib64/libcrypto.so.10 使用完成后,如不需要/usr/lib64/libcrypto.so.10文件,可自行删除。
  • 操作步骤 上传待转换格式的镜像文件至云服务器。 本地主机为Linux系统: 通过scp命令将镜像文件上传至云服务器。以将“image01.qcow2”文件上传至云服务器的“/usr/”目录下为例。 scp /var/image01.qcow2 root@xxx.xxx.xx.xxx:/usr/ 其中,xxx.xxx.xx.xxx为云服务器的弹性公网IP。 本地主机为Windows系统: 使用文件传输工具(例如WinSCP)将镜像文件上传至云服务器。 获取qemu-img-hw工具并上传至云服务器,然后解压工具包。 表2 qemu-img-hw工具获取方式 工具包 下载地址 qemu-img-hw.zip https://cn-south-1-cloud-reset-pwd.obs.cn-south-1.myhuaweicloud.com/imageImportTools/qemu-img-hw.zip 当前工具仅限在x86架构的服务器下使用。 转换镜像格式。 进入qemu-img-hw存放目录,以存放在“/usr/qemu-img-hw”为例: cd /usr/qemu-img-hw 执行以下命令修改权限: chmod +x qemu-img-hw 执行qemu-img-hw命令将镜像文件转为zvhd2格式。 qemu-img-hw命令格式: ./qemu-img-hw convert -p -O {目标镜像格式} {待转换镜像文件} {目标镜像文件} 以将“image01.qcow2”格式文件转换成“image01.zvhd2”格式为例: ./qemu-img-hw convert -p -O zvhd2 image01.qcow2 image01.zvhd2
  • 附1:qemu-img-hw常用命令 镜像文件格式转换:qemu-img-hw convert -p -O {目标镜像格式} {待转换镜像文件} {目标镜像文件} 上述命令中各参数对应的说明如下: -p:标识转换的进度条 -O:(必须是大写)后面的参数为转换出来的镜像格式 + 源镜像文件名称 + 目标镜像文件名称 示例:将qcow2格式转为zvhd2格式 qemu-img-hw convert -p -O zvhd2 test.qcow2 test.zvhd2 查询镜像文件信息:qemu-img-hw info {镜像文件} 示例:qemu-img-hw info test.zvhd2 查看帮助:qemu-img-hw -help
共100000条
提示

您即将访问非华为云网站,请注意账号财产安全