华为云用户手册

  • 原因分析 在线服务启动后,ModelArts提供两种方式的预测: 方式1:在ModelArts的Console的预测页签进行预测; 方式2:在ModelArts的Console的调用指南页签获取到调用地址,然后通过cURL或者Postman等工具进行预测。 无论是方式1还是方式2,当推理请求发送出去后都有可能收到不符合预期的推理结果。 推理请求经过一系列传递后最终是会进入到模型服务中,模型服务可能是以自定义镜像的方式导入的,可能是因为模型服务在处理推理请求时候出现了问题导致结果不符合预期,能准确判断出来是否是在模型服务中出的问题对于快速解决问题帮助很大。
  • 使用python命令 执行nvidia-ml-py3命令(常用)。 !pip install nvidia-ml-py3 import nvidia_smi nvidia_smi.nvmlInit() deviceCount = nvidia_smi.nvmlDeviceGetCount() for i in range(deviceCount): handle = nvidia_smi.nvmlDeviceGetHandleByIndex(i) util = nvidia_smi.nvmlDeviceGetUtilizationRates(handle) mem = nvidia_smi.nvmlDeviceGetMemoryInfo(handle) print(f"|Device {i}| Mem Free: {mem.free/1024**2:5.2f}MB / {mem.total/1024**2:5.2f}MB | gpu-util: {util.gpu:3.1%} | gpu-mem: {util.memory:3.1%} |") 执行nvidia_smi + wapper + prettytable命令。 用户可以将GPU信息显示操作看作一个装饰器,在模型训练过程中就可以实时的显示GPU状态信息。 def gputil_decorator(func): def wrapper(*args, **kwargs): import nvidia_smi import prettytable as pt try: table = pt.PrettyTable(['Devices','Mem Free','GPU-util','GPU-mem']) nvidia_smi.nvmlInit() deviceCount = nvidia_smi.nvmlDeviceGetCount() for i in range(deviceCount): handle = nvidia_smi.nvmlDeviceGetHandleByIndex(i) res = nvidia_smi.nvmlDeviceGetUtilizationRates(handle) mem = nvidia_smi.nvmlDeviceGetMemoryInfo(handle) table.add_row([i, f"{mem.free/1024**2:5.2f}MB/{mem.total/1024**2:5.2f}MB", f"{res.gpu:3.1%}", f"{res.memory:3.1%}"]) except nvidia_smi.NVMLError as error: print(error) print(table) return func(*args, **kwargs) return wrapper 执行pynvml命令。 nvidia-ml-py3可以直接查询nvml c-lib库,而无需通过nvidia-smi。因此,这个模块比nvidia-smi周围的包装器快得多。 from pynvml import * nvmlInit() handle = nvmlDeviceGetHandleByIndex(0) info = nvmlDeviceGetMemoryInfo(handle) print("Total memory:", info.total) print("Free memory:", info.free) print("Used memory:", info.used) 执行gputil命令。 !pip install gputil import GPUtil as GPU GPU.showUtilization() import GPUtil as GPU GPUs = GPU.getGPUs() for gpu in GPUs: print("GPU RAM Free: {0:.0f}MB | Used: {1:.0f}MB | Util {2:3.0f}% | Total {3:.0f}MB".format(gpu.memoryFree, gpu.memoryUsed, gpu.memoryUtil*100, gpu.memoryTotal)) 注:用户在使用pytorch/tensorflow等深度学习框架时也可以使用框架自带的api进行查询。
  • 训练作业的启动文件如何获取训练作业中的参数? 训练作业参数有两种来源,包括后台自动生成的参数和用户手动输入的参数。具体获取方式如下: 创建训练作业时,“输入”支持配置训练的输入参数名称(一般设置为“data_url”),以及输入数据的存储位置,“输出”支持配置训练的输出参数名称(一般设置为“train_url”),以及输出数据的存储位置。 训练作业运行成功之后,在训练作业列表中,您可以单击作业名称,查看该作业的详情。可从日志中获取参数的传入方式,如图1所示。 图1 查看日志 如果需在训练中获取“train_url”、“data_url”和“test”参数的值,可在训练作业的启动文件中添加以下代码获取: import argparse parser = argparse.ArgumentParser() parser.add_argument('--data_url', type=str, default=None, help='test') parser.add_argument('--train_url', type=str, default=None, help='test') parser.add_argument('--test', type=str, default=None, help='test') 父主题: 编写训练代码
  • 解决方法 方法一(本地):打开命令面板(Windows: Ctrl+Shift+P,macOS:Cmd+Shift+P),搜索“Kill VS Code Server on Host”,选择出问题的实例进行自动清除,然后重新进行连接。 图1 清除异常的实例 方法二(远端):在VS Code的Terminal中删除“/home/ma-user/.vscode-server/bin/”下正在使用的文件,然后重新进行连接。 ssh -tt -o StrictHostKeyChecking=no -i ${IdentityFile} ${User}@${HostName} -p ${Port} rm -rf /home/ma-user/.vscode-server/bin/ 参数说明: - IdentityFile:本地密钥路径 - User:用户名,例如:ma-user - HostName:IP地址 - Port:端口号 vscode-server相关问题也可以使用上述的解决方法。
  • 解决方案 打开MobaXterm,单击菜单栏“Settings”,如图1 打开“Settings”所示。 图1 打开“Settings” 在打开的“MobaXterm Configuration”配置页面,选择“SSH”选项卡,勾选“SSH keepalive”,如图2 勾选“SSH keepalive”所示。 图2 勾选“SSH keepalive” 如果使用的是专业版的MobaXterm工具,请执行步骤3。 如果使用的是专业版的MobaXterm工具,请参考图3 设置“Stop server after”,此参数默认值为360s,将其设置为3600s或更大值。 图3 设置“Stop server after”
  • 背景说明 针对ModelArts中的数据集,在创建数据集时,需指定“数据集输入位置”和“数据集输出位置”。两个参数填写的均是OBS路径。 “数据集输入位置”即原始数据存储的OBS路径。 “数据集输出位置”,指在ModelArts完成数据标注后,执行数据集发布操作后,在此指定路径下,按数据集版本,生成相关目录。包含ModelArts中使用的Manifest文件(包含数据及标注信息)。详细文件说明可参见数据集发布后,相关文件的目录结构说明。
  • 旧版Notebook使用EVS存储 旧版Notebook使用的是云硬盘EVS存储,建议将EVS中的数据保存并迁移,在新版Notebook中使用。 EVS存储中数据量较少:建议将数据下载到本地,创建新版Notebook后再上传。 EVS存储中数据量较大:建议将EVS中的数据上传至OBS桶中保存。创建新版Notebook时,通过OBS桶读取数据使用。 Notebook中的数据上传下载的具体操作请参见: Notebook中的数据上传下载。
  • 新旧版Notebook使用存储差异说明 表1 新版旧版Notebook支持的存储配置说明 存储类型 旧版Notebook 新版Notebook 说明 OBS对象存储服务 支持 不支持 OBS为存储系统,而非文件系统。 在旧版Notebook使用过程中,OBS数据的远程复制以及本地复制容易混淆,造成用户对数据操作难以控制。因此,在新版Notebook中去掉了挂载OBS能力,用户可以通过代码操作OBS数据,灵活的获取和操作数据。 OBS并行文件系统 不支持 支持 新版Notebook提供了动态挂载OBS并行文件系统能力,用户在启动的Notebook详情页面中,可以添加数据存储。不涉及新旧版Notebook间的数据迁移。 云硬盘EVS 支持 支持 新旧版Notebook均支持使用,需要迁移保存旧版Notebook中的数据。 弹性文件服务SFS 不支持 支持 在专属资源池场景下使用。旧版Notebook中该功能已经下线,不涉及迁移。
  • 自定义python包中如果引用model目录下的文件,文件路径怎么写 如果容器中的文件实际路径不清楚,可以使用Python获取当前文件路径的方法获取。 os.getcwd() #获取文件当前工作目录路径(绝对路径) os.path.realpath(__ file __) #获得文件所在的路径(绝对路径) 也可在搜索引擎寻找其他获取文件路径的方式,使用获取到的路径进行文件读写。 父主题: 编写训练代码
  • 解决方法 手动安装vscode-server。 获取VS Code的commitID 下载相应版本vscode-server压缩包,请根据开发环境cpu架构选择arm版本或x86版本。 替换下面链接中${commitID}为步骤1 获取VS Code的commitID中commitID。 arm版本,下载vscode-server-linux-arm64.tar.gz https://update.code.visualstudio.com/commit:${commitID}/server-linux-arm64/stable x86版本,下载vscode-server-linux-x64.tar.gz https://update.code.visualstudio.com/commit:${commitID}/server-linux-x64/stable 进入远程环境。 打开VS Code中的Terminal。 在VS Code的Terminal中执行如下命令,连接到远端开发环境。 ssh -tt -o StrictHostKeyChecking=no -i ${IdentityFile} ${User}@${HostName} -p ${Port} 参数说明: - IdentityFile:本地密钥路径 - User:用户名,例如:ma-user - HostName:IP地址 - Port:端口号 手动安装vscode-server。 在VS Code的Terminal中执行如下命令,清空残留的vscode-server,注意替换命令中${commitID}为步骤1 获取VS Code的commitID中commitID。 rm -rf /home/ma-user/.vscode-server/bin/${commitID}/* mkdir -p /home/ma-user/.vscode-server/bin/${commitID} 上传vscode-server压缩包到开发环境。执行如下命令: exit scp -i xxx.pem -P 31205 本地vscode-server压缩包路径 ma-user@xxx:/home/ma-user/.vscode-server/bin ssh -tt -o StrictHostKeyChecking=no -i ${IdentityFile} ${User}@${HostName} -p ${Port} 参数说明: - IdentityFile:本地密钥路径 - User:用户名,例如:ma-user - HostName:IP地址 - Port:端口号 以arm版本为例,将vscode-server压缩包解压至$HOME/.vscode-server/bin文件夹,注意替换命令中${commitID}为步骤1 获取VS Code的commitID中commitID。 cd /home/ma-user/.vscode-server/bin tar -zxf vscode-server-linux-arm64.tar.gz mv vscode-server-linux-arm64/* ${commitID} 重新远程连接。
  • Jupyter可以安装插件吗? Jupyter可以安装插件。 目前jupyter插件多数采用wheel包的形式发布,一次性完成前后端插件的安装,安装时注意使用jupyter服务依赖的环境“/modelarts/authoring/notebook-conda/bin/pip”进行安装,不要使用默认的anaconda(kernel依赖的python环境)的pip进行安装。 使用命令jupyter labextension list --app-dir=/home/ma-user/.lab/console查询 前端插件安装目录为:/home/ma-user/.local/share/jupyter/labextensions 后端插件代码安装目录:/home/ma-user/.local/lib/python3.7/site-packages 配置文件目录:/home/ma-user/.jupyter/ 后端插件使用jupyter server extension list命令查询。 父主题: CodeLab
  • 与对象存储服务的关系 ModelArts使用对象存储服务(Object Storage Service,简称OBS)存储数据和模型,实现安全、高可靠和低成本的存储需求。OBS的更多信息请参见《对象存储服务控制台指南》。 表1 ModelArts各环节与OBS的关系 功能 子任务 ModelArts与OBS的关系 自动学习 数据标注 ModelArts标注的数据存储在OBS中。 自动训练 训练作业结束后,其生成的模型存储在OBS中。 部署上线 ModelArts将存储在OBS中的模型部署上线为在线服务。 AI全流程开发 数据管理 数据集存储在OBS中。 数据集的标注信息存储在OBS中。 支持从OBS中导入数据。 开发环境 Notebook实例中的数据或代码文件存储在OBS中。 训练模型 训练作业使用的数据集存储在OBS中。 训练作业的运行脚本存储在OBS中。 训练作业输出的模型存储在指定的OBS中。 训练作业的过程日志存储在指定的OBS中。 AI应用管理 训练作业结束后,其生成的模型存储在OBS中,创建AI应用时,从OBS中导入已有的模型文件。 部署上线 将存储在OBS中的模型部署上线。 全局配置 - 获取访问授权(使用委托或访问密钥授权),以便ModelArts可以使用OBS存储数据、创建Notebook等操作。
  • 在Terminal中安装 例如,通过terminal在“TensorFlow-1.8”的环境中使用pip安装Shapely。 打开一个Notebook实例,进入到Launcher界面。 在“Other”区域下,选择“Terminal”,新建一个terminal文件。 在代码输入栏输入以下命令,获取当前环境的kernel,并激活需要安装依赖的python环境。 cat /home/ma-user/README source /home/ma-user/anaconda3/bin/activate TensorFlow-1.8 如果需要在其他python环境里安装,请将命令中“TensorFlow-1.8”替换为其他引擎。 图1 激活环境 在代码输入栏输入以下命令安装Shapely。 pip install Shapely
  • 如何安装C++的依赖库? 在训练作业的过程中,会使用到第三方库。以C++为例,请参考如下操作步骤进行安装: 将源码下载至本地并上传到OBS。使用OBS客户端上传文件的操作请参见上传文件。 将上传到OBS的源码使用Moxing复制到开发环境Notebook中。 以下为使用EVS挂载的开发环境,将数据复制至notebook中的代码示例: import moxing as mox mox.file.make_dirs('/home/ma-user/work/data') mox.file.copy_parallel('obs://bucket-name/data', '/home/ma-user/work/data') 在Jupyter页面的“Files”页签下,单击“New”,打开“Terminal”。执行如下命令进入目标路径,确认源码已下载,即“data”文件是否存在。 cd /home/ma-user/work ls 在“Terminal”环境进行编译,具体编译方式请您根据业务需求进行。 将编译结果使用Moxing复制至OBS中 。代码示例如下: import moxing as mox mox.file.make_dirs('/home/ma-user/work/data') mox.file.copy_parallel('/home/ma-user/work/data', 'obs://bucket-name/file) 在训练时,将OBS中的编译结果使用Moxing复制到容器中使用。代码示例如下: import moxing as mox mox.file.make_dirs('/cache/data') mox.file.copy_parallel('obs://bucket-name/data', '/cache/data') 父主题: 编写训练代码
  • 解决方法 若当前环境未安装OpenSSH,请下载并安装OpenSSH。 当通过“可选功能”未能成功安装时,请手动下载OpenSSH安装包,然后执行以下步骤: 下载zip包并解压放入“C:\Windows\System32”。 以管理员身份打开CMD,在“C:\Windows\System32\OpenSSH-xx”目录下,执行以下命令: powershell.exe -ExecutionPolicy Bypass -File install-sshd.ps1 添加环境变量:将“C:\Program Files\OpenSSH-xx”(路径中包含ssh可执行exe文件)添加到环境系统变量中。 重新打开CMD,并执行ssh,结果如下图即说明安装成功,如果还未装成功则执行5和6。 OpenSSH默认端口为22端口,开启防火墙22端口号,在CMD执行以下命令: netsh advfirewall firewall add rule name=sshd dir=in action=allow protocol=TCP localport=22 启动OpenSSH服务,在CMD执行以下命令: Start-Service sshd 若OpenSSH未安装在默认路径下,打开命令面板(Windows: Ctrl+Shift+P,macOS:Cmd+Shift+P), 搜索“Open settings”。 然后将remote.SSH.path属性添加到settings.json中,例如:"remote.SSH.path": "本地OpenSSH的安装路径"
  • 多节点训练TensorFlow框架ps节点作为server会一直挂着,ModelArts是怎么判定训练任务结束?如何知道是哪个节点是worker呢? TensorFlow框架分布式训练的情况下,会启动ps与worker任务组,worker任务组为关键任务组,会以worker任务组的进程退出码,判断训练作业是否结束。 通过task name判断的哪个节点是worker。下发的训练作业是一个volcano job,里边会有两个task:一个是ps、一个是worker。两个task的启动命令不同,会自动生成超参--task_name,ps的--task_name=ps,worker的 --task_name=worker。 父主题: 功能咨询
  • VS Code中设置远端默认安装的插件 在VS Code的配置文件settings.json中添加remote.SSH.defaultExtensions参数,如自动安装Python和Maven插件,可配置如下。 "remote.SSH.defaultExtensions": [ "ms-python.python", "vscjava.vscode-maven" ], 其中,插件名称可以单击VS Code的某个插件后获取,如下所示。 父主题: VS Code使用技巧
  • ModelArts依赖的OBS权限自定义策略样例 如下示例为ModelArts依赖OBS服务的最小化权限项,包含OBS桶和OBS对象的权限。授予示例中的权限您可以通过ModelArts正常访问OBS不受限制。 { "Version": "1.1", "Statement": [ { "Action": [ "obs:bucket:ListAllMybuckets", "obs:bucket:HeadBucket", "obs:bucket:ListBucket", "obs:bucket:GetBucketLocation", "obs:object:GetObject", "obs:object:GetObjectVersion", "obs:object:PutObject", "obs:object:DeleteObject", "obs:object:DeleteObjectVersion", "obs:object:ListMultipartUploadParts", "obs:object:AbortMultipartUpload", "obs:object:GetObjectAcl", "obs:object:GetObjectVersionAcl", "obs:bucket:PutBucketAcl", "obs:object:PutObjectAcl" ], "Effect": "Allow" } ] }
  • ModelArts开发环境使用权限的自定义策略样例 { "Version": "1.1", "Statement": [ { "Effect": "Allow", "Action": [ "modelarts:notebook:list", "modelarts:notebook:create" , "modelarts:notebook:get" , "modelarts:notebook:update" , "modelarts:notebook:delete" , "modelarts:notebook:action" , "modelarts:notebook:access" ] } ] }
  • 提交训练作业报错“Invalid OBS path” 当运行训练作业时,出现“Invalid OBS path”错误。 图1 训练作业报错 该问题可以通过以下方法排查: 如果是首次使用ModelArts的新用户,需要登录ModelArts管理控制台,在全局配置页面完成访问授权配置,推荐使用委托授权的方式。完成全局配置后,再次提交作业即可。 请排查所填写的Data Path in OBS是否存在,文件夹下是否有数据文件,如果没有,需要在OBS创建目录并上传训练数据到该目录。 父主题: PyCharm Toolkit使用
  • 什么是图像分类和物体检测? 图像分类是根据各自在图像信息中所反映的不同特征,把不同类别的目标区分开来的图像处理方法。它利用计算机对图像进行定量分析,把图像或图像中的每个像元或区域划归为若干个类别中的某一种,以代替人的视觉判读。简单的说就是识别一张图中是否是某类/状态/场景,适合图中主体相对单一的场景,将下图识别为汽车的图片。 图1 图像分类 物体检测是计算机视觉中的经典问题之一,其任务是用框去标出图像中物体的位置,并给出物体的类别。通常在一张图包含多个物体的情况下,定制识别出每个物体的位置、数量、名称,适合图片中有多个主体的场景,针对下图检测出图片包含树和汽车。 图2 物体检测 父主题: 功能咨询
  • 解决方法 查看ModelArts创建的项目与创建的OBS桶是否在同一区域。 查看创建的OBS桶所在区域。 登录OBS管理控制台。 进入“对象存储”界面,可在桶列表的“桶名称”列查找,或在右上方的搜索框中输入已经创建的桶名称搜索,找到您创建的OBS桶。 在“区域”列可查看创建的OBS桶的所在区域,如图1所示。 图1 OBS桶所在区域 查看ModelArts所在区域。 登录ModelArts控制台,在控制台左上角可查看ModelArts所在区域。 比对您创建的OBS桶所在区域与ModelArts所在区域是否一致。务必保证OBS桶与ModelArts所在区域一致。 配置访问授权(全局配置) 登录ModelArts管理控制台,在左侧导航栏选择“全局配置”,进入“全局配置”页面。 单击“添加授权”,进入“访问授权”页面,根据参数说明进行配置。 图2 查看权限列表 然后勾选“我已经详细阅读并同意《ModelArts服务声明》”,单击“创建”,即完成委托配置。
  • 安装远端插件时不稳定,需尝试多次 方法一:离线包安装方式(推荐) 到VS Code插件官网vscode_marketplace搜索待安装的Python插件,Python插件路径。 单击进入Python插件的Version History页签后,下载该插件的离线安装包,如图所示。 图1 Python插件离线安装包 在本地VS Code环境中,将下载好的.vsix文件拖动到远端Notebook中。 右键单击该文件,选择Install Extension VSIX。 方法二:设置远端默认安装的插件 按照VS Code中设置远端默认安装的插件配置,即会在连接远端时自动安装,减少等待时间。 方法三:VS Code官网排查方式https://code.visualstudio.com/docs/remote/troubleshooting 小技巧(按需调整远端连接的相关参数): "remote.SSH.connectTimeout": 10, "remote.SSH.maxReconnectionAttempts": null, "remote.downloadExtensionsLocally": true, "remote.SSH.useLocalServer": false, "remote.SSH.localServerDownload": "always", 父主题: VS Code使用技巧
  • 操作步骤 创建conda env。 在Notebook的Terminal中执行如下命令。其中,my-env是虚拟环境名称,用户可自定义。conda详细参数可参考conda官网。 conda create --quiet --yes -n my-env python=3.6.5 创建完成后,执行conda info --envs命令查看现有的虚拟环境列表,可以看到my-env虚拟环境: sh-4.4$conda info --envs # conda environments: # base * /home/ma-user/anaconda3 TensorFlow-2.1 /home/ma-user/anaconda3/envs/TensorFlow-2.1 my-env /home/ma-user/anaconda3/envs/my-env python-3.7.10 /home/ma-user/anaconda3/envs/python-3.7.10 /opt/conda/envs/my-env 执行如下命令 进入conda env。 source /home/ma-user/anaconda3/bin/activate /home/ma-user/anaconda3/envs/my-env 执行如下命令在my env里安装如下依赖包。 pip install jupyter pip install jupyter_core==5.3.0 pip install jupyter_client==8.2.0 pip install ipython==8.10.0 pip install ipykernel==6.23.1 执行下述命令添加虚拟环境为IPython Kernel。 其中--name的值可自定义。 python3 -m ipykernel install --user --name "my-py3-tensorflow-env" 执行完毕后,可以看到下述提示信息。 (my-env) sh-4.4$python3 -m ipykernel install --user --name "my-py3-tensorflow-env" Installed kernelspec my-py3-tensorflow-env in /home/ma-user/.local/share/jupyter/kernels/my-py3-tensorflow-env 自定义虚拟环境Kernel的环境变量。 执行cat /home/ma-user/.local/share/jupyter/kernels/my-py3-tensorflow-env/kernel.json,可以看到默认配置如下: { "argv": [ "/home/ma-user/anaconda3/envs/my-env/bin/python3", "-m", "ipykernel_launcher", "-f", "{connection_file}" ], "display_name": "my-py3-tensorflow-env", "language": "python" } 按需添加env字段的值,可参考下述配置。其中,PATH中增加了该虚拟环境python包所在路径: { "argv": [ "/home/ma-user/anaconda3/envs/my-env/bin/python3", "-m", "ipykernel_launcher", "-f", "{connection_file}" ], "display_name": "my-py3-tensorflow-env", "language": "python", "env": { "PATH": "/home/ma-user/anaconda3/envs/my-env/bin:/opt/conda/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/ma-user/modelarts/ma-cli/bin", "http_proxy": "http://proxy-notebook.modelarts-dev-proxy.com:8083", "https_proxy": "http://proxy-notebook.modelarts-dev-proxy.com:8083", "ftp_proxy": "http://proxy-notebook.modelarts-dev-proxy.com:8083", "HTTP_PROXY": "http://proxy-notebook.modelarts-dev-proxy.com:8083", "HTTPS_PROXY": "http://proxy-notebook.modelarts-dev-proxy.com:8083", "FTP_PROXY": "http://proxy-notebook.modelarts-dev-proxy.com:8083" } } 进入虚拟环境的IPython Kernel。 刷新JupyterLab页面,可以看到自定义的虚拟环境Kernel。如下所示: 单击my-py3-tensorflow-env图标,验证是否为当前环境,如下所示: 清理环境。 删除虚拟环境的IPython Kernel。 jupyter kernelspec uninstall my-py3-tensorflow-env 删除虚拟环境。 conda env remove -n my-env
  • AI Gallery的入口在哪里 控制台入口 登录ModelArts管理控制台。 在左侧导航栏中选择“AI Gallery”跳转到AI Gallery首页。 直接网址访问 旧版AI Gallery将下线,已不再更新,建议使用新版AI Gallery。 旧版AI Gallery地址:https://developer.huaweicloud.com/develop/aigallery/home.html 新版AI Gallery地址:https://pangu.huaweicloud.com/gallery/home.html 父主题: AI Gallery
  • Notebook实例出现“Server Connection Error”错误 在Terminal中执行命令时,出现错误如图1 报错信息截图所示,此问题可能由于CPU/GPU或显存等占满,可在JupyterLab界面下方查看内存使用情况,如图2所示。 此时Kernel会自动重启,存储在“/home/ma-user/work”目录下的数据会被保留,其他目录的数据均不会保留。 图1 报错信息截图 图2 查看内存使用情况 父主题: Notebook实例常见错误
  • 首次切换/故障切换和容灾演练操作后,登录弹性云服务器有哪些注意事项? 对于已安装Cloud-Init/Cloudbase-Init的云服务器,首次执行切换/故障切换操作,或者创建容灾演练后,系统第一次启动时会运行Cloud-Init/Cloudbase-Init,为云服务器重新注入初始化数据,影响生产站点服务器、容灾站点服务器和容灾演练服务器的登录密码或密钥。 对于未安装Cloud-Init/Cloudbase-Init的云服务器,首次执行切换/故障切换操作,或者创建容灾演练,不会改变生产站点服务器、容灾站点服务器和容灾演练服务器的登录密码或密钥。 如下示例以切换/故障切换为例进行说明,容灾演练服务器的登录约束请参照首次切换/故障切换后容灾站点服务器的场景: 假设生产站点服务器为A,容灾站点服务器为B,经过首次切换/故障切换操作后,生产站点和容灾站点服务器如表1所示。 表1 生产站点和容灾站点服务器 - 生产站点服务器 容灾站点服务器 切换/故障切换前 A B 首次切换/故障切换后 B A 此时,详细的登录约束如下: 【场景一】生产站点服务器A为Windows操作系统,且未安装Cloudbase-Init,在首次切换或者故障切换操作后: 如果设置密码方式登录云服务器,请使用云服务器A的密码登录生产站点服务器B或容灾站点服务器A。 如果设置密钥对方式登录云服务器,请使用云服务器A获取到的密码登录生产站点服务器B或容灾站点服务器A。 首次切换/故障切换完成后,后续再执行切换/故障切换操作,对于未安装Cloudbase-Init的云服务器,登录密码/密钥仍然保持不变。以表1为例: 使用云服务器A的密码登录生产站点服务器或容灾站点服务器。 【场景二】生产站点服务器A为Windows操作系统,且已安装Cloudbase-Init,在首次切换或者故障切换操作后: 如果设置密码方式登录云服务器,根据Cloudbase-Init是否已经启动存在差异: 在Cloudbase-Init未启动的情况下(一般是生产站点服务器开机后的3-5分钟内),仍然可以使用云服务器B的密码进行登录。 当Cloudbase-Init启动完成后,云服务器B在切换/故障切换前设置的密码失效。您需要通过“重置密码”操作,重置云服务器B的密码,并使用新密码进行登录。 如果设置密钥对方式登录云服务器,根据Cloudbase-Init是否已经启动存在差异: 在Cloudbase-Init未启动的情况下(一般是生产站点服务器开机后的3-5分钟内),仍然可以使用云服务器B获取到的密码进行登录。 当Cloudbase-Init启动完成后,云服务器B在切换/故障切换前获取到的密码失效。您需要通过“获取密码”操作,重新获取云服务器B的登录密码。 首次切换/故障切换完成后,后续再执行切换/故障切换操作,对于已安装Cloudbase-Init的云服务器,登录密码/密钥不再改变。以表1为例: 密码方式登录:使用首次切换/故障切换时,云服务器B“重置密码”操作后的新密码进行登录。 密钥对方式登录:使用首次切换/故障切换时,云服务器B通过“获取密码”操作后重新获取的密码进行登录。 【场景三】生产站点服务器A为Linux操作系统,在首次切换或者故障切换操作后: 如果设置密码方式登录云服务器,请使用云服务器A的密码登录生产站点服务器B或容灾站点服务器A。具体的: 切换或者故障切换前,如果云服务器A没有修改密码,则在切换或者故障切换后,使用创建云服务器A时设置的密码登录。 切换或者故障切换前,如果云服务器A修改了密码,则在切换或者故障切换后,使用云服务器A修改后的密码进行登录。 对于非CoreOS操作系统的弹性云服务器,首次切换/故障切换完成后,后续再执行切换/故障切换操作,登录密码不再改变。 对于CoreOS操作系统的弹性云服务器,首次切换或者故障切换后,后续再执行切换或故障切换操作,云服务器A的密码将被恢复为初始密码。因此,需使用创建云服务器A时设置的初始密码登录生产站点服务器A或容灾站点服务器B。 如果设置密钥对方式登录云服务器,请使用云服务器A的密钥对,采用SSH密钥方式登录生产站点服务器B或容灾站点服务器A。 父主题: 同步复制(只适用于存量经营)
  • 处理方法1:暂未执行切换/故障切换 对于暂未执行切换/故障切换操作的保护组,为保证开启容灾保护后,生产站点服务器与容灾站点服务器的hostname一致,您可以在首次执行切换/故障切换操作前,先在生产站点服务器内部修改cloudinit配置文件/etc/cloud/cloud.cfg,将“preserve_hostname: false”修改为“preserve_hostname: true”。 具体操作如下:
  • 什么是容灾? 容灾是一个范畴比较广泛的概念。广义上,容灾是一个系统工程,包括所有与业务连续性相关的内容。对于IT而言,容灾是提供一个能防止用户业务系统遭受各种灾难影响破坏的计算机系统。狭义的容灾是指建立两套或多套功能相同的IT系统,互相之间可以进行健康状态监视和功能切换,当主要站点因意外(如火灾、地震、城市供电中断等)停止工作时,整个应用系统可以利用辅助站点快速恢复,并继续工作。 容灾的主要目的是,当自然或人为的原因导致生产系统发生灾难时,能够尽可能地保证业务的连续性。 父主题: 公共问题
  • 容灾和备份的区别是什么? 容灾和备份具有以下区别: 容灾主要应对数据中心软硬件故障或重大自然灾害,生产站点和容灾站点之间通常会保持一定的安全距离,支持同城或异地;备份主要针对人为误操作、病毒感染、逻辑错误等因素,用于业务系统的数据恢复,数据备份一般在同一数据中心进行。 容灾系统不仅保护数据,更重要的目的在于保证业务的连续性;而数据备份系统只保护不同时间点版本数据的可恢复。一般首次备份为全量备份,所需的备份时间会比较长,而后续增量备份则在较短时间内就可完成。 容灾可实现低至秒级的RPO;备份可设置一天最多24个不同时间点的自动备份策略,后续可将数据恢复至不同的备份点。 故障情况下(例如地震、火灾、数据中心故障),容灾系统的切换时间一般为分钟级;而备份系统的恢复时间可能几小时到几十小时。 父主题: 公共问题
共100000条