华为云用户手册

  • 接口约束 在2023年8月1号之后创建的文件系统支持该API操作。API请求路径的feature仅支持以下取值: dir-usage 该接口仅适用于以下类型: 20MB/s/TiB 40MB/s/TiB 125MB/s/TiB 250MB/s/TiB 500MB/s/TiB 1000MB/s/TiB HPC缓存型文件系统 标准型、标准型-增强版、性能型、性能型-增强版类型的SFS Turbo文件系统,请使用“查询目录资源使用情况”接口。
  • 响应参数 状态码:202 Accepted 状态码:400 表3 响应Header参数 参数 参数类型 描述 X-request-id String 请求ID 表4 响应Body参数 参数 参数类型 描述 errCode String 错误码 errMsg String 错误描述 状态码:404 表5 响应Header参数 参数 参数类型 描述 X-request-id String 请求ID 表6 响应Body参数 参数 参数类型 描述 errCode String 错误码 errMsg String 错误描述 状态码:500 表7 响应Header参数 参数 参数类型 描述 X-request-id String 请求ID 表8 响应Body参数 参数 参数类型 描述 errCode String 错误码 errMsg String 错误描述
  • 响应示例 状态码:400 错误响应 { "errCode" : "SFS.TURBO.0123", "errMsg" : "feature invalid" } 状态码:404 错误响应 { "errCode" : "SFS.TURBO.0124", "errMsg" : "task_id not found" } 状态码:500 错误响应 { "errCode" : "SFS.TURBO.0005", "errMsg" : "Internal server error" }
  • 请求示例 ID为"77ba6f4b-6365-4895-8dda-bc7142af4dde"的文件系统,删除任务ID为"11abef677ac40f46644d1d5cfc2424a4"的DU任务 DELETE HTTPS://{endpoint}/v1/{project_id}/sfs-turbo/shares/77ba6f4b-6365-4895-8dda-bc7142af4dde/fs/dir-usage/tasks/11abef677ac40f46644d1d5cfc2424a4
  • URI DELETE /v1/{project_id}/sfs-turbo/shares/{share_id}/fs/{feature}/tasks/{task_id} 表1 路径参数 参数 是否必选 参数类型 描述 project_id 是 String 项目ID share_id 是 String 文件系统ID feature 是 String 任务类型。例,DU任务取值为dir-usage task_id 是 String 任务ID
  • 请求示例 文件系统ID为"77ba6f4b-6365-4895-8dda-bc7142af4ddw",目录的全路径是“/data/test”, 删除目录quota DELETE HTTPS://{endpoint}/v1/{project_id}/sfs-turbo/shares/77ba6f4b-6365-4895-8dda-bc7142af4ddw/fs/dir-quota { "path" : "/data/test" }
  • 请求示例 文件系统ID为"77ba6f4b-6365-4895-8dda-bc7142af4dde",后端target_id为"11abef677ac40f46644d1d5cfc2424a4",删除后端 DELETE HTTPS://{endpoint}/v1/{project_id}/sfs-turbo/shares/77ba6f4b-6365-4895-8dda-bc7142af4dde/targets/11abef677ac40f46644d1d5cfc2424a4
  • URI DELETE /v1/{project_id}/sfs-turbo/shares/{share_id}/targets/{target_id} 表1 路径参数 参数 是否必选 参数类型 描述 project_id 是 String 项目ID share_id 是 String 文件系统ID target_id 是 String 绑定关系ID 表2 Query参数 参数 是否必选 参数类型 描述 delete_data_in_file_system 否 Boolean 删除后端存储时是否同时删除文件系统内的联动目录及其数据文件,默认为 false。数据删除后无法恢复,请谨慎操作。
  • 响应参数 状态码:202 表4 响应Header参数 参数 参数类型 描述 X-request-id String 请求ID 表5 响应Body参数 参数 参数类型 描述 target_id String 绑定关系ID delete_data_in_file_system Boolean 删除后端存储时是否同时删除文件系统内的联动目录及其数据文件 lifecycle String 绑定状态。只支持DELETING和FAILED 枚举值: DELETING AVAILABLE MISCONFIGURED CREATING FAILED 状态码:404 表6 响应Body参数 参数 参数类型 描述 errCode String 错误码 errMsg String 错误描述 状态码:500 表7 响应Body参数 参数 参数类型 描述 errCode String 错误码 errMsg String 错误描述
  • 响应示例 状态码:202 任务下发成功 { "target_id" : "00000334-xxxx-402d-a5d4-bxxxxx87b939", "delete_data_in_file_system" : false, "life_cycle" : "DELETING" } 状态码:404 错误响应 { "errCode" : "SFS.TURBO.0126", "errMsg" : "target not found, not bound yet" } 状态码:500 错误响应 { "errCode" : "SFS.TURBO.0005", "errMsg" : "internal server error" }
  • 请求示例 SFS Turbo上一代文件系统规格类型: POST HTTPS://{endpoint}/v1/{project_id}/sfs-turbo/shares { "share" : { "name" : "sfs-turbo-test", "availability_zone" : "example", "security_group_id" : "8c4ebbd0-6edf-4aae-8353-xxx", "share_proto" : "NFS", "share_type" : "STANDARD", "size" : 500, "subnet_id" : "b8884abe-f47b-4917-9f6c-xxx", "vpc_id" : "d651ea2b-2b20-4c6d-8bbf-xxx" } } SFS Turbo上一代文件系统规格类型+专属场景: POST HTTPS://{endpoint}/v1/{project_id}/sfs-turbo/shares { "share" : { "name" : "sfs-turbo-dedicated-test", "availability_zone" : "example", "security_group_id" : "8c4ebbd0-6edf-4aae-8353-xxx", "share_proto" : "NFS", "share_type" : "STANDARD", "size" : 500, "subnet_id" : "b8884abe-f47b-4917-9f6c-xxx", "vpc_id" : "d651ea2b-2b20-4c6d-8bbf-xxx", "metadata" : { "dedicated_flavor" : "c6.xlarge.2", "dedicated_storage_id" : "198f0704-xxx-4d85-xxx-c25caa4d3264" } } } 125MB/s/TiB: POST HTTPS://{endpoint}/v1/{project_id}/sfs-turbo/shares { "share" : { "name" : "sfs-turbo-test", "availability_zone" : "example", "security_group_id" : "8c4ebbd0-6edf-4aae-8353-xxx", "share_proto" : "NFS", "share_type" : "STANDARD", "size" : 3686, "subnet_id" : "b8884abe-f47b-4917-9f6c-xxx", "vpc_id" : "d651ea2b-2b20-4c6d-8bbf-xxx", "metadata" : { "expand_type" : "hpc", "hpc_bw" : "125M" } } } 创建一个名称为“sfs-turbo-test”的SFS Turbo标准型文件系统,共享协议为NFS,容量为500GB,文件系统所在的可用区编码是example。安全组ID为“8c4ebbd0-6edf-4aae-8353-xxx”,子网的网络ID为“b8884abe-f47b-4917-9f6c-xxx”,VPC ID为“d651ea2b-2b20-4c6d-8bbf-xxx”。 创建一个名称为“sfs-turbo-dedicated-test”的SFS Turbo标准型文件系统,共享协议为NFS,容量为500GB,文件系统所在的可用区编码是example。指定专属的存储池id为“198f0704-xxx-4d85-xxx-c25caa4d3264”,专属的ecs规格为"c6.xlarge.2", 安全组ID为“8c4ebbd0-6edf-4aae-8353-xxx”,子网的网络ID为“b8884abe-f47b-4917-9f6c-xxx”,VPC ID为“d651ea2b-2b20-4c6d-8bbf-xxx”。 创建一个名称为“sfs-turbo-test”的SFS Turbo 125MB/s/TiB 文件系统,共享协议为NFS,容量为3686GB,规格类型为125MB/s/TiB, 文件系统所在的可用区编码是example。安全组ID为“8c4ebbd0-6edf-4aae-8353-xxx”,子网的网络ID为“b8884abe-f47b-4917-9f6c-xxx”,VPC ID为“d651ea2b-2b20-4c6d-8bbf-xxx”。
  • 请求示例 { "rules" : [ { "ip_cidr" : "192.168.xx.xx/16", "rw_type" : "rw", "user_type" : "no_root_squash" }, { "ip_cidr" : "192.32.xx.xx/16", "rw_type" : "rw", "user_type" : "no_root_squash" } ] }
  • 响应示例 状态码:200 创建成功 { "rules" : [ { "id" : "1131ed520xxxxxxebedb6e57xxxxxxxx", "ip_cidr" : "192.32.0.0/16", "rw_type" : "rw", "user_type" : "no_root_squash" }, { "id" : "1131ed520xxxxxxebedb6e57xxxxxxxx", "ip_cidr" : "192.32.0.1", "rw_type" : "rw", "user_type" : "no_root_squash" } ] } 状态码:400 错误响应 { "errCode" : "SFS.TURBO.0001", "errMsg" : "Rules not allowed empty" } 状态码:500 错误响应 { "errCode" : "SFS.TURBO.0005", "errMsg" : "Internal server error" }
  • 请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 是 String 账号的token Content-Type 是 String MIME类型 表3 请求Body参数 参数 是否必选 参数类型 描述 rules 是 Array of OnePermRuleRequestInfo objects 权限信息,一次最多允许添加5条规则 表4 OnePermRuleRequestInfo 参数 是否必选 参数类型 描述 ip_cidr 否 String 授权对象的IP地址或网段,设置后不支持修改 rw_type 否 String 授权对象的读写权限 rw:默认选项,以读写的方式共享 ro:以只读的方式共享 none: 没有权限 user_type 否 String 授权对象的系统用户对文件系统的访问权限。取值如下: no_root_squash:默认选项。客户端使用包括root用户在内的任何用户,NFS服务器都保持客户端使用的用户,不做映射。 root_squash:客户端使用的是root用户时,映射到NFS服务器的用户为NFS的匿名用户(nfsnobody)。客户端使用非root用户时,NFS服务器保持客户端使用的用户,不做映射。 all_squash:所有访问NFS服务器的客户端的用户都映射为匿名用户。
  • 响应参数 状态码:200 表5 响应Body参数 参数 参数类型 描述 rules Array of OnePermRuleResponseInfo objects 权限规格信息 表6 OnePermRuleResponseInfo 参数 参数类型 描述 id String 权限规格的id ip_cidr String 授权对象的IP地址或网段 rw_type String 授权对象的读写权限 rw:默认选项,以读写的方式共享 ro:以只读的方式共享 none: 没有权限 user_type String 授权对象的系统用户对文件系统的访问权限。取值如下: no_root_squash:客户端使用的是root用户时,映射到NFS服务器的用户依然为root用户。 root_squash:客户端使用的是root用户时,映射到NFS服务器的用户为NFS的匿名用户(nfsnobody)。 all_squash:默认选项。所有访问NFS服务器的客户端的用户都映射为匿名用户。' 状态码:400 表7 响应Body参数 参数 参数类型 描述 errCode String 错误码 errMsg String 错误描述 状态码:500 表8 响应Body参数 参数 参数类型 描述 errCode String 错误码 errMsg String 错误描述
  • 请求示例 创建绑定一个LDAP服务器 { "url" : "ldap://192.168.xx.xx:60000", "base_dn" : "dc=example,dc=com", "user_dn" : "cn=admin,dc=example,dc=com", "password" : "pwdxxxxxx", "backup_url" : "ldap://192.168.xx.xx:60000", "schema" : "RFC2307", "search_timeout" : 10, "allow_local_user" : "Yes" }
  • 请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 是 String 账号的token Content-Type 是 String MIME类型 表3 请求Body参数 参数 是否必选 参数类型 描述 url 是 String LDAP服务器的url,固定格式为 ldap://{ip_address}:{port_number} 或 ldaps://{ip_address}:{port_number},例如ldap://192.168.xx.xx:60000 base_dn 是 String 数据库中的域 user_dn 否 String 用户区别名 password 否 String LDAP认证密码 vpc_id 否 String 一般不涉及。仅在SFSTurbo支持多VPC的场景下,需要指定LDAP服务器可连通的VPC的id。 filter_condition 否 String 过滤条件。保留字段,暂不支持 backup_url 否 String LDAP备节点的url,固定格式为 ldap://{ip_address}:{port_number} 或 ldaps://{ip_address}:{port_number},例如ldap://192.168.xx.xx:60000 schema 否 String LDAP的schema,不填写则默认为RFC2307 search_timeout 否 Integer LDAP搜索的超时时间,单位为秒。不填写则默认为3秒 allow_local_user 否 String 访问LDAP服务器失败后是否允许使用本地用户鉴权 枚举值: Yes No
  • 响应示例 状态码:200 请求已被接受 { "jobId" : "72362dxxxxa04d419dbd5e6d9fe5xxxx" } 状态码:400 客户端错误 { "errCode" : "SFS.TURBO.0001", "errMsg" : "Invalid rule id" } 状态码:500 内部错误 { "errCode" : "SFS.TURBO.0005", "errMsg" : "Internal server error" }
  • 功能介绍 创建并绑定LDAP配置。LDAP(Lightweight Directory Access Protocol),中文名称轻量级目录访问协议,是对目录服务器(Directory Server)进行访问、控制的一种标准协议。LDAP服务器可以集中式地管理用户和群组的归属关系,通过绑定LDAP服务器,当一个用户访问您的文件系统的文件时,SFS Turbo将会访问您的LDAP服务器以进行用户身份验证,并且获取用户和群组的归属关系,从而进行Linux标准的文件UGO权限的检查。要使用此功能,首先您需要搭建好LDAP服务器(当前SFS Turbo仅支持LDAP v3协议),常见提供LDAP协议访问的目录服务器实现有OpenLdap(Linux),Active Directory(Windows)等,不同目录服务器的实现细节有所差别,绑定时需要指定对应的Schema(Schema配置错误将会导致SFS Turbo无法正确获取用户以及群组信息,可能导致无权限访问文件系统内文件),当前SFS Turbo支持的Schema有: RFC2307(Openldap通常选择此Schema) MS-AD-BIS(Active Directory通常选择此Schema,支持RFC2307bis,支持嵌套的群组) SFS Turbo还支持配置主备LDAP服务器,当您的一台LDAP服务器故障无法访问后,SFS Turbo将会自动切换到备LDAP服务器访问,以免影响您的业务。同时,若您还选择将allow_local_user配置为Yes(默认为No),那么当您的LDAP服务器全部故障无法访问时,SFS Turbo将会使用您的本地用户以及群组信息,而非LDAP服务器中配置的信息进行身份验证和UGO权限检查,以最大程度减少故障影响面。
  • 响应参数 状态码:200 表4 响应Body参数 参数 参数类型 描述 jobId String LDAP异步任务的id。可通过查询job的状态详情接口查询job的执行状态。 状态码:400 表5 响应Header参数 参数 参数类型 描述 X-request-id String 请求ID 表6 响应Body参数 参数 参数类型 描述 errCode String 错误码 errMsg String 错误描述 状态码:500 表7 响应Header参数 参数 参数类型 描述 X-request-id String 请求ID 表8 响应Body参数 参数 参数类型 描述 errCode String 错误码 errMsg String 错误描述
  • 响应示例 状态码:202 Accepted { "task_id" : "7bd2a9b6-xxxx-4605-xxxx-512d636001b0" } 状态码:400 客户端错误 { "errCode" : "SFS.TURBO.0001", "errMsg" : "parameter error" } 状态码:500 内部错误 { "errCode" : "SFS.TURBO.0005", "errMsg" : "Internal server error" }
  • 请求示例 创建快速导入任务,任务类型是"import_metadata",联动目录名称是"sfs-link-directory",关联OBS桶内的源端路径前缀是"input/datasets/"。 POST HTTPS://{endpoint}/v1/{project_id}/sfs-turbo/{share_id}/hpc-cache/task { "type" : "import_metadata", "src_target" : "sfs-link-directory", "src_prefix" : "input/datasets/", "dest_target" : "sfs-link-directory", "dest_prefix" : "input/datasets/" } 创建快速导入任务,任务类型是"import_metadata",联动目录名称是"sfs-link-directory",关联OBS桶内的源端路径前缀是"input/datasets/";指定导入的文件在文件系统内的权限为640,目录权限为750。 POST HTTPS://{endpoint}/v1/{project_id}/sfs-turbo/{share_id}/hpc-cache/task { "type" : "import_metadata", "src_target" : "sfs-link-directory", "src_prefix" : "input/datasets/", "dest_target" : "sfs-link-directory", "dest_prefix" : "input/datasets/", "attributes" : { "file_mode" : 640, "dir_mode" : 750 } } 创建数据预热任务,任务类型是"preload",联动目录名称是"sfs-link-directory",关联OBS桶内的源端路径前缀是"input/datasets/";指定导入的文件在文件系统内的权限为640,目录权限为750,uid为0,gid为0。 POST HTTPS://{endpoint}/v1/{project_id}/sfs-turbo/{share_id}/hpc-cache/task { "type" : "preload", "src_target" : "sfs-link-directory", "src_prefix" : "input/datasets/", "dest_target" : "sfs-link-directory", "dest_prefix" : "input/datasets/", "attributes" : { "file_mode" : 640, "dir_mode" : 750, "uid" : 0, "gid" : 0 } }
  • 请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 是 String 账号的token Content-Type 是 String MIME类型 表3 请求Body参数 参数 是否必选 参数类型 描述 type 是 String 任务类型,当前支持import(附加元数据导入),import_metadata(快速导入),preload(数据预热),export(导出)。 附加元数据导入方式会导入OBS对象的元数据(名称、大小、最后修改时间)以及来源于SFS Turbo 导出时的附加元数据(如uid、gid、mode)。 快速导入方式仅会导入OBS对象的元数据(名称、大小、最后修改时间),不会导入其它附加元数据(如uid、gid、mode),SFS Turbo会生成默认的附加元数据。 数据预热功能会同时导入元数据和数据内容,数据预热中的元数据导入采用快速导入方式,不会导入其它附加元数据(如uid、gid、mode)。 数据导出功能会将您在联动目录里创建的文件,以及对从OBS导入后又做过修改的文件导出存储到OBS桶里。 枚举值: import export import_metadata preload src_target 是 String 联动目录名称 src_prefix 否 String 导入导出任务的源端路径前缀,导入时不需要包含OBS桶名,导出时不需要包含联动目录名称。 对于数据预热导入,携带源端路径前缀时必须是以“/”结尾的目录或具体到某个对象。 如果不带该字段,导入时会导入绑定OBS桶内的所有对象,导出时会导出联动目录下的所有文件。 dest_target 是 String 目前只支持和src_target保持一致 dest_prefix 否 String 目前只支持和src_prefix保持一致 attributes 否 ObsTargetAttributes object 后端存储属性。2024年6月30日及之前创建,且未升级的文件系统版本不支持该参数,请提工单处理。 表4 ObsTargetAttributes 参数 是否必选 参数类型 描述 file_mode 否 Integer 导入的文件权限。取值范围是0到777。 第一位表示文件所有者的权限,取值范围是0到7;第二位表示文件所属用户组的权限,取值范围是0到7;第三位表示其他用户的权限,取值范围是0到7。文件所有者由uid指定,文件所属用户组由gid指定,不是文件所有者且不在文件所属用户组的用户为其他用户。 数字4、2、1分别表示读、写、执行权限,这些数字相加,即可得到所需的权限组合。例如:750中第一位7代表该文件所有者对该文件具有读、写、执行权限;第二位5代表该文件所属用户组对该文件具有读、执行权限;第三位0代表其他用户对该文件无权限。 dir_mode 否 Integer 导入的目录权限。取值范围是0到777。 第一位表示目录所有者的权限,取值范围是0到7;第二位表示目录所属用户组的权限,取值范围是0到7;第三位表示其他用户的权限,取值范围是0到7。目录所有者由uid指定,目录所属用户组由gid指定,不是目录所有者且不在目录所属用户组的用户为其他用户。 数字4、2、1分别表示读、写、执行权限,这些数字相加,即可得到所需的权限组合。例如:750中第一位7代表该目录所有者对该目录具有读、写、执行权限;第二位5代表该目录所属用户组对该目录具有读、执行权限;第三位0代表其他用户对该文件无权限。 uid 否 Integer 导入对象所有者的用户id,默认值是0,取值范围是0到4,294,967,294(即2^32-2)。 gid 否 Integer 导入对象所属用户组id,默认值是0,取值范围是0到4,294,967,294(即2^32-2)。
  • 响应参数 状态码:202 表5 响应Header参数 参数 参数类型 描述 X-request-id String 请求ID 表6 响应Body参数 参数 参数类型 描述 task_id String 任务ID 状态码:400 表7 响应Header参数 参数 参数类型 描述 X-request-id String 请求ID 表8 响应Body参数 参数 参数类型 描述 errCode String 错误码 errMsg String 错误描述 状态码:500 表9 响应Header参数 参数 参数类型 描述 X-request-id String 请求ID 表10 响应Body参数 参数 参数类型 描述 errCode String 错误码 errMsg String 错误描述
  • 接口约束 在2023年8月1号之后创建的文件系统支持该API操作。如果存在10个正在执行的任务,则不允许创建新任务。该接口并发请求数过大可能会影响文件系统性能,建议同时提交的查询请求不要超过4 个。查询超大目录耗时较久,请不要重复提交。API请求路径的feature仅支持以下取值: dir-usage 该接口仅适用于以下类型: 20MB/s/TiB 40MB/s/TiB 125MB/s/TiB 250MB/s/TiB 500MB/s/TiB 1000MB/s/TiB HPC缓存型文件系统 标准型、标准型-增强版、性能型、性能型-增强版类型的SFS Turbo文件系统,请使用“查询目录资源使用情况”接口。
  • 响应示例 状态码:202 Accepted { "task_id" : "d651ea2b-2b20-4c6d-8bbf-2adcec18dac9" } 状态码:400 错误响应 { "errCode" : "SFS.TURBO.0123", "errMsg" : "feature invalid" } 状态码:500 错误响应 { "errCode" : "SFS.TURBO.0005", "errMsg" : "internal server error" }
  • 响应参数 状态码:202 表4 响应Header参数 参数 参数类型 描述 X-request-id String 请求ID 表5 响应Body参数 参数 参数类型 描述 task_id String 任务ID 状态码:400 表6 响应Header参数 参数 参数类型 描述 X-request-id String 请求ID 表7 响应Body参数 参数 参数类型 描述 errCode String 错误码 errMsg String 错误描述 状态码:500 表8 响应Header参数 参数 参数类型 描述 X-request-id String 请求ID 表9 响应Body参数 参数 参数类型 描述 errCode String 错误码 errMsg String 错误描述
  • 响应示例 状态码:200 创建配额成功 { "path" : "/data/test", "capacity" : 1024, "inode" : 100000 } 状态码:400 错误响应 { "errCode" : "SFS.TURBO.0102", "errMsg" : "Path is not directory" } 状态码:409 错误响应 { "errCode" : "SFS.TURBO.0112", "errMsg" : "quota already exist" } 状态码:500 错误响应 { "errCode" : "SFS.TURBO.0005", "errMsg" : "Internal server error" }
  • 响应参数 状态码:200 表4 响应Body参数 参数 参数类型 描述 path String 合法的已存在的目录的全路径 capacity Integer 目录的容量大小,单位:MB inode Integer 目录的inode数量限制 used_capacity Integer 目录已使用的容量大小,单位:MB。仅SFSTurbo 20MB/s/TiB、40MB/s/TiB、125MB/s/TiB、250MB/s/TiB、500MB/s/TiB、1000MB/s/TiB返回该字段 used_inode Integer 目录的已使用的inode数量。仅SFSTurbo 20MB/s/TiB、40MB/s/TiB、125MB/s/TiB、250MB/s/TiB、500MB/s/TiB、1000MB/s/TiB返回该字段 状态码:400 表5 响应Body参数 参数 参数类型 描述 errCode String 错误码 errMsg String 错误描述 状态码:409 表6 响应Body参数 参数 参数类型 描述 errCode String 错误码 errMsg String 错误描述 状态码:500 表7 响应Body参数 参数 参数类型 描述 errCode String 错误码 errMsg String 错误描述
  • 请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 是 String 账号的token Content-Type 是 String MIME类型 表3 请求Body参数 参数 是否必选 参数类型 描述 path 是 String 合法的已存在的目录的全路径 capacity 否 Integer 目录的容量大小,单位:MB; 不填写则默认为0; 设置为0会导致数据无法写入目录; capacity和quota至少二选一 inode 否 Integer 目录的inode数量限制; 不填写则默认为0; 设置为0会导致数据无法写入目录; capacity和quota至少二选一
共100000条
提示

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