华为云用户手册
-
响应示例 状态码: 200 OK { "count" : 1, "models" : [ { "id" : "56e0f1b0-ac10-46a5-8fa7-b26831d7d488", "name" : "demo_name", "description" : "description", "status" : "FINISHED", "create_time" : "2021-01-30T02:34:36Z", "finish_time" : "2021-01-30T02:53:26Z", "creator" : "demo-user", "shareable" : true, "data_quantity" : 1000, "type" : "binary", "file" : { "source" : "PRIVATE", "url" : "project:/file/data.csv" }, "losses" : [ 6.2, 1.2, 4.54 ], "metrics" : [ { "name" : "rmse", "value" : 0.3744 }, { "name" : "mae", "value" : 0.2844 }, { "name" : "pcc", "value" : 0.4871 } ], "base_model_id" : "pangu-drug-model", "base_model_name" : "pangu-drug-model" } ] }
-
响应参数 状态码: 200 表4 响应Body参数 参数 参数类型 描述 models Array of ModelDto objects 模型列表。 count Integer 模型总数。 表5 ModelDto 参数 参数类型 描述 name String 模型名称。 id String 模型ID。 type String 模型类型。 create_time String 模型创建时间。 finish_time String 模型结束时间。 creator String 创建模型的用户名称。 status String 作业状态。 shareable Boolean 是否打开组织共享。 data_quantity Integer 模型数据量。 file ModelFile object 模型数据来源。 value_range ValueRange object 区间上下限,仅回归型存在。 description String 模型描述信息。 failed_message String 失败提示,当作业执行失败时会返回。 losses Array of floats 模型训练loss信息。 metrics Array of ModelMetric objects 模型评估指标。 base_model_id String 基模型id。 缺省值:pangu-drug-model base_model_name String 基模型名称。 缺省值:pangu-drug-model 表6 ModelFile 参数 参数类型 描述 source String 模型数据文件来源。 枚举值: public private url String 文件URL,用户私有数据中心为项目路径、公共数据场景为obs地址。 最小长度:1 最大长度:2000 eihealth_project_id String 模型文件所在项目id,仅文件为数据中心时填写。 最小长度:1 最大长度:128 表7 ValueRange 参数 参数类型 描述 lower Float 区间下限,仅回归型存在。 upper Float 区间上限,仅回归型存在。 表8 ModelMetric 参数 参数类型 描述 name String 评估指标的名称。 最小长度:1 最大长度:32 value Float 评估指标的评估结果。
-
URI GET /v1/{project_id}/drug-models 表1 路径参数 参数 是否必选 参数类型 描述 project_id 是 String 项目ID,您可以从获取项目ID中获取。 最小长度:1 最大长度:128 表2 Query参数 参数 是否必选 参数类型 描述 search_key 否 String 模糊搜索值。 最小长度:0 最大长度:1024 creator_list 否 Array 创建者列表。 最小长度:1 最大长度:128 数组长度:0 - 50 type_list 否 Array 模型类型列表。 数组长度:0 - 10 status_list 否 Array 模型状态列表。 数组长度:0 - 10 sort_key 否 String 排序规则 目前默认时间降序,支持根据create_time|finish_time|base_model_name。 sort_dir 否 String 排序规则 目前默认时间降序。 缺省值:DESC create_start_time 否 Long 最小创建时间。 最小值:1000000000000 最大值:9999999999999 create_end_time 否 Long 最大创建时间。 最小值:1000000000000 最大值:9999999999999 finish_start_time 否 Long 最小结束时间。 最小值:1000000000000 最大值:9999999999999 finish_end_time 否 Long 最大结束时间。 最小值:1000000000000 最大值:9999999999999 limit 否 Integer 限制量,单次查询总量,必须由数字组成,默认为100,取值范围[1,1000]。 最小值:1 最大值:1000 缺省值:100 offset 否 Integer 偏移量,查询起始偏移,必须由数字组成,默认为0,取值范围[0,100000000]。 最小值:0 最大值:100000000 缺省值:0 base_model_list 否 Array 基模型id列表。 最小长度:0 最大长度:128 数组长度:0 - 10
-
响应参数 状态码: 200 表4 响应Body参数 参数 参数类型 描述 workflows Array of WorkflowListDto objects 所查询类型的流程总数 count Integer 当前页的流程列表 表5 WorkflowListDto 参数 参数类型 描述 id String 流程id name String 流程名称 version String 流程版本 summary String 简短描述信息 description String 描述信息 labels Array of strings 流程标签 create_time String 创建流程时间 update_time String 更新流程时间 user_name String 创建用户名称 source_project_name String 源项目名称 source_resource_id String 源资源id
-
响应示例 状态码: 200 OK { "workflows" : [ { "id" : "baabcb56-5bb6-11eb-8a0d-fa163e3ddba1", "name" : "demo-workflow", "version" : "1.0.0", "summary" : "summary", "description" : "description", "labels" : [ "labelA", "labelB" ], "create_time" : "2021-01-30T02:34:36Z", "update_time" : "2021-01-30T02:53:26Z", "user_name" : "gwj-test-01" } ], "count" : 1 }
-
URI GET /v1/{project_id}/eihealth-projects/{eihealth_project_id}/workflows 表1 路径参数 参数 是否必选 参数类型 描述 eihealth_project_id 是 String 平台项目ID,您可以在平台单击所需的项目名称,进入项目设置页面查看。 最小长度:1 最大长度:128 project_id 是 String 华为云项目ID,您可以从获取项目ID中获取。 最小长度:1 最大长度:128 表2 Query参数 参数 是否必选 参数类型 描述 name 否 String 流程名称 最小长度:1 最大长度:56 version 否 String 流程版本 最小长度:1 最大长度:24
-
请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 是 String 用户Token。Token认证就是在调用API的时候将Token加到请求消息头,从而通过身份认证,获得操作API的权限, 获取Token 接口响应消息头中X-Subject-Token的值即为Token。 最小长度:1 最大长度:32768 表3 请求Body参数 参数 是否必选 参数类型 描述 name 是 String 模型名称,取值范围:[5,32],允许大小写字母、数字、下划线(_)、中划线(-)和空格,只能以字母开头。 最小长度:5 最大长度:32 description 否 String 模型描述信息。 最小长度:0 最大长度:1024 type 是 String 模型类型。 枚举值: binary numerical file 是 ModelFile object 模型数据来源。 shareable 否 Boolean 是否打开组织共享。 缺省值:false base_model_id 否 String 基模型id。 缺省值:pangu-drug-model 最小长度:1 最大长度:128 表4 ModelFile 参数 是否必选 参数类型 描述 source 是 String 模型数据文件来源。 枚举值: public private url 是 String 文件URL,用户私有数据中心为项目路径、公共数据场景为obs地址。 最小长度:1 最大长度:2000 eihealth_project_id 否 String 模型文件所在项目id,仅文件为数据中心时填写。 最小长度:1 最大长度:128
-
请求示例 创建模型,模型名称为model_name,类型为二分型,上传项目桶中file/test.csv的模型数据,打开共享开关。 https://{endpoint}/v1/{project_id}/drug-models { "name" : "model_name", "type" : "binary", "description" : "simple model", "file" : { "url" : "project:/file/test.csv", "source" : "private" }, "shareable" : true }
-
URI DELETE /v1/{project_id}/eihealth-projects/{eihealth_project_id}/workflows/{workflow_id} 表1 路径参数 参数 是否必选 参数类型 描述 eihealth_project_id 是 String 平台项目ID,您可以在平台单击所需的项目名称,进入项目设置页面查看。 最小长度:1 最大长度:128 project_id 是 String 华为云项目ID,您可以从获取项目ID中获取。 最小长度:1 最大长度:128 workflow_id 是 String 流程id 最小长度:1 最大长度:128
-
响应参数 状态码: 200 表3 响应Body参数 参数 参数类型 描述 quotas Array of QuotaRsp objects 配额信息列表 count Integer 配额列表个数 表4 QuotaRsp 参数 参数类型 描述 name String 配额项名称,支持USER,PROJECT,USER_PROJECT,STORAGE,PROJECT_APP,PROJECT_NOTEBOOK,PROJECT_WORKFLOW,PROJECT_IMAGE total Integer 配额 unit String 配额项单位 usage Integer 配额使用量
-
基本概念 账号 用户注册华为云时的账号,账号对其所拥有的资源及云服务具有完全的访问权限,可以重置用户密码、分配用户权限等。由于账号是付费主体,为了确保账号安全,建议您不要直接使用账号进行日常管理工作,而是创建用户并使用创建的用户进行日常管理工作。 用户 由账号在 IAM 中创建的用户,是云服务的使用人员,具有身份凭证(密码和访问密钥)。 区域(Region) 从地理位置和网络时延维度划分,同一个Region内共享弹性计算、块存储、对象存储、VPC网络、弹性公网IP、镜像等公共服务。Region分为通用Region和专属Region,通用Region指面向公共租户提供通用云服务的Region;专属Region指只承载同一类业务或只面向特定租户提供业务服务的专用Region。 可用区(AZ,Availability Zone) 一个AZ是一个或多个物理数据中心的集合,有独立的风火水电,AZ内逻辑上再将计算、网络、存储等资源划分成多个集群。一个Region中的多个AZ间通过高速光纤相连,以满足用户跨AZ构建高可用性系统的需求。 项目 华为云的区域默认对应一个项目,这个项目由系统预置,用来隔离物理区域间的资源(计算资源、存储资源和网络资源),以默认项目为单位进行授权,用户可以访问您账号中该区域的所有资源。如果您希望进行更加精细的权限控制,可以在区域默认的项目中创建子项目,并在子项目中购买资源,然后以子项目为单位进行授权,使得用户仅能访问特定子项目中资源,使得资源的权限控制更加精确。 图1 项目隔离模型 父主题: 使用前必读
-
请求示例 创建流程,流程的名称为demo-workflow,版本为1.0.0。 https://eihealth.cn-north-4.myhuaweicloud.com/v1/{project_id}/eihealth-projects/{eihealth_project_id}/workflows { "name" : "demo-workflow", "version" : "1.0.0", "summary" : "summary", "description" : "description", "labels" : [ "labelA", "labelB" ], "timeout" : 1440, "output_dir" : "/workflow", "tasks" : [ { "task_name" : "app1-1", "app_id" : "baabcb56-5bb6-11eb-8a0d-fa163e3ddba1", "display_name" : "步骤1", "output_dir" : "/task", "resources" : { "cpu_type" : "X86", "cpu" : "1C", "memory" : "1G", "gpu_type" : "GPU", "gpu" : 0 }, "location" : { "x" : 100, "y" : 100 }, "inputs" : [ { "name" : "dir-parameter", "values" : [ "/test" ] } ] } ] }
-
URI POST /v1/{project_id}/eihealth-projects/{eihealth_project_id}/workflows 表1 路径参数 参数 是否必选 参数类型 描述 eihealth_project_id 是 String 平台项目ID,您可以在平台单击所需的项目名称,进入项目设置页面查看。 最小长度:1 最大长度:128 project_id 是 String 华为云项目ID,您可以从获取项目ID中获取。 最小长度:1 最大长度:128
-
提交训练作业常见问题 报错信息:Exception: You have attempted to create more buckets than allowed 原因分析:由于桶的数量多于限额,无法自动创建。 解决方法:用户可以删除一个桶,或者直接指定一个已存在的桶(修改变量obs_bucket的值)。 报错信息:"errorMessage":"The number of namespaces exceeds the upper limit"或"namespace is invalid" 原因分析:SWR组织数限额,SWR组织默认最多只能创建5个组织。 解决方法:用户可以删除一个SWR组织,或者直接指定一个已存在的SWR组织(修改变量image_organization的值)。 报错信息:standard_init_linux.go:224: exec user process caused "exet format error" 原因分析:可能由于训练规格错误导致训练作业卡死。 解决方法:请参考说明查询资源规格。 报错信息:报错镜像失败,报错:401,'Unauthorized',b'{errors":[{"errorCode":"SV CS TG.SWR.4010000",errorMessage":"Authenticate Error",……}] 原因分析:远程连接Notebook时需要输入鉴权信息。 解决方法:传入AK,SK信息。 1 2 3 4 5 6 # 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全; # 本示例以ak和sk保存在环境变量中来实现身份验证为例,运行本示例前请先在本地环境中设置环境变量HUAWEICLOUD_SDK_AK和HUAWEICLOUD_SDK_SK。 __AK = os.environ["HUAWEICLOUD_SDK_AK"] __SK = os.environ["HUAWEICLOUD_SDK_SK"] # 如果进行了加密还需要进行解密操作 session = Session(access_key=__AK,secret_key=__SK, project_id='***', region_name='***')
-
训练输出保存结构说明 ModelArts训练作业的模型输出和日志信息会定时同步到指定的OBS中,本示例中模型输出路径和日志输出路径分别为f"{default_obs_dir}/mindspore_model/output/"和f"{default_obs_dir}/mindspore_model/logs/",用户可以在OBS中查看训练输出信息。 本示例中训练输出保存在OBS的目录结构如下所示: ${your_bucket} └── intermidiate ├── dataset │ └── flower_photos │ └── flower_photos.zip └── mindspore_model ├── logs │ └── xxx-xxx-xxx--0.log ├── output │ └── 20220627-105226-resnet50-224 └── mindspore-image-models.zip
-
步骤5:使用SDK提交训练作业 本地调测完成后可以提交训练作业。因为数据在Notebook中,设置InputData中“is_local_source”的参数为“True”,会自动将本地数据同步上传到OBS中。 步骤如下: 在“/home/ma-user/work/models/official/cv/resnet/”下创建train_notebook.py, 复制代码至train_notebook.py, 运行train_notebook.py,进行训练作业提交。 # train_notebook.py # 导入ModelArts SDK的依赖,并初始化Session,此处的ak、sk、project_id、region_name请替换成用户自己的信息 from modelarts.train_params import TrainingFiles from modelarts.train_params import OutputData from modelarts.train_params import InputData from modelarts.estimatorV2 import Estimator from modelarts.session import Session # 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全; # 本示例以ak和sk保存在环境变量中来实现身份验证为例,运行本示例前请先在本地环境中设置环境变量HUAWEICLOUD_SDK_AK和HUAWEICLOUD_SDK_SK。 __AK = os.environ["HUAWEICLOUD_SDK_AK"] __SK = os.environ["HUAWEICLOUD_SDK_SK"] # 如果进行了加密还需要进行解密操作 session = Session(access_key=__AK,secret_key=__SK, project_id='***', region_name='***') # 样例中为了方便默认创建一个OBS桶,推荐将调测所需要传输的文件统一放到`${default_bucket}/intermidiate`目录下,也可以按照注释代码自行指定 obs_bucket = session.obs.get_default_bucket() print("Default bucket name: ", obs_bucket) default_obs_dir = f"{obs_bucket}/intermidiate" #default_obs_dir = "obs://your-bucket-name/folder-name" # 本地的工程代码文件夹路径 code_dir_local = "/home/ma-user/work/models/official/cv/resnet/" #@param {type:"string"} # 代码的启动文件名称 boot_file = "train.py" #@param {type:"string"} train_file = TrainingFiles(code_dir=code_dir_local, boot_file=boot_file) # 本地数据集路径 local_data_path = "/home/ma-user/work/models/dataset/flower_photos" #@param {type:"string"} # 模型输出保存路径 output_local = "/home/ma-user/work/models/official/cv/resnet/output" #@param {type:"string"} # 模拟训练过程中模型输出回传至指定OBS的路径,需要以"/"结尾 obs_output_path = f"{default_obs_dir}/mindspore_model/output/" # 指定一个obs路径用于存储输出结果 output = [OutputData(local_path=output_local, obs_path=obs_output_path, name="output")] # 模拟训练过程中模训练日志回传至指定OBS的路径,需要以"/"结尾 log_obs_path = f"{default_obs_dir}/mindspore_model/logs/" # 训练所需的代码路径,代码会自动从本地上传至OBS code_obs_path = f"{default_obs_dir}/mindspore_model/" data_obs_path = f"{default_obs_dir}/dataset/flower_photos/" # sdk会将代码自动上传至OBS,并同步到训练环境 train_file = TrainingFiles(code_dir=code_dir_local, boot_file=boot_file, obs_path=code_obs_path) # 指定OBS中的数据集路径,会自动将local_path数据上传至obs_path,用户可以在代码中通过 --data_url接收这个数据集路径 input_data = InputData(local_path=local_data_path, obs_path=data_obs_path, is_local_source=True, name="data_url") from modelarts.service import SWRManagement image_organization = SWRManagement(session).get_default_namespace() # image_organization = "your-swr-namespace-name" print("Default image_organization:", image_organization) image_name = "mindspore-image-models-image" #@param {type:"string"} image_tag = "1.0.0" #@param {type:"string"} import os ENV_NAME=os.getenv('ENV_NAME') # 启动训练任务:使用user_command(shell命令)方式启动训练任务 # 注意:训练启动默认的工作路径为"/home/ma-user/modelarts/user-job-dir",而代码上传路径为"./resnet/${code_dir}"下 # --enable_modelarts=True 该代码仓已适配ModelArts estimator = Estimator(session=session, training_files=train_file, outputs=output, user_image_url=f"{image_organization}/{image_name}:{image_tag}", # 自定义镜像 swr地址,由镜像仓库组织/镜像名称:镜像tag组成 user_command=f'cd /home/ma-user/modelarts/user-job-dir/ && /home/ma-user/anaconda3/envs/MindSpore/bin/python ./resnet/train.py --net_name=resnet50 --dataset=imagenet2012 --enable_modelarts=True --class_num=5 --config_path=./resnet/config/resnet50_imagenet2012_config.yaml --epoch_size=10 --device_target="Ascend" --enable_modelarts=True', # 执行训练命令 train_instance_type="modelarts.p3.large.public", # 虚拟资源规格,不同region的资源规格可能不同,请参考“Estimator参数说明”表下的说明查询修改 train_instance_count=1, # 节点数,适用于多机分布式训练,默认是1 #pool_id='若指定专属池,替换为页面上查到的poolId',同时修改资源规格为专属池专用的虚拟子规格 log_url=log_obs_path ) # job_name是可选参数,可不填随机生成工作名 job_instance = estimator.fit(inputs=[input_data], job_name="modelarts_training_job_with_sdk_by_command_v01") 表1 Estimator参数说明 参数名称 参数说明 session modelarts session training_files 训练代码的路径和启动文件 user_image_url 自定义镜像swr地址,由镜像仓库组织/镜像名称:镜像tag组成 user_command 执行训练命令 train_instance_type 本地调测'local'或云端资源规格。每个region的资源规格可能是不同的,可以通过下述说明查询对应的资源规格信息。 train_instance_count 节点数 log_url 日志输出路径 job_name 作业名称,不可以重复 train_instance_type表示训练的资源规格,每个region的资源规格可能是不同的。通过如下方法查询资源规格: 公共资源池执行如下命令查询 from modelarts.session import Session from modelarts.estimatorV2 import Estimator from pprint import pprint # 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全; # 本示例以ak和sk保存在环境变量中来实现身份验证为例,运行本示例前请先在本地环境中设置环境变量HUAWEICLOUD_SDK_AK和HUAWEICLOUD_SDK_SK。 __AK = os.environ["HUAWEICLOUD_SDK_AK"] __SK = os.environ["HUAWEICLOUD_SDK_SK"] # 如果进行了加密还需要进行解密操作 session = Session(access_key=__AK,secret_key=__SK, project_id='***', region_name='***') info = Estimator.get_train_instance_types(session=session) pprint(info) 专属池规格 ModelArts专属资源池统一使用虚拟子规格,不区分GPU和Ascend。资源规格参考表2查询。 表2 专属资源池虚拟规格的说明 train_instance_type 说明 modelarts.pool.visual.xlarge 1卡 modelarts.pool.visual.2xlarge 2卡 modelarts.pool.visual.4xlarge 4卡 modelarts.pool.visual.8xlarge 8卡
-
创建rf_admin_trust委托(可选) 进入华为云官网,打开控制台管理界面,鼠标移动至个人账号处,打开“ 统一身份认证 ”菜单。 图1 控制台管理界面 图2 统一身份认证菜单 进入“委托”菜单,搜索“rf_admin_trust”委托。 图3 委托列表 如果委托存在,则不用执行接下来的创建委托的步骤 如果委托不存在时执行接下来的步骤创建委托 单击步骤2界面中的“创建委托”按钮,在委托名称中输入“rf_admin_trust”,委托类型选择“云服务”,选择“ RFS ”,单击“下一步”。 图4 创建委托 在搜索框中输入“Tenant Administrator”权限,并勾选搜索结果。 图5 选择策略 选择“所有资源”,并单击下一步完成配置。 图6 设置授权范围 “委托”列表中出现“rf_admin_trust”委托则创建成功。 图7 委托列表
-
修订记录 发布日期 修改记录 2024-07-12 第四次正式发布。 优化如下章节: MSSI服务计费概述 MSSI服务计费模式概述 包年/包月 按需计费 计费项 2024-04-24 第三次正式发布。 优化如下章节: MSSI服务计费模式概述 计费项 新增退订服务及其子章节。 2024-03-13 第二次正式发布。 修改如下章节: 包年/包月 计费项 手动续费 2023-11-16 第一次正式发布。
-
计费说明 MSSI服务根据购买的套餐包计费或按需计费。具体内容如表1所示。 如果您需要快速了解MSSI服务的具体价格,请参见MSSI价格详情。 APIG与Astro轻应用计费不在MSSI服务体现,需要单独去对应的服务订购。 公共连接器的计费,按第三方服务计费规则计费,MSSI侧不计费。 表1 MSSI计费项 计费项 计费项说明 适用的计费模式 计费公式 运行流实例 包括运行流实例数量及使用时长。 按需计费:支持 包年/包月:需要与其他计费项一起使用 按需计费:实例数量*实例单价 * 计费时长 包年/包月:详见套餐包价格 运行流实例单价及套餐包价格请参见MSSI价格详情。 模型数 包含表、视图、逻辑模型、资产元数据如连接器等。 按需计费:不支持 包年/包月:支持与其他计费项一起使用,也可单独计费 套餐包价格请参见MSSI价格详情。 采集任务 可以使用的采集任务的数量。 按需计费:不支持 包年/包月:需要与其他计费项一起使用 套餐包价格请参见MSSI价格详情。 可运行页面数 包含屏幕模板数、屏幕数。布局模板不受限制。 按需计费:不支持 包年/包月:需要与其他计费项一起使用 套餐包价格请参见MSSI价格详情。 卡片数 该套餐包中的卡片数。包含卡片模板数、卡片数。 按需计费:不支持 包年/包月:需要与其他计费项一起使用 套餐包价格请参见MSSI价格详情。
-
计费示例 以包年/包月套餐包计费模式为例,假设您在2023/10/17 10:49:04购买了时长为1个月的套餐规格为40的自动化流专业版,并在到期前手动续费1个月,则: 第一个计费周期为:2023/10/17 10:49:04 ~ 2023/11/17 23:59:59 第二个计费周期为:2023/11/17 23:59:59 ~ 2023/12/17 23:59:59 您需要为每个计费周期预先付费,计费公式如表2所示。 表2 计费公式 资源类型 计费公式 资源单价 自动化流专业版 套餐包单价 * 购买时长 请参见MSSI价格详情中的套餐包单价。 按需计费模式下,各计费项的计费示例请参见计费示例。
-
计费示例 假设您在2023/10/18 10:58:00开启了一条流,然后在2023/10/18 11:05:05将其删除,则: 第一个计费周期为10:00:00 ~ 11:00:00,在10:58:00 ~ 10:00:00间产生费用,该计费周期内的计费时长为120秒。 第二个计费周期为11:00:00 ~ 12:00:00,在11:00:00 ~ 11:05:05间产生费用,该计费周期内的计费时长为305秒。 您需要为每个计费周期付费,计费公式如表2所示。 表2 计费公式 资源类型 计费公式 资源单价 流运行实例 实例数量*实例单价 * 计费时长 请参见MSSI价格详情中的流运行实例单价。
-
资源和成本规划 该解决方案主要部署如下资源,每月花费如表1所示,具体请参考华为云官网价格详情,实际收费以账单为准: ECS实例费用需根据实际的迁移服务器规格参考。详细请见 华为云Flexus云服务器X实例计费说明。 弹性公网 EIP 流量费用¥0.82/GB/小时,费用需根据实际使用情况。 迁移服务本身不收费,但在迁移中会产生少量其他服务费用(云硬盘费用及流量费用)。 主机迁移服务 在迁移过程中会在目的端服务器临时创建并挂载一个容量为40 GB的磁盘,用于辅助迁移。有关云硬盘的收费标准,请参见云硬盘价格说明。详细请见 计费说明。 表1 资源和成本规划 华为云服务 配置示例 每月花费 华为云Flexus云服务器X实例 区域:华北-北京四 计费模式:按需计费 规格:X86计算 | Flexus云服务器X实例 | 性能模式(关闭)| 1vCPUs | 1GiB 镜像:CentOS 7.6 64bit 系统盘:超高IO | 40GB 购买量:1 100.80元 弹性公网IP EIP 区域:华北-北京四 计费模式:按流量计费 线路:全动态BGP 带宽大小:10 Mbit/s 购买量:1 0.82/GB/小时 主机迁移 服务 SMS 主机迁移服务本身不收费,但是在迁移过程中会产生少量其他服务费用,本方案采用弹性公网EIP按流量收费。其他服务收费详细请见 计费说明。 创建虚拟机配置模板 区域:华北-北京四 虚拟机规格:(用户输入) / 合计 - 100.80元+0.82/GB/小时
-
安全组规则修改(可选) 安全组实际是网络流量访问策略,包括网络流量入方向规则和出方向规则,通过这些规则为安全组内具有相同保护需求并且相互信任的云服务器、云容器、云数据库等实例提供安全保护。 如果您的实例关联的安全组策略无法满足使用需求,比如需要添加、修改、删除某个TCP端口,请参考以下内容进行修改。 添加安全组规则:根据业务使用需求需要开放某个TCP端口,请参考添加安全组规则添加入方向规则,打开指定的TCP端口。 修改安全组规则:安全组规则设置不当会造成严重的安全隐患。您可以参考修改安全组规则,来修改安全组中不合理的规则,保证云服务器等实例的网络安全。 删除安全组规则:当安全组规则入方向、出方向源地址/目的地址有变化时,或者不需要开放某个端口时,您可以参考删除安全组规则进行安全组规则删除。
-
约束与限制 该解决方案部署前,需 注册华为账号 并开通华为云,完成实名认证,且账号不能处于欠费或冻结状态。 源端服务器的 OS 类型需要包含在Linux兼容性列表中。 源端服务器绑定的EIP需保证能正常访问外网。 主机迁移过程中不可以释放/修改弹性公网 EIP。这是由于源端迁移Agent会记录迁移开始时的目的端EIP,并在迁移和同步过程中通过该EIP进行数据传输。在迁移/同步过程中,释放/修改目的端EIP,会造成迁移/同步任务失败。在迁移正常完成后,并且确认后续不再进行数据同步,才可以释放/修改目的端EIP。 主机迁移服务在迁移过程中会在目的端服务器临时创建并挂载一个容量为40 GB的磁盘,用于辅助迁移,该磁盘会在迁移结束后自动删除。迁移期间,请勿对该磁盘进行删除操作或将计费模式转为包周期操作,否则会导致迁移失败。 使用现有安全组进行迁移服务时,必须开放22端口,否则会导致迁移失败。选择新创建安全组,迁移完成后,如需更改安全组,请参照安全组规则修改(可选)。 其它详细约束限制请参考 主机迁移服务 SMS 使用须知。
-
快速部署 本章节主要指导用户如何自动化部署“Linux服务器迁移上云”解决方案。 表1 参数说明 参数名称 类型 是否可选 参数解释 默认值 template_name string 必填 模板名称,用于定义创建资源前缀,不支持重名。仅支持小写字母、数字、下划线(_)、中划线(-)、英文句号(.)。默认migrate-sms。 migrate-sms task_type string 必填 迁移任务类型,可用值是 MIGRATE_FILE(文件级迁移)和MIGRATE_BLOCK(块级迁移)。默认MIGRATE_FILE。 MIGRATE_FILE source_server_name string 必填 源端服务器名称,不允许重名。取值范围:1-64个字符组成,包括字母、数字、下划线 (_)、连字符 (-) 和点 (.) 空 target_vpc_name string 必填 目的服务器虚拟私有云名称,该模板新建VPC,命名方式为{target_vpc_name}_vpc,不允许重名。取值范围:1-60个字符,支持数字、字母、中文、_(下划线)、-(中划线)、.(点) 空 target_vpc_id string 必填 目的服务器的虚拟私有云ID,如果省略或设置为autoCreate,迁移过程中将自动创建一个新的VPC。默认autoCreate。 autoCreate target_subnet_id string 必填 目的服务器的子网ID,如果省略或设置为autoCreate,迁移过程中将自动创建一个新的子网。默认autoCreate。 autoCreate target_security_group_id string 必填 目的服务器的安全组ID,如果省略或设置为autoCreate,迁移过程中将自动创建一个新的安全组。默认autoCreate。 autoCreate target_volume_type string 必填 目的服务器的磁盘类型,需要与系统所提供的磁盘类型相匹配。目前支持“SSD”,“GPSSD”和“SAS”三种。默认SSD SSD target_flavor string 必填 目的服务器规格,其他规格请参考官网弹性云服务器规格清单。 x1.1u.1g target_server_name string 必填 目的服务器名称,不允许重名。取值范围:1-64个字符组成,包括字母、数字、下划线 (_)、连字符 (-) 和点 (.)。默认Test_target_server。 Test_target_server target_server_syncing bool 必填 指定是否在第一次复制后执行连续同步。默认值为false。 false target_vpc_cidr string 必填 子网的网段,取值范围:必须在vpc对应cidr范围内,约束:必须是cidr格式。掩码长度不能大于28。默认192.168.0.0/16。 192.168.0.0/16 use_public_ip bool 必填 指定是否使用公共 IP 地址进行迁移。默认值为true。 true bandwidth_size number 必填 用于迁移的公共 IP 地址的带宽大小,取值范围:1-300 Mbit/s,默认10Mbit/s。 10 登录华为云解决方案实践,选择“Linux服务器迁移上云”。数据中心下拉菜单可以选择需要部署的区域,单击“一键部署”,跳转至解决方案创建堆栈界面。 图1 解决方案实施库 在选择模板界面中,单击“下一步”。 图2 选择模板 在配置参数界面中,自定义填写堆栈名称,参考表1完成自定义参数填写,单击“下一步”。 图3 参数配置 在资源栈设置页面中,权限委托选择“rf_admin_trust”,单击“下一步”。 图4 资源栈设置 在配置确认页面中,单击“创建执行计划”。 图5 配置确认 单击“创建执行计划”,根据提示输入执行计划名称等,单击“确定”。 图6 创建执行计划 图7 执行计划创建成功 单击“部署”,弹出执行计划提示信息,单击“执行”确认执行。 图8 执行计划确认 等待解决方案自动部署。部署成功后,单击“事件”,回显结果如下: 图9 资源创建成功 图10 执行计划完成 父主题: 实施步骤
-
名词解释 基本概念、云服务简介、专有名词解释 弹性云服务器 ECS:是一种云上可随时自助获取、可弹性伸缩的计算服务,可帮助您打造安全、可靠、灵活、高效的应用环境。 虚拟私有云 VPC:是用户在华为云上申请的隔离的、私密的虚拟网络环境。用户可以基于VPC构建独立的云上网络空间,配合弹性公网IP、云连接、云专线等服务实现与Internet、云内私网、跨云私网互通,帮您打造可靠、稳定、高效的专属云上网络。 弹性公网 IP:提供独立的公网IP资源,包括公网IP地址与公网出口带宽服务。可以与弹性云服务器、裸金属服务器、虚拟IP、弹性负载均衡、NAT网关等资源灵活地绑定及解绑,提供访问公网和被公网访问能力。 主机迁移服务 SMS:主机迁移服务(Server Migration Service)是一种P2V/V2V迁移服务,可以帮您把X86物理服务器,或者私有云、公有云平台上的虚拟机迁移到华为云弹性云服务器(ECS),从而帮助您轻松地把服务器上应用和数据迁移到华为云。 华为云Flexus云服务器X实例:Flexus云服务器X实例是新一代面向中小企业和开发者打造的柔性算力云服务器。Flexus云服务器X实例功能接近ECS, 同时还具备独有特点,例如Flexus云服务器X实例具有更灵活的vCPU内存配比、支持热变配不中断业务变更规格、支持性能模式等。
-
创建rf_amdin_trust委托 进入华为云官网,打开控制台管理界面,鼠标移动至个人账号处,打开“统一身份认证”菜单。 图2 控制台管理界面 图3 统一身份认证菜单 进入“委托”菜单,搜索“rf_admin_trust”委托。 图4 委托列表 如果委托存在,则不用执行接下来的创建委托的步骤 如果委托不存在时执行接下来的步骤创建委托 单击步骤2界面中的“创建委托”按钮,在委托名称中输入“rf_admin_trust”,委托类型选择“云服务”,输入“RFS”,单击“下一步”。 图5 创建委托 在搜索框中输入“Tenant Administrator”权限,并勾选搜索结果,单击“下一步”。 图6 选择策略 选择“所有资源”,并单击“下一步“完成配置。 图7 设置授权范围 “委托”列表中出现“rf_admin_trust”委托则创建成功。 图8 委托列表
-
proc_part_policy_pgjob_to_pgtask() 该函数仅在时序表从8.1.1升级到8.1.3版本时使用,函数用于迁移本数据库所有8.1.1版本时序表的分区管理任务。本函数将遍历本数据库中所有时序表,并检查时序表的分区管理任务是否迁移,如果没有迁移,则调用ts_table_part_policy_pgjob_to_pgtask函数,迁移该时序表的分区管理任务。如果中途出现迁移失败,则整体回滚。 示例: CALL proc_part_policy_pgjob_to_pgtask(); NOTICE: find table, name is cpu1, namespace is public. WARNING: The job on pg_jobs is migrated to pg_task, and the original job is broken, the job what is call proc_drop_partition('public.cpu1', interval '7 d'); , the job interval is interval '1 day'. CONTEXT: SQL statement "call ts_table_part_policy_pgjob_to_pgtask('public', 'cpu1');" PL/pgSQL function proc_part_policy_pgjob_to_pgtask() line 17 at EXECUTE statement WARNING: The job on pg_jobs is migrated to pg_task, and the original job is broken, the job what is call proc_add_partition('public.cpu1', interval '1 d'); , the job interval is interval '1 day'. CONTEXT: SQL statement "call ts_table_part_policy_pgjob_to_pgtask('public', 'cpu1');" PL/pgSQL function proc_part_policy_pgjob_to_pgtask() line 17 at EXECUTE statement NOTICE: find table, name is cpu2, namespace is public. WARNING: The job on pg_jobs is migrated to pg_task, and the original job is broken, the job what is call proc_add_partition('public.cpu2', interval '1 d'); , the job interval is interval '1 day'. CONTEXT: SQL statement "call ts_table_part_policy_pgjob_to_pgtask('public', 'cpu2');" PL/pgSQL function proc_part_policy_pgjob_to_pgtask() line 17 at EXECUTE statement proc_part_policy_pgjob_to_pgtask -------------------------------------- (1 row)
-
print_sql_part_policy_pgjob_to_pgtask() 该函数仅在时序表从8.1.1升级到8.1.3版本时使用,该函数用于打印SQL语句,每条语句可用于迁移单个8.1.1版本时序表的分区管理任务。由于proc_part_policy_pgjob_to_pgtask函数的迁移粒度是数据库级别,因此引入本函数,使用者可以手动执行本函数的打印内容,以实现单个时序表的迁移粒度。 示例: CALL print_sql_part_policy_pgjob_to_pgtask(); call ts_table_part_policy_pgjob_to_pgtask('public', 'cpu1'); call ts_table_part_policy_pgjob_to_pgtask('public', 'cpu2'); print_sql_part_policy_pgjob_to_pgtask --------------------------------------- (1 row)
-
get_timeline_count(relname regclass) 函数用于获取时序表在各个DN节点上tag表的行数,只能在CN节点上使用。 参数名 类型 描述 Required/Option relname regclass 时序表的名称。 Required 示例: 建表和导入数据与get_timeline_count_internal函数实例相同,连接CN节点,执行该函数。 1 2 3 4 5 6 select get_timeline_count('cpu'); get_timeline_count -------------------- (dn_1,2) (dn_2,1) (2 rows)
共100000条
- 1
- ...
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
- 101
- 102
- 103
- 104
- 105
- 106
- 107
- 108
- 109
- 110
- 111
- 112
- 113
- 114
- 115
- 116
- 117
- 118
- 119
- 120
- 121
- 122
- 123
- 124
- 125
- 126
- 127
- 128
- 129
- 130
- 131
- 132
- 133
- 134
- 135
- 136
- 137
- 138
- 139
- 140
- 141
- 142
- 143
- 144
- 145
- 146
- 147
- 148
- 149
- 150
- 151
- 152
- 153
- 154
- 155
- 156
- 157
- 158
- 159
- 160
- 161
- 162
- 163
- 164
- 165
- 166
- 167
- 168
- 169
- 170
- 171
- 172
- 173
- 174
- 175
- 176
- 177
- 178
- 179
- 180
- 181
- 182
- 183
- 184
- 185
- 186
- 187
- 188
- 189
- 190
- 191
- 192
- 193
- 194
- 195
- 196
- 197
- 198
- 199
- 200
- 201
- 202
- 203
- 204
- 205
- 206
- 207
- 208
- 209
- 210
- 211
- 212
- 213
- 214
- 215
- 216
- 217
- 218
- 219
- 220
- 221
- 222
- 223
- 224
- 225
- 226
- 227
- 228
- 229
- 230
- 231
- 232
- 233
- 234
- 235
- 236
- 237
- 238
- 239
- 240
- 241
- 242
- 243
- 244
- 245
- 246
- 247
- 248
- 249
- 250
- 251
- 252
- 253
- 254
- 255
- 256
- 257
- 258
- 259
- 260
- 261
- 262
- 263
- 264
- 265
- 266
- 267
- 268
- 269
- 270
- 271
- 272
- 273
- 274
- 275
- 276
- 277
- 278
- 279
- 280
- 281
- 282
- 283
- 284
- 285
- 286
- 287
- 288
- 289
- 290
- 291
- 292
- 293
- 294
- 295
- 296
- 297
- 298
- 299
- 300
- 301
- 302
- 303
- 304
- 305
- 306
- 307
- 308
- 309
- 310
- 311
- 312
- 313
- 314
- 315
- 316
- 317
- 318
- 319
- 320
- 321
- 322
- 323
- 324
- 325
- 326
- 327
- 328
- 329
- 330
- 331
- 332
- 333
- 334
- 335
- 336
- 337
- 338
- 339
- 340
- 341
- 342
- 343
- 344
- 345
- 346
- 347
- 348
- 349
- 350
- 351
- 352
- 353
- 354
- 355
- 356
- 357
- 358
- 359
- 360
- 361
- 362
- 363
- 364
- 365
- 366
- 367
- 368
- 369
- 370
- 371
- 372
- 373
- 374
- 375
- 376
- 377
- 378
- 379
- 380
- 381
- 382
- 383
- 384
- 385
- 386
- 387
- 388
- 389
- 390
- 391
- 392
- 393
- 394
- 395
- 396
- 397
- 398
- 399
- 400
- 401
- 402
- 403
- 404
- 405
- 406
- 407
- 408
- 409
- 410
- 411
- 412
- 413
- 414
- 415
- 416
- 417
- 418
- 419
- 420
- 421
- 422
- 423
- 424
- 425
- 426
- 427
- 428
- 429
- 430
- 431
- 432
- 433
- 434
- 435
- 436
- 437
- 438
- 439
- 440
- 441
- 442
- 443
- 444
- 445
- 446
- 447
- 448
- 449
- 450
- 451
- 452
- 453
- 454
- 455
- 456
- 457
- 458
- 459
- 460
- 461
- 462
- 463
- 464
- 465
- 466
- 467
- 468
- 469
- 470
- 471
- 472
- 473
- 474
- 475
- 476
- 477
- 478
- 479
- 480
- 481
- 482
- 483
- 484
- 485
- 486
- 487
- 488
- 489
- 490
- 491
- 492
- 493
- 494
- 495
- 496
- 497
- 498
- 499
- 500
- 501
- 502
- 503
- 504
- 505
- 506
- 507
- 508
- 509
- 510
- 511
- 512
- 513
- 514
- 515
- 516
- 517
- 518
- 519
- 520
- 521
- 522
- 523
- 524
- 525
- 526
- 527
- 528
- 529
- 530
- 531
- 532
- 533
- 534
- 535
- 536
- 537
- 538
- 539
- 540
- 541
- 542
- 543
- 544
- 545
- 546
- 547
- 548
- 549
- 550
- 551
- 552
- 553
- 554
- 555
- 556
- 557
- 558
- 559
- 560
- 561
- 562
- 563
- 564
- 565
- 566
- 567
- 568
- 569
- 570
- 571
- 572
- 573
- 574
- 575
- 576
- 577
- 578
- 579
- 580
- 581
- 582
- 583
- 584
- 585
- 586
- 587
- 588
- 589
- 590
- 591
- 592
- 593
- 594
- 595
- 596
- 597
- 598
- 599
- 600
- 601
- 602
- 603
- 604
- 605
- 606
- 607
- 608
- 609
- 610
- 611
- 612
- 613
- 614
- 615
- 616
- 617
- 618
- 619
- 620
- 621
- 622
- 623
- 624
- 625
- 626
- 627
- 628
- 629
- 630
- 631
- 632
- 633
- 634
- 635
- 636
- 637
- 638
- 639
- 640
- 641
- 642
- 643
- 644
- 645
- 646
- 647
- 648
- 649
- 650
- 651
- 652
- 653
- 654
- 655
- 656
- 657
- 658
- 659
- 660
- 661
- 662
- 663
- 664
- 665
- 666
- 667
- 668
- 669
- 670
- 671
- 672
- 673
- 674
- 675
- 676
- 677
- 678
- 679
- 680
- 681
- 682
- 683
- 684
- 685
- 686
- 687
- 688
- 689
- 690
- 691
- 692
- 693
- 694
- 695
- 696
- 697
- 698
- 699
- 700
- 701
- 702
- 703
- 704
- 705
- 706
- 707
- 708
- 709
- 710
- 711
- 712
- 713
- 714
- 715
- 716
- 717
- 718
- 719
- 720
- 721
- 722
- 723
- 724
- 725
- 726
- 727
- 728
- 729
- 730
- 731
- 732
- 733
- 734
- 735
- 736
- 737
- 738
- 739
- 740
- 741
- 742
- 743
- 744
- 745
- 746
- 747
- 748
- 749
- 750
- 751
- 752
- 753
- 754
- 755
- 756
- 757
- 758
- 759
- 760
- 761
- 762
- 763
- 764
- 765
- 766
- 767
- 768
- 769
- 770
- 771
- 772
- 773
- 774
- 775
- 776
- 777
- 778
- 779
- 780
- 781
- 782
- 783
- 784
- 785
- 786
- 787
- 788
- 789
- 790
- 791
- 792
- 793
- 794
- 795
- 796
- 797
- 798
- 799
- 800
- 801
- 802
- 803
- 804
- 805
- 806
- 807
- 808
- 809
- 810
- 811
- 812
- 813
- 814
- 815
- 816
- 817
- 818
- 819
- 820
- 821
- 822
- 823
- 824
- 825
- 826
- 827
- 828
- 829
- 830
- 831
- 832
- 833
- 834
- 835
- 836
- 837
- 838
- 839
- 840
- 841
- 842
- 843
- 844
- 845
- 846
- 847
- 848
- 849
- 850
- 851
- 852
- 853
- 854
- 855
- 856
- 857
- 858
- 859
- 860
- 861
- 862
- 863
- 864
- 865
- 866
- 867
- 868
- 869
- 870
- 871
- 872
- 873
- 874
- 875
- 876
- 877
- 878
- 879
- 880
- 881
- 882
- 883
- 884
- 885
- 886
- 887
- 888
- 889
- 890
- 891
- 892
- 893
- 894
- 895
- 896
- 897
- 898
- 899
- 900
- 901
- 902
- 903
- 904
- 905
- 906
- 907
- 908
- 909
- 910
- 911
- 912
- 913
- 914
- 915
- 916
- 917
- 918
- 919
- 920
- 921
- 922
- 923
- 924
- 925
- 926
- 927
- 928
- 929
- 930
- 931
- 932
- 933
- 934
- 935
- 936
- 937
- 938
- 939
- 940
- 941
- 942
- 943
- 944
- 945
- 946
- 947
- 948
- 949
- 950
- 951
- 952
- 953
- 954
- 955
- 956
- 957
- 958
- 959
- 960
- 961
- 962
- 963
- 964
- 965
- 966
- 967
- 968
- 969
- 970
- 971
- 972
- 973
- 974
- 975
- 976
- 977
- 978
- 979
- 980
- 981
- 982
- 983
- 984
- 985
- 986
- 987
- 988
- 989
- 990
- 991
- 992
- 993
- 994
- 995
- 996
- 997
- 998
- 999
- 1000
- 1001
- 1002
- 1003
- 1004
- 1005
- 1006
- 1007
- 1008
- 1009
- 1010
- 1011
- 1012
- 1013
- 1014
- 1015
- 1016
- 1017
- 1018
- 1019
- 1020
- 1021
- 1022
- 1023
- 1024
- 1025
- 1026
- 1027
- 1028
- 1029
- 1030
- 1031
- 1032
- 1033
- 1034
- 1035
- 1036
- 1037
- 1038
- 1039
- 1040
- 1041
- 1042
- 1043
- 1044
- 1045
- 1046
- 1047
- 1048
- 1049
- 1050
- 1051
- 1052
- 1053
- 1054
- 1055
- 1056
- 1057
- 1058
- 1059
- 1060
- 1061
- 1062
- 1063
- 1064
- 1065
- 1066
- 1067
- 1068
- 1069
- 1070
- 1071
- 1072
- 1073
- 1074
- 1075
- 1076
- 1077
- 1078
- 1079
- 1080
- 1081
- 1082
- 1083
- 1084
- 1085
- 1086
- 1087
- 1088
- 1089
- 1090
- 1091
- 1092
- 1093
- 1094
- 1095
- 1096
- 1097
- 1098
- 1099
- 1100
- 1101
- 1102
- 1103
- 1104
- 1105
- 1106
- 1107
- 1108
- 1109
- 1110
- 1111
- 1112
- 1113
- 1114
- 1115
- 1116
- 1117
- 1118
- 1119
- 1120
- 1121
- 1122
- 1123
- 1124
- 1125
- 1126
- 1127
- 1128
- 1129
- 1130
- 1131
- 1132
- 1133
- 1134
- 1135
- 1136
- 1137
- 1138
- 1139
- 1140
- 1141
- 1142
- 1143
- 1144
- 1145
- 1146
- 1147
- 1148
- 1149
- 1150
- 1151
- 1152
- 1153
- 1154
- 1155
- 1156
- 1157
- 1158
- 1159
- 1160
- 1161
- 1162
- 1163
- 1164
- 1165
- 1166
- 1167
- 1168
- 1169
- 1170
- 1171
- 1172
- 1173
- 1174
- 1175
- 1176
- 1177
- 1178
- 1179
- 1180
- 1181
- 1182
- 1183
- 1184
- 1185
- 1186
- 1187
- 1188
- 1189
- 1190
- 1191
- 1192
- 1193
- 1194
- 1195
- 1196
- 1197
- 1198
- 1199
- 1200
- 1201
- 1202
- 1203
- 1204
- 1205
- 1206
- 1207
- 1208
- 1209
- 1210
- 1211
- 1212
- 1213
- 1214
- 1215
- 1216
- 1217
- 1218
- 1219
- 1220
- 1221
- 1222
- 1223
- 1224
- 1225
- 1226
- 1227
- 1228
- 1229
- 1230
- 1231
- 1232
- 1233
- 1234
- 1235
- 1236
- 1237
- 1238
- 1239
- 1240
- 1241
- 1242
- 1243
- 1244
- 1245
- 1246
- 1247
- 1248
- 1249
- 1250
- 1251
- 1252
- 1253
- 1254
- 1255
- 1256
- 1257
- 1258
- 1259
- 1260
- 1261
- 1262
- 1263
- 1264
- 1265
- 1266
- 1267
- 1268
- 1269
- 1270
- 1271
- 1272
- 1273
- 1274
- 1275
- 1276
- 1277
- 1278
- 1279
- 1280
- 1281
- 1282
- 1283
- 1284
- 1285
- 1286
- 1287
- 1288
- 1289
- 1290
- 1291
- 1292
- 1293
- 1294
- 1295
- 1296
- 1297
- 1298
- 1299
- 1300
- 1301
- 1302
- 1303
- 1304
- 1305
- 1306
- 1307
- 1308
- 1309
- 1310
- 1311
- 1312
- 1313
- 1314
- 1315
- 1316
- 1317
- 1318
- 1319
- 1320
- 1321
- 1322
- 1323
- 1324
- 1325
- 1326
- 1327
- 1328
- 1329
- 1330
- 1331
- 1332
- 1333
- 1334
- 1335
- 1336
- 1337
- 1338
- 1339
- 1340
- 1341
- 1342
- 1343
- 1344
- 1345
- 1346
- 1347
- 1348
- 1349
- 1350
- 1351
- 1352
- 1353
- 1354
- 1355
- 1356
- 1357
- 1358
- 1359
- 1360
- 1361
- 1362
- 1363
- 1364
- 1365
- 1366
- 1367
- 1368
- 1369
- 1370
- 1371
- 1372
- 1373
- 1374
- 1375
- 1376
- 1377
- 1378
- 1379
- 1380
- 1381
- 1382
- 1383
- 1384
- 1385
- 1386
- 1387
- 1388
- 1389
- 1390
- 1391
- 1392
- 1393
- 1394
- 1395
- 1396
- 1397
- 1398
- 1399
- 1400
- 1401
- 1402
- 1403
- 1404
- 1405
- 1406
- 1407
- 1408
- 1409
- 1410
- 1411
- 1412
- 1413
- 1414
- 1415
- 1416
- 1417
- 1418
- 1419
- 1420
- 1421
- 1422
- 1423
- 1424
- 1425
- 1426
- 1427
- 1428
- 1429
- 1430
- 1431
- 1432
- 1433
- 1434
- 1435
- 1436
- 1437
- 1438
- 1439
- 1440
- 1441
- 1442
- 1443
- 1444
- 1445
- 1446
- 1447
- 1448
- 1449
- 1450
- 1451
- 1452
- 1453
- 1454
- 1455
- 1456
- 1457
- 1458
- 1459
- 1460
- 1461
- 1462
- 1463
- 1464
- 1465
- 1466
- 1467
- 1468
- 1469
- 1470
- 1471
- 1472
- 1473
- 1474
- 1475
- 1476
- 1477
- 1478
- 1479
- 1480
- 1481
- 1482
- 1483
- 1484
- 1485
- 1486
- 1487
- 1488
- 1489
- 1490
- 1491
- 1492
- 1493
- 1494
- 1495
- 1496
- 1497
- 1498
- 1499
- 1500
- 1501
- 1502
- 1503
- 1504
- 1505
- 1506
- 1507
- 1508
- 1509
- 1510
- 1511
- 1512
- 1513
- 1514
- 1515
- 1516
- 1517
- 1518
- 1519
- 1520
- 1521
- 1522
- 1523
- 1524
- 1525
- 1526
- 1527
- 1528
- 1529
- 1530
- 1531
- 1532
- 1533
- 1534
- 1535
- 1536
- 1537
- 1538
- 1539
- 1540
- 1541
- 1542
- 1543
- 1544
- 1545
- 1546
- 1547
- 1548
- 1549
- 1550
- 1551
- 1552
- 1553
- 1554
- 1555
- 1556
- 1557
- 1558
- 1559
- 1560
- 1561
- 1562
- 1563
- 1564
- 1565
- 1566
- 1567
- 1568
- 1569
- 1570
- 1571
- 1572
- 1573
- 1574
- 1575
- 1576
- 1577
- 1578
- 1579
- 1580
- 1581
- 1582
- 1583
- 1584
- 1585
- 1586
- 1587
- 1588
- 1589
- 1590
- 1591
- 1592
- 1593
- 1594
- 1595
- 1596
- 1597
- 1598
- 1599
- 1600
- 1601
- 1602
- 1603
- 1604
- 1605
- 1606
- 1607
- 1608
- 1609
- 1610
- 1611
- 1612
- 1613
- 1614
- 1615
- 1616
- 1617
- 1618
- 1619
- 1620
- 1621
- 1622
- 1623
- 1624
- 1625
- 1626
- 1627
- 1628
- 1629
- 1630
- 1631
- 1632
- 1633
- 1634
- 1635
- 1636
- 1637
- 1638
- 1639
- 1640
- 1641
- 1642
- 1643
- 1644
- 1645
- 1646
- 1647
- 1648
- 1649
- 1650
- 1651
- 1652
- 1653
- 1654
- 1655
- 1656
- 1657
- 1658
- 1659
- 1660
- 1661
- 1662
- 1663
- 1664
- 1665
- 1666
- 1667
- 1668
- 1669
- 1670
- 1671
- 1672
- 1673
- 1674
- 1675
- 1676
- 1677
- 1678
- 1679
- 1680
- 1681
- 1682
- 1683
- 1684
- 1685
- 1686
- 1687
- 1688
- 1689
- 1690
- 1691
- 1692
- 1693
- 1694
- 1695
- 1696
- 1697
- 1698
- 1699
- 1700
- 1701
- 1702
- 1703
- 1704
- 1705
- 1706
- 1707
- 1708
- 1709
- 1710
- 1711
- 1712
- 1713
- 1714
- 1715
- 1716
- 1717
- 1718
- 1719
- 1720
- 1721
- 1722
- 1723
- 1724
- 1725
- 1726
- 1727
- 1728
- 1729
- 1730
- 1731
- 1732
- 1733
- 1734
- 1735
- 1736
- 1737
- 1738
- 1739
- 1740
- 1741
- 1742
- 1743
- 1744
- 1745
- 1746
- 1747
- 1748
- 1749
- 1750
- 1751
- 1752
- 1753
- 1754
- 1755
- 1756
- 1757
- 1758
- 1759
- 1760
- 1761
- 1762
- 1763
- 1764
- 1765
- 1766
- 1767
- 1768
- 1769
- 1770
- 1771
- 1772
- 1773
- 1774
- 1775
- 1776
- 1777
- 1778
- 1779
- 1780
- 1781
- 1782
- 1783
- 1784
- 1785
- 1786
- 1787
- 1788
- 1789
- 1790
- 1791
- 1792
- 1793
- 1794
- 1795
- 1796
- 1797
- 1798
- 1799
- 1800
- 1801
- 1802
- 1803
- 1804
- 1805
- 1806
- 1807
- 1808
- 1809
- 1810
- 1811
- 1812
- 1813
- 1814
- 1815
- 1816
- 1817
- 1818
- 1819
- 1820
- 1821
- 1822
- 1823
- 1824
- 1825
- 1826
- 1827
- 1828
- 1829
- 1830
- 1831
- 1832
- 1833
- 1834
- 1835
- 1836
- 1837
- 1838
- 1839
- 1840
- 1841
- 1842
- 1843
- 1844
- 1845
- 1846
- 1847
- 1848
- 1849
- 1850
- 1851
- 1852
- 1853
- 1854
- 1855
- 1856
- 1857
- 1858
- 1859
- 1860
- 1861
- 1862
- 1863
- 1864
- 1865
- 1866
- 1867
- 1868
- 1869
- 1870
- 1871
- 1872
- 1873
- 1874
- 1875
- 1876
- 1877
- 1878
- 1879
- 1880
- 1881
- 1882
- 1883
- 1884
- 1885
- 1886
- 1887
- 1888
- 1889
- 1890
- 1891
- 1892
- 1893
- 1894
- 1895
- 1896
- 1897
- 1898
- 1899
- 1900
- 1901
- 1902
- 1903
- 1904
- 1905
- 1906
- 1907
- 1908
- 1909
- 1910
- 1911
- 1912
- 1913
- 1914
- 1915
- 1916
- 1917
- 1918
- 1919
- 1920
- 1921
- 1922
- 1923
- 1924
- 1925
- 1926
- 1927
- 1928
- 1929
- 1930
- 1931
- 1932
- 1933
- 1934
- 1935
- 1936
- 1937
- 1938
- 1939
- 1940
- 1941
- 1942
- 1943
- 1944
- 1945
- 1946
- 1947
- 1948
- 1949
- 1950
- 1951
- 1952
- 1953
- 1954
- 1955
- 1956
- 1957
- 1958
- 1959
- 1960
- 1961
- 1962
- 1963
- 1964
- 1965
- 1966
- 1967
- 1968
- 1969
- 1970
- 1971
- 1972
- 1973
- 1974
- 1975
- 1976
- 1977
- 1978
- 1979
- 1980
- 1981
- 1982
- 1983
- 1984
- 1985
- 1986
- 1987
- 1988
- 1989
- 1990
- 1991
- 1992
- 1993
- 1994
- 1995
- 1996
- 1997
- 1998
- 1999
- 2000
- 2001
- 2002
- 2003
- 2004
- 2005
- 2006
- 2007
- 2008
- 2009
- 2010
- 2011
- 2012
- 2013
- 2014
- 2015
- 2016
- 2017
- 2018
- 2019
- 2020
- 2021
- 2022
- 2023
- 2024
- 2025
- 2026
- 2027
- 2028
- 2029
- 2030
- 2031
- 2032
- 2033
- 2034
- 2035
- 2036
- 2037
- 2038
- 2039
- 2040
- 2041
- 2042
- 2043
- 2044
- 2045
- 2046
- 2047
- 2048
- 2049
- 2050
- 2051
- 2052
- 2053
- 2054
- 2055
- 2056
- 2057
- 2058
- 2059
- 2060
- 2061
- 2062
- 2063
- 2064
- 2065
- 2066
- 2067
- 2068
- 2069
- 2070
- 2071
- 2072
- 2073
- 2074
- 2075
- 2076
- 2077
- 2078
- 2079
- 2080
- 2081
- 2082
- 2083
- 2084
- 2085
- 2086
- 2087
- 2088
- 2089
- 2090
- 2091
- 2092
- 2093
- 2094
- 2095
- 2096
- 2097
- 2098
- 2099
- 2100
- 2101
- 2102
- 2103
- 2104
- 2105
- 2106
- 2107
- 2108
- 2109
- 2110
- 2111
- 2112
- 2113
- 2114
- 2115
- 2116
- 2117
- 2118
- 2119
- 2120
- 2121
- 2122
- 2123
- 2124
- 2125
- 2126
- 2127
- 2128
- 2129
- 2130
- 2131
- 2132
- 2133
- 2134
- 2135
- 2136
- 2137
- 2138
- 2139
- 2140
- 2141
- 2142
- 2143
- 2144
- 2145
- 2146
- 2147
- 2148
- 2149
- 2150
- 2151
- 2152
- 2153
- 2154
- 2155
- 2156
- 2157
- 2158
- 2159
- 2160
- 2161
- 2162
- 2163
- 2164
- 2165
- 2166
- 2167
- 2168
- 2169
- 2170
- 2171
- 2172
- 2173
- 2174
- 2175
- 2176
- 2177
- 2178
- 2179
- 2180
- 2181
- 2182
- 2183
- 2184
- 2185
- 2186
- 2187
- 2188
- 2189
- 2190
- 2191
- 2192
- 2193
- 2194
- 2195
- 2196
- 2197
- 2198
- 2199
- 2200
- 2201
- 2202
- 2203
- 2204
- 2205
- 2206
- 2207
- 2208
- 2209
- 2210
- 2211
- 2212
- 2213
- 2214
- 2215
- 2216
- 2217
- 2218
- 2219
- 2220
- 2221
- 2222
- 2223
- 2224
- 2225
- 2226
- 2227
- 2228
- 2229
- 2230
- 2231
- 2232
- 2233
- 2234
- 2235
- 2236
- 2237
- 2238
- 2239
- 2240
- 2241
- 2242
- 2243
- 2244
- 2245
- 2246
- 2247
- 2248
- 2249
- 2250
- 2251
- 2252
- 2253
- 2254
- 2255
- 2256
- 2257
- 2258
- 2259
- 2260
- 2261
- 2262
- 2263
- 2264
- 2265
- 2266
- 2267
- 2268
- 2269
- 2270
- 2271
- 2272
- 2273
- 2274
- 2275
- 2276
- 2277
- 2278
- 2279
- 2280
- 2281
- 2282
- 2283
- 2284
- 2285
- 2286
- 2287
- 2288
- 2289
- 2290
- 2291
- 2292
- 2293
- 2294
- 2295
- 2296
- 2297
- 2298
- 2299
- 2300
- 2301
- 2302
- 2303
- 2304
- 2305
- 2306
- 2307
- 2308
- 2309
- 2310
- 2311
- 2312
- 2313
- 2314
- 2315
- 2316
- 2317
- 2318
- 2319
- 2320
- 2321
- 2322
- 2323
- 2324
- 2325
- 2326
- 2327
- 2328
- 2329
- 2330
- 2331
- 2332
- 2333
- 2334
- 2335
- 2336
- 2337
- 2338
- 2339
- 2340
- 2341
- 2342
- 2343
- 2344
- 2345
- 2346
- 2347
- 2348
- 2349
- 2350
- 2351
- 2352
- 2353
- 2354
- 2355
- 2356
- 2357
- 2358
- 2359
- 2360
- 2361
- 2362
- 2363
- 2364
- 2365
- 2366
- 2367
- 2368
- 2369
- 2370
- 2371
- 2372
- 2373
- 2374
- 2375
- 2376
- 2377
- 2378
- 2379
- 2380
- 2381
- 2382
- 2383
- 2384
- 2385
- 2386
- 2387
- 2388
- 2389
- 2390
- 2391
- 2392
- 2393
- 2394
- 2395
- 2396
- 2397
- 2398
- 2399
- 2400
- 2401
- 2402
- 2403
- 2404
- 2405
- 2406
- 2407
- 2408
- 2409
- 2410
- 2411
- 2412
- 2413
- 2414
- 2415
- 2416
- 2417
- 2418
- 2419
- 2420
- 2421
- 2422
- 2423
- 2424
- 2425
- 2426
- 2427
- 2428
- 2429
- 2430
- 2431
- 2432
- 2433
- 2434
- 2435
- 2436
- 2437
- 2438
- 2439
- 2440
- 2441
- 2442
- 2443
- 2444
- 2445
- 2446
- 2447
- 2448
- 2449
- 2450
- 2451
- 2452
- 2453
- 2454
- 2455
- 2456
- 2457
- 2458
- 2459
- 2460
- 2461
- 2462
- 2463
- 2464
- 2465
- 2466
- 2467
- 2468
- 2469
- 2470
- 2471
- 2472
- 2473
- 2474
- 2475
- 2476
- 2477
- 2478
- 2479
- 2480
- 2481
- 2482
- 2483
- 2484
- 2485
- 2486
- 2487
- 2488
- 2489
- 2490
- 2491
- 2492
- 2493
- 2494
- 2495
- 2496
- 2497
- 2498
- 2499
- 2500
- 2501
- 2502
- 2503
- 2504
- 2505
- 2506
- 2507
- 2508
- 2509
- 2510
- 2511
- 2512
- 2513
- 2514
- 2515
- 2516
- 2517
- 2518
- 2519
- 2520
- 2521
- 2522
- 2523
- 2524
- 2525
- 2526
- 2527
- 2528
- 2529
- 2530
- 2531
- 2532
- 2533
- 2534
- 2535
- 2536
- 2537
- 2538
- 2539
- 2540
- 2541
- 2542
- 2543
- 2544
- 2545
- 2546
- 2547
- 2548
- 2549
- 2550
- 2551
- 2552
- 2553
- 2554
- 2555
- 2556
- 2557
- 2558
- 2559
- 2560
- 2561
- 2562
- 2563
- 2564
- 2565
- 2566
- 2567
- 2568
- 2569
- 2570
- 2571
- 2572
- 2573
- 2574
- 2575
- 2576
- 2577
- 2578
- 2579
- 2580
- 2581
- 2582
- 2583
- 2584
- 2585
- 2586
- 2587
- 2588
- 2589
- 2590
- 2591
- 2592
- 2593
- 2594
- 2595
- 2596
- 2597
- 2598
- 2599
- 2600
- 2601
- 2602
- 2603
- 2604
- 2605
- 2606
- 2607
- 2608
- 2609
- 2610
- 2611
- 2612
- 2613
- 2614
- 2615
- 2616
- 2617
- 2618
- 2619
- 2620
- 2621
- 2622
- 2623
- 2624
- 2625
- 2626
- 2627
- 2628
- 2629
- 2630
- ...
- 2631
- 2632
- 2633
- 2634
- 2635
- 2636
- 2637
- 2638
- 2639
- 2640
- 2641
- 2642
- 2643
- 2644
- 2645
- 2646
- 2647
- 2648
- 2649
- 2650
- 2651
- 2652
- 2653
- 2654
- 2655
- 2656
- 2657
- 2658
- 2659
- 2660
- 2661
- 2662
- 2663
- 2664
- 2665
- 2666
- 2667
- 2668
- 2669
- 2670
- 2671
- 2672
- 2673
- 2674
- 2675
- 2676
- 2677
- 2678
- 2679
- 2680
- 2681
- 2682
- 2683
- 2684
- 2685
- 2686
- 2687
- 2688
- 2689
- 2690
- 2691
- 2692
- 2693
- 2694
- 2695
- 2696
- 2697
- 2698
- 2699
- 2700
- 2701
- 2702
- 2703
- 2704
- 2705
- 2706
- 2707
- 2708
- 2709
- 2710
- 2711
- 2712
- 2713
- 2714
- 2715
- 2716
- 2717
- 2718
- 2719
- 2720
- 2721
- 2722
- 2723
- 2724
- 2725
- 2726
- 2727
- 2728
- 2729
- 2730
- 2731
- 2732
- 2733
- 2734
- 2735
- 2736
- 2737
- 2738
- 2739
- 2740
- 2741
- 2742
- 2743
- 2744
- 2745
- 2746
- 2747
- 2748
- 2749
- 2750
- 2751
- 2752
- 2753
- 2754
- 2755
- 2756
- 2757
- 2758
- 2759
- 2760
- 2761
- 2762
- 2763
- 2764
- 2765
- 2766
- 2767
- 2768
- 2769
- 2770
- 2771
- 2772
- 2773
- 2774
- 2775
- 2776
- 2777
- 2778
- 2779
- 2780
- 2781
- 2782
- 2783
- 2784
- 2785
- 2786
- 2787
- 2788
- 2789
- 2790
- 2791
- 2792
- 2793
- 2794
- 2795
- 2796
- 2797
- 2798
- 2799
- 2800
- 2801
- 2802
- 2803
- 2804
- 2805
- 2806
- 2807
- 2808
- 2809
- 2810
- 2811
- 2812
- 2813
- 2814
- 2815
- 2816
- 2817
- 2818
- 2819
- 2820
- 2821
- 2822
- 2823
- 2824
- 2825
- 2826
- 2827
- 2828
- 2829
- 2830
- 2831
- 2832
- 2833
- 2834
- 2835
- 2836
- 2837
- 2838
- 2839
- 2840
- 2841
- 2842
- 2843
- 2844
- 2845
- 2846
- 2847
- 2848
- 2849
- 2850
- 2851
- 2852
- 2853
- 2854
- 2855
- 2856
- 2857
- 2858
- 2859
- 2860
- 2861
- 2862
- 2863
- 2864
- 2865
- 2866
- 2867
- 2868
- 2869
- 2870
- 2871
- 2872
- 2873
- 2874
- 2875
- 2876
- 2877
- 2878
- 2879
- 2880
- 2881
- 2882
- 2883
- 2884
- 2885
- 2886
- 2887
- 2888
- 2889
- 2890
- 2891
- 2892
- 2893
- 2894
- 2895
- 2896
- 2897
- 2898
- 2899
- 2900
- 2901
- 2902
- 2903
- 2904
- 2905
- 2906
- 2907
- 2908
- 2909
- 2910
- 2911
- 2912
- 2913
- 2914
- 2915
- 2916
- 2917
- 2918
- 2919
- 2920
- 2921
- 2922
- 2923
- 2924
- 2925
- 2926
- 2927
- 2928
- 2929
- 2930
- 2931
- 2932
- 2933
- 2934
- 2935
- 2936
- 2937
- 2938
- 2939
- 2940
- 2941
- 2942
- 2943
- 2944
- 2945
- 2946
- 2947
- 2948
- 2949
- 2950
- 2951
- 2952
- 2953
- 2954
- 2955
- 2956
- 2957
- 2958
- 2959
- 2960
- 2961
- 2962
- 2963
- 2964
- 2965
- 2966
- 2967
- 2968
- 2969
- 2970
- 2971
- 2972
- 2973
- 2974
- 2975
- 2976
- 2977
- 2978
- 2979
- 2980
- 2981
- 2982
- 2983
- 2984
- 2985
- 2986
- 2987
- 2988
- 2989
- 2990
- 2991
- 2992
- 2993
- 2994
- 2995
- 2996
- 2997
- 2998
- 2999
- 3000
- 3001
- 3002
- 3003
- 3004
- 3005
- 3006
- 3007
- 3008
- 3009
- 3010
- 3011
- 3012
- 3013
- 3014
- 3015
- 3016
- 3017
- 3018
- 3019
- 3020
- 3021
- 3022
- 3023
- 3024
- 3025
- 3026
- 3027
- 3028
- 3029
- 3030
- 3031
- 3032
- 3033
- 3034
- 3035
- 3036
- 3037
- 3038
- 3039
- 3040
- 3041
- 3042
- 3043
- 3044
- 3045
- 3046
- 3047
- 3048
- 3049
- 3050
- 3051
- 3052
- 3053
- 3054
- 3055
- 3056
- 3057
- 3058
- 3059
- 3060
- 3061
- 3062
- 3063
- 3064
- 3065
- 3066
- 3067
- 3068
- 3069
- 3070
- 3071
- 3072
- 3073
- 3074
- 3075
- 3076
- 3077
- 3078
- 3079
- 3080
- 3081
- 3082
- 3083
- 3084
- 3085
- 3086
- 3087
- 3088
- 3089
- 3090
- 3091
- 3092
- 3093
- 3094
- 3095
- 3096
- 3097
- 3098
- 3099
- 3100
- 3101
- 3102
- 3103
- 3104
- 3105
- 3106
- 3107
- 3108
- 3109
- 3110
- 3111
- 3112
- 3113
- 3114
- 3115
- 3116
- 3117
- 3118
- 3119
- 3120
- 3121
- 3122
- 3123
- 3124
- 3125
- 3126
- 3127
- 3128
- 3129
- 3130
- 3131
- 3132
- 3133
- 3134
- 3135
- 3136
- 3137
- 3138
- 3139
- 3140
- 3141
- 3142
- 3143
- 3144
- 3145
- 3146
- 3147
- 3148
- 3149
- 3150
- 3151
- 3152
- 3153
- 3154
- 3155
- 3156
- 3157
- 3158
- 3159
- 3160
- 3161
- 3162
- 3163
- 3164
- 3165
- 3166
- 3167
- 3168
- 3169
- 3170
- 3171
- 3172
- 3173
- 3174
- 3175
- 3176
- 3177
- 3178
- 3179
- 3180
- 3181
- 3182
- 3183
- 3184
- 3185
- 3186
- 3187
- 3188
- 3189
- 3190
- 3191
- 3192
- 3193
- 3194
- 3195
- 3196
- 3197
- 3198
- 3199
- 3200
- 3201
- 3202
- 3203
- 3204
- 3205
- 3206
- 3207
- 3208
- 3209
- 3210
- 3211
- 3212
- 3213
- 3214
- 3215
- 3216
- 3217
- 3218
- 3219
- 3220
- 3221
- 3222
- 3223
- 3224
- 3225
- 3226
- 3227
- 3228
- 3229
- 3230
- 3231
- 3232
- 3233
- 3234
- 3235
- 3236
- 3237
- 3238
- 3239
- 3240
- 3241
- 3242
- 3243
- 3244
- 3245
- 3246
- 3247
- 3248
- 3249
- 3250
- 3251
- 3252
- 3253
- 3254
- 3255
- 3256
- 3257
- 3258
- 3259
- 3260
- 3261
- 3262
- 3263
- 3264
- 3265
- 3266
- 3267
- 3268
- 3269
- 3270
- 3271
- 3272
- 3273
- 3274
- 3275
- 3276
- 3277
- 3278
- 3279
- 3280
- 3281
- 3282
- 3283
- 3284
- 3285
- 3286
- 3287
- 3288
- 3289
- 3290
- 3291
- 3292
- 3293
- 3294
- 3295
- 3296
- 3297
- 3298
- 3299
- 3300
- 3301
- 3302
- 3303
- 3304
- 3305
- 3306
- 3307
- 3308
- 3309
- 3310
- 3311
- 3312
- 3313
- 3314
- 3315
- 3316
- 3317
- 3318
- 3319
- 3320
- 3321
- 3322
- 3323
- 3324
- 3325
- 3326
- 3327
- 3328
- 3329
- 3330
- 3331
- 3332
- 3333
- 3333
推荐文章