本文介绍在使用云服务器ECS过程中,遇到的镜像相关问题及解决方案。
Windows实例问题
Linux实例问题
- Red Hat和CentOS相关问题
- Ubuntu相关问题
- FreeBSD和Fedora CoreOS相关问题
- 其他问题
- 基于弹性裸金属实例规格的ECS实例,系统生成crash dump文件失败如何解决?
- Linux操作系统内核回写时出现softlockup异常如何解决?
- 在ECS实例内删除cgroup出现softlockup异常如何解决?
- ECS实例宕机相关解决方案
- 公共镜像自带FTP上传吗?
- 为什么ECS默认没有启用虚拟内存或Swap说明?
- 如何在公共镜像中开启kdump?
- 如何设置Linux系统的ECS实例的静态IP地址?
- 如何在Linux实例中自定义配置DNS?
- Linux操作系统配置IPv6地址后,安装了NTP服务的服务器时间无法同步,如何处理?
- Linux自定义镜像如何适配NVMe系统盘?
- 如何为Linux服务器安装GRUB?
- 如何解决实例迁移后的宕机问题?
- 如何收集操作系统宕机后的内核转储信息?
- 使用RSA密钥无法登录ECS实例问题
实例的操作系统为Windows Server,现在提示Windows副本不是正版怎么办?
需要激活Windows。具体操作,请参见VPC环境下ECS Windows系统激活方法。如果在激活中遇到问题,请参见Windows系统ECS实例激活失败。
频繁调用Windows系统API:timeBeginPeriod导致系统时间异常,如何解决?
- 远程登录ECS实例。
具体操作,请参见通过密码或密钥认证登录Windows实例。
- 下载工具。
- 解压CheckTimeBeginPeriod.zip。
- 进入bin目录,然后双击.exe文件。
- 64位操作系统,双击InjectDllx64.exe。
- 32位操作系统,双击InjectDllx86.exe。
打印的进程就是调用timeBeginPeriod的进程。
- 根据业务实际情况,停止或更新调用timeBeginPeriod的程序。
基于弹性裸金属实例规格的ECS实例,系统生成crash dump文件失败如何解决?
问题原因及解决方案,请参见部分ECS实例生成crash dump文件失败如何解决?。
Linux操作系统内核回写时出现softlockup异常如何解决?
部分低版本的Linux操作系统内核在回写(writeback)文件缓存时,会出现softlockup异常。具体的解决方案,请参见Linux操作系统内核回写时出现softlockup异常的解决方案。
在ECS实例内删除cgroup出现softlockup异常如何解决?
具体的解决方案,请参见在ECS实例内删除cgroup出现softlockup异常的解决方案。
ECS实例宕机相关解决方案
为什么我无法使用ssh-rsa签名算法的SSH密钥对远程连接Fedora 33 64位系统的实例?
- 将ssh-rsa签名算法的SSH密钥对替换为ECDSA签名算法等其他签名算法的SSH密钥对。
- 在系统中运行update-crypto-policies --set LEGACY命令,将加密策略
POLICY
切换为LEGACY
,即可继续使用ssh-rsa签名算法的SSH密钥对。
FreeBSD系统如何打补丁编译内核?
阿里云的FreeBSD公共镜像已为内核添加了补丁,已满足系列V及以上的实例规格族的启动需求。具体的实例规格族可通过DescribeInstanceTypeFamilies接口的Generation
参数查询。
- 使用非阿里云提供的FreeBSD镜像及相关自定义镜像创建ECS实例时,系列V及以上实例规格族的ECS实例可能出现无法正常启动的情况。
- 使用FreeBSD公共镜像创建ECS实例,并使用了freebsd-update等更新内核补丁,可能会导致系列V及以上实例规格族的ECS实例无法正常启动。
FreeBSD 13及以上不需要打补丁。本示例以FreeBSD 12.3为例,介绍如何使用FreeBSD内核源码打补丁编译内核。
- 下载并解压FreeBSD内核源码。
wget https://mirrors.aliyun.com/freebsd/releases/amd64/12.3-RELEASE/src.txz -O /src.txz cd / tar -zxvf /src.txz
- 下载补丁包。
本示例中,为virtio驱动打补丁包
0001-virtio.patch
。cd /usr/src/sys/dev/virtio/ wget https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/0001-virtio.patch patch -p4 < 0001-virtio.patch
- 复制内核文件,并编译安装内核。
make -j<N>
表示指定编译时的并行数,需要根据您执行编译的环境配置来决定。例如,1 vCPU环境建议设置-j2
,即vCPU核数与变量N的比值为1:2
。cd /usr/src/ cp ./sys/amd64/conf/GENERIC . make -j2 buildworld KERNCONF=GENERIC make -j2 buildkernel KERNCONF=GENERIC make -j2 installkernel KERNCONF=GENERIC
- 编译完成后,删除源码。
rm -rf /usr/src/* rm -rf /usr/src/.*
为什么Ubuntu某些版本的ECS实例中启动安骑士进程后系统负载较高?
Ubuntu某些版本(例如Ubuntu 18.04)的ECS实例中,启动安骑士进程(AliYunDun)后,系统平均负载较高。关闭安骑士进程后,系统平均负载恢复正常。
具体的原因和解决方案,请参见Ubuntu 18.04版本的ECS实例中启动安骑士进程后系统负载较高。
公共镜像自带FTP上传吗?
不自带,需要您自己安装配置。具体操作,请参见手动搭建FTP站点(Windows)和手动搭建FTP站点(CentOS 7)。
如何处理CentOS DNS解析超时?
问题原因
因CentOS 6和CentOS 7的DNS解析机制变动,导致2017年02月22日以前创建的ECS实例或使用2017年02月22日以前的自定义镜像创建的CentOS 6和CentOS 7实例可能出现DNS解析超时的情况。
解决方案
- 下载脚本fix_dns.sh。
- 将下载的脚本放至CentOS系统的/tmp目录下。
- 运行bash /tmp/fix_dns.sh命令,执行脚本。
- 脚本作用
判断DNS解析文件/etc/resolv.conf中是否存在
options
>single-request-reopen
配置。更多信息,请参见resolv.conf文件说明。CentOS 6和CentOS 7的DNS解析机制,使用相同的网络五元组发送IPV4 DNS请求和IPV6 DNS请求,此时应开启
single-request-reopen
配置。开启该配置后,一旦需要处理同一socket发送的两次请求时,解析端会在发送第一次请求后关闭socket,并在发送第二次请求前打开新的socket。配置成功后,无需重启实例即可生效。 - 脚本逻辑
- 判断实例系统是否为CentOS。
- 如果实例为非CentOS系统(如Ubuntu和Debian):脚本停止工作。
- 如果实例为CentOS系统:脚本继续工作。
- 查询解析文件/etc/resolv.conf中
options
的配置情况。- 如果不存在
options
配置:默认使用阿里云options
配置options timeout:2 attempts:3 rotate single-request-reopen
。 - 如果存在
options
配置:- 不存在
single-request-reopen
配置,则在options
配置中追加该项。 - 存在
single-request-reopen
配置,则脚本停止工作,不更改DNS nameserver的配置。
- 不存在
- 如果不存在
- 判断实例系统是否为CentOS。
为什么ECS默认没有启用虚拟内存或Swap说明?
Swap分区或虚拟内存文件,是在系统物理内存不够用的时候,由系统内存管理程序将那些很长时间没有操作的内存数据,临时保存到Swap分区或虚拟内存文件中,以提高可用内存额度的一种机制。
但是,如果在内存使用率已经非常高,而同时I/O性能也不是很好的情况下,该机制其实会起到相反的效果。阿里云ECS云盘使用了分布式文件系统作为云服务器的存储,对每一份数据都进行了强一致的多份拷贝。该机制在保证用户数据安全的同时,由于3倍增涨的I/O操作,会降低本地磁盘的存储性能和I/O性能。
综上,为了避免当系统资源不足时进一步降低ECS云磁盘的I/O性能,所以Windows系统实例默认没有启用虚拟内存,Linux系统实例默认未配置Swap分区。
如何在公共镜像中开启kdump?
- 设置core文件生成目录。
- 运行vim /etc/kdump.conf打开kdump配置文件。vim命令使用详情,请参见Vim教程。
- 设置path为core文件的生成目录。本示例中,在/var/crash目录下生成core文件,则path的设置如下。
path /var/crash
- 保存并关闭/etc/kdump.conf文件。
- 开启kdump服务。
根据操作系统对命令的支持情况,选择开启方式。
- 方法一: 依次运行以下命令开启kdump服务。
systemctl enable kdump.service
systemctl start kdump.service
- 方法二: 依次运行以下命令开启kdump服务。
chkconfig kdump on
service kdump start
- 方法三:如果您的服务器已安装云助手,可参考如何解决实例迁移后的宕机问题?开启kdump服务。
- 方法一: 依次运行以下命令开启kdump服务。
如何解决RedHat 8.1/8.2镜像在弹性裸金属服务器实例规格族的ECS实例下启动慢的问题?
在弹性裸金属服务器实例规格族的ECS实例中,RedHat 8.1/8.2镜像相较于RedHat 7镜像启动时长多1~2分钟。为解决该问题,您可以在RedHat 8.1/8.2系统的/boot/grub2/grubenv文件中,将内核启动参数console=ttyS0 console=ttyS0,115200n8
修改为console=tty0 console=ttyS0,115200n8
,然后重启服务器使配置生效。
如何检查与修复CentOS 7实例和Windows实例IP地址缺失问题?
问题原因及解决方案,请参见如何检查与修复CentOS 7实例和Windows实例IP地址缺失问题。
如何从RHEL 7升级到RHEL 8(Red Hat Enterprise Linux 8)?
升级文档请参见从RHEL 7升级到RHEL 8。
如何设置Linux系统的ECS实例的静态IP地址?
您需要远程连接ECS实例进行设置。具体操作,请参见如何在Linux实例中设置静态IP地址。
CentOS/RedHat 7.x升级Systemd重启进入救援模式如何处理?
CentOS 7或RedHat 7系列的系统在升级Systemd至systemd-219-71.el7版本后,重启实例会进入救援模式,这样会导致系统网络服务和一般的应用软件服务异常。具体解决方案请参见CentOS 7.X或RedHat 7.X升级Systemd并重启后会进入救援模式。
如何在Linux实例中自定义配置DNS?
具体操作,请参见如何在Linux实例中自定义配置DNS。
为什么使用Fedora CoreOS镜像创建部分实例后,CPU信息只有实例规格的一半?
On-line CPU(s) list
的总个数只有实例实际规格的一半。例如,创建实例时选择的CPU为2核,则On-line CPU(s) list
个数只有1个。示例如下图所示。
On-line CPU(s) list
参数值代表CPU编号,图中示例表示只有0号CPU可用。
这是因为Fedora CoreOS镜像的内核默认配置了mitigations=auto,nosmt
启动参数,会自动为有漏洞的系统禁用同步多线程技术SMT(Simultaneous Multi-Threading ),导致可用CPU减半。mitigations=auto,nosmt
参数可以通过执行cat /proc/cmdline命令查看。
关于SMT的更多信息,请参见Automatically disable SMT when needed to address vulnerabilities和Policy for disabling SMT。
Linux操作系统配置IPv6地址后,安装了NTP服务的服务器时间无法同步,如何处理?
- 问题现象:在服务器上执行
ntpq -p
同步时间时,返回超时,如下图所示。 - 解决方法:
说明 本方法适用于CentOS 7及以下、Ubuntu 20.04及以下、Anolis OS(ANCK\RHCK)、Alibaba Cloud Linux、Debian等系列操作系统。
- 远程连接Linux实例。
具体操作,请参见通过密码或密钥认证登录Linux实例。
- 运行以下命令,修改/etc/ntp.conf配置文件。
vi /etc/ntp.conf
- 按i键进入编辑模式。
- 在文件中添加
restrict -6 ::1
内容,如下图所示。 - 修改完成后按Esc键,并输入
:wq
后按下回车键,保存并退出。 - 运行以下命令,重启NTP服务。
systemctl restart ntp
- 远程连接Linux实例。