
2021年12月
当您在Linux系统上部署业务时希望程序能够区分不同的ECS实例,可能会通过systemd-machine-id-setup命令重置/etc/machine-id的方式来实现,但该方式需要您在每台ECS实例上重新生成machine ID。为免去繁琐的操作,阿里云推荐您通过/sys/class/dmi/id/product_uuid文件来区分不同的ECS实例,该文件作为实例对外的唯一标识之一,可完全取代/etc/machine-id的作用,并且操作简便,只需要获取实例对应的UUID即可。您可以运行以下命令查看ECS实例的/sys/class/dmi/id/product_uuid信息:
cat /sys/class/dmi/id/product_uuid
返回结果示例:
创建ECS时,DNS服务器采用默认配置,不需要额外配置。
Linux系统存在不同的发行版本,不同发行版本中自定义配置DNS的方法不同,请根据现场环境匹配下列发行版本的操作命令。DNS配置完成之后请参见文件锁定方式,避免因为重启系统配置还原。
1.Alibaba Cloud Linux 2
2.Ubuntu
Ubuntu 16
Ubuntu 18/20
3.CentOS
CentOS 6/7/8
4.Debian
Debian 9/10
5.SUSE Linux
SUSE Linux 12/15
6.OPENSUSE
OPENSUSE 15
详情参见:如何在Linux实例中自定义配置DNS
CentOS 7或RedHat 7系列的系统在升级Systemd至systemd-219-71.el7版本后,重启实例会进入救援模式,这样会导致系统网络服务和一般的应用软件服务异常。具体解决方案请参见CentOS 7.X或RedHat 7.X升级Systemd并重启后会进入救援模式。
查看并记录Linux实例的IP地址和网关信息
1.登录Linux系统的ECS实例,执行以下命令,查看实例的IP地址和子网掩码。
ifconfig
2.执行以下命令,查看实例的网关信息。
route -n
3.通过阿里云的MetaServer获取相关信息。
修改ECS实例的网络类型
1.编辑以下文件,将BOOTPROTO的值修改为static,并将以上步骤中记录的IP地址、网关信息、子网掩码填写到该配置文件中,保存并退出。
/etc/sysconfig/network-scripts/ifcfg-eth0
2.执行以下命令,重启网络服务。
systemctl restart network
该问题可能是由于断电等情况,导致ECS实例内存数据丢失引发的文件系统错误。问题详情及修复方案,请参见ECS实例系统启动失败时报“UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY.”的错误。
历史Linux镜像创建的ECS云服务器,可能存在NTP、阿里云软件源没有配置的情况,还可能存在安全漏洞。修复这些问题,可以让您的云服务器更加安全,可以使用阿里云提供的免费NTP服务器进行时间同步,还可以使用阿里云提供的软件源服务安装软件。修复方法如下:
1.配置NTP服务,请参见配置Linux实例NTP服务(CentOS 6)。
2.添加阿里云软件源,请参见添加软件源。
3.主要修复目前已知的重大安全漏洞,需要升级的软件包括: bash 、glibc 、 openssl 、wget 、ntp 。
在执行如下命令之前,需要确保系统当前的软件源已经正确设置。
CentOS和Aliyun Linux系统:yum update bash glibc openssl wget ntp
Ubuntu和Debian系统:apt-get install bash libc6 libc-bin openssl wget ntp
您可以根据实际情况,从本文提供的四种解决方法中选择其中一种。
方法1:云助手批量修复。适用于多台实例的场景,可以在ECS控制台上完成,操作方式更简便。
方法2:基于云助手API编写的Python SDK脚本。以地域为修复单位,批量检测您的实例状态并完成自动修复。适用于熟悉脚本化运维的用户。
方法3:提供了Shell和PowerShell脚本,需要您登录到ECS实例中手动修复,适用于在少量实例中轮询或测试的场景。其中,脚本内容和解决方法1一致。
方法4:逐一排查网卡,适用于少量实例的场景。
以下几种镜像为已经打开Meltdown安全漏洞补丁(采取PTI ON措施)的公共镜像,镜像将随着阿里云公共镜像的更新而发生变化。
CentOS 7.5/7.6 Debian 9.6/8.10 Red Hat 7.5/7.6 SUSE Linux 15 Ubuntu 18.04 CoreOS 1911.3.0 FreeBSD 11.2 OpenSUSE 15
如果您认为开启PTI ON对实例性能有影响,或者您有其他防护措施,可以根据以下步骤关闭PTI ON。
注:如何添加或修改内核参数,请参阅各Linux发行版对应的官方网站。
阿里云目前支持IBRS和IBPB输出。公共镜像默认通过Reptpoline和IBPB (Indirect Branch Prediction Barriers)的限制策略对Spectre漏洞进行防护,同时通过noibrs参数禁用了IBPB。以下几种镜像为涉及的公共镜像,镜像将随着阿里云公共镜像的更新而发生变化。
CentOS 7.5/7.6 Debian 9.6/8.10 Red Hat 7.5/7.6 SUSE Linux 15 Ubuntu 18.04 CoreOS 1911.3.0 FreeBSD 11.2 OpenSUSE 15
如果您需要恢复操作系统的默认设置,或者认为当前设置对性能有影响,若您有其他防护措施需要关闭Spectre安全漏洞补丁,请按照以下步骤做相应的修改。
注:如何添加或修改内核参数,请参阅各Linux发行版对应的官方网站。
解决方案
1.升级系统内核版本
登录实例,执行如下命令,将系统内核升级至3.10.0-693.21.1.el7.x86_64及以上版本。
yum update kernel
2.修改配置参数
如果您不方便升级系统内核,也可以采用如下两种方法解决该问题。
方法一
通过执行以下命令,调整内核参数的值,使gc_thresh1的值大于VPC同一网段内实例数量,并确保gc_thresh3的值大于gc_thresh2的值,gc_thresh2的值大于gc_thresh1的值。
方法二
规划网段时,建议您控制VPC同一网段内实例数量,避免出现同一网段内实例数量过多的情况。
在弹性裸金属服务器实例规格族的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,然后重启服务器使配置生效。
RedHat 8.1 v1版本镜像中kdump服务默认未开启。如果您需要使用kdump,请运行以下命令开启kdump服务。
systemctl enable kdump
systemctl start kdump
当前部分RHEL镜像默认未开启kdump,您可以提交工单获取dump文件。请注意,通过提交工单获取dump文件时,内存大于16 GiB的实例规格可能出现无法获取dump文件的情况,详情请以工单内信息为准。
公共镜像中默认未开启kdump服务。若您需要实例在宕机时,生成core文件,并以此分析宕机原因,请参见以下步骤开启kdump服务。本步骤以公共镜像CentOS 7.2为例。实际操作时,请以您的操作系统为准。
1.设置core文件生成目录。
1)运行vim /etc/kdump.conf打开kdump配置文件。vim命令使用详情,请参见Vim教程。
2)设置path为core文件的生成目录。本示例中,在/var/crash目录下生成core文件,则path的设置如下。
path /var/crash
3)保存并关闭/etc/kdump.conf文件。
2.开启kdump服务。
根据操作系统对命令的支持情况,选择开启方式。本示例中,CentOS 7.2使用方法一开启kdump服务。
方法一: 依次运行以下命令开启kdump服务。
systemctl enable kdump.service
systemctl start kdump.service
方法二: 依次运行以下命令开启kdump服务。
chkconfig kdump on
service kdump start
3.运行以下命令模拟宕机。
echo c > /proc/sysrq-trigger
说明 运行该命令后,实例会与网络失去连接。您需要重新连接实例,完成后续操作。
4.分析core文件。
1)运行以下命令安装Crash分析工具。
yum install crash
2)下载debug-info安装包。
运行uname -r命令查看操作系统内核版本,下载相应版本的debug-info包。
kernel-debuginfo-common-x86_64-<内核版本>.rpm
kernel-debuginfo-<内核版本>.rpm
说明 不同CentOS版本的debug-info包下载地址有所不同。您可以通过CentOS官网查找对应版本软件包的下载地址,具体请参见CentOS debuginfo软件包。
本示例中,系统的内核版本为3.10.0-514.26.2.el7.x86_64,因此下载命令为:
wget http://debuginfo.centos.org/7/x86_64/kernel-debuginfo-common-x86_64-3.10.0-514.26.2.el7.x86_64.rpm
wget http://debuginfo.centos.org/7/x86_64/kernel-debuginfo-3.10.0-514.26.2.el7.x86_64.rpm
3)依次运行下列命令,安装debug-info包。
rpm -ivh kernel-debuginfo-common-x86_64-3.10.0-514.26.2.el7.x86_64.rpm
rpm -ivh kernel-debuginfo-3.10.0-514.26.2.el7.x86_64.rpm
4)依次运行以下命令使用Crash工具分析core文件。
cd <core文件的生成目录>
crash /usr/lib/debug/lib/modules/<内核版本号>/vmlinux vmcore
本示例中,core文件的生成目录为/var/crash/127.0.0.1-2019-07-08-15:52:25,内核版本号为3.10.0-514.26.2.el7.x86_64,因此运行的命令为:
cd /var/crash/127.0.0.1-2019-07-08-15:52:25
crash /usr/lib/debug/lib/modules/3.10.0-514.26.2.el7.x86_64/vmlinux vmcore
Swap分区或虚拟内存文件,是在系统物理内存不够用的时候,由系统内存管理程序将那些很长时间没有操作的内存数据,临时保存到Swap分区或虚拟内存文件中,以提高可用内存额度的一种机制。
但是,如果在内存使用率已经非常高,而同时I/O性能也不是很好的情况下,该机制其实会起到相反的效果。阿里云ECS云盘使用了分布式文件系统作为云服务器的存储,对每一份数据都进行了强一致的多份拷贝。该机制在保证用户数据安全的同时,由于3倍增涨的I/O操作,会降低本地磁盘的存储性能和I/O性能。
综上,为了避免当系统资源不足时进一步降低ECS云磁盘的I/O性能,所以Windows系统实例默认没有启用虚拟内存,Linux系统实例默认未配置Swap分区。
处理CentOS DNS解析超时的详情如下:
1.原因分析
因CentOS 6和CentOS 7的DNS解析机制变动,导致2017年2月22日以前创建的ECS实例或使用2017年2月22日以前的自定义镜像创建的CentOS 6和CentOS 7实例可能出现DNS解析超时的情况。
2.解决方法
请按下列步骤操作修复此问题:
下载脚本fix_dns.sh。
将下载的脚本放至CentOS系统的/tmp目录下。
运行bash /tmp/fix_dns.sh命令,执行脚本。
3.脚本作用
判断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。配置成功后,无需重启实例即可生效。
4.脚本逻辑
1)判断实例系统是否为CentOS。
如果实例为非CentOS系统(如Ubuntu和Debian):脚本停止工作。
如果实例为CentOS系统:脚本继续工作。
2)查询解析文件/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的配置。
内网互通可以通过高速通道和云企业网实现。
要互连的网络实例(专有网络VPC、本地数据中心关联的边界路由器VBR、本地分支或总部加入的云连接网CCN)的所属地域和账号决定了网络互通所需的步骤。在开始使用CEN配置互连网络前,您需要明确要互通的网络实例及所属账号和地域情况。
详情请参见 《云企业网文档》步骤一:网络规划。
ECS实例间迁移步骤如下:
1.为源ECS实例创建自定义镜像。
2.根据源ECS实例与目标ECS实例的归属地域和归属账号,迁移分为以下几种情况。
源实例与目标实例属于同地域同账号,可直接进入下一步。
源实例与目标实例属于不同地域,需复制镜像至目标实例所在地域。详情请参见复制镜像。
源实例与目标实例属于不同账号,需共享镜像给目标实例的账号。详情请参见共享或取消共享镜像。
源实例与目标实例属于不同地域和不同账号,需先复制镜像到目标地域,再分享给目标实例的账号。详情请参见复制镜像和共享或取消共享镜像。
3.使用镜像创建新的ECS实例,或为现有目标ECS实例更换镜像。详情请参见使用自定义镜像创建实例或更换操作系统(镜像)。
说明 为现有目标ECS实例更换镜像时,源镜像中不能包含数据盘快照。
以上迁移步骤不适用时,请参见阿里云ECS实例间迁移。
您可以通过下列步骤操作:
1.使用账号A的实例创建自定义镜像。具体步骤,请参见使用实例创建自定义镜像。
2.共享镜像给账号B。具体步骤,请参见共享或取消共享镜像。
3.账号B使用共享镜像创建实例。具体步骤,请参见使用自定义镜像创建实例。
请确保您已将镜像共享给新购服务器的账号,并根据实际情况选择下列方法之一进行操作。
如果共享镜像和新购服务器在同一个地域,可以更换系统盘,更换时选择您共享的镜像即可。具体步骤,请参见更换操作系统(非公共镜像)。
如果共享镜像和新购服务器不在同一个地域,需要先复制镜像到目标地域,再通过更换系统盘来更换镜像。具体步骤,请参见复制镜像和更换操作系统(非公共镜像)。
注意:更换系统盘存在如下风险:
原系统盘会被释放,建议您提前创建快照备份数据。
更换系统盘需要停止实例,因此会中断您的业务。
更换系统盘完成后,您需要在新的系统盘中重新部署业务运行环境,有可能会对您的业务造成长时间的中断。
更换系统盘是重新为您的实例分配一个系统盘,磁盘ID会改变,所以基于旧的系统盘创建的快照将不能用于回滚新的系统盘。
您可以为之前的ECS实例创建自定义镜像,然后使用该自定义镜像创建ECS实例即可。具体步骤,请参见使用实例创建自定义镜像和使用自定义镜像创建实例。
可以。您可通过以下任一方式找回实例数据:
使用之前制作的镜像创建新实例。具体步骤,请参见使用自定义镜像创建实例。
使用之前制作的镜像为当前实例更换系统盘。具体步骤,请参见更换操作系统(非公共镜像)。
注意 更换系统盘操作须注意以下两点:
当前实例系统盘的内容会全部丢失,恢复为镜像的状态。
镜像必须和您当前实例位于同一地域。
阿里云线上售卖的SLES(SUSE Linux Enterprise Server)操作系统会与SUSE更新源保持定时同步。使用SLES公共镜像创建的实例,其操作系统的支持服务涵盖在阿里云的企业级别支持服务中。如果您购买了企业级支持服务,可以提交工单获取帮助,阿里云工程师团队会协助您解决SLES操作系统上发生的问题。
支持的操作系统类型有:Anolis OS,CentOS,CoreOS,Debian,FreeBSD,OpenSUSE,Red Hat,SUSE Linux,Ubuntu,Fedora CoreOS,Fedora,具体的SUSE版本,参见Linux公共镜像列表。
除Windows Server半年渠道实例以外,Windows操作系统是桌面管理形式。有关如何使用Windows Server半年渠道操作系统,请参见Windows Server半年渠道镜像与实例管理。
Linux 操作系统是命令行形式,您可以根据需要安装图形化桌面。
您可以通过以下方式安装或者升级操作系统:
1.更换系统盘重新选择操作系统。具体操作,请参见更换操作系统或批量升级操作系统。
2.从本地导入自己的镜像后使用自定义镜像创建ECS实例。
关于如何导入镜像,请参见导入镜像必读。
关于如何使用自定义镜像创建ECS实例,请参见使用自定义镜像创建实例。
3.为操作系统打补丁。
使用公共镜像Windows Server和Red Hat需付费,计费与实例规格大小有关,其余公共镜像均免费。其他类型镜像的费用详情,请参见镜像概述。
以下是激活VPC网络Windows实例的操作步骤。此处示例实例在中国内地区域,因此KMS域名以“kms.cloud.aliyuncs.com“为例。
1.登录Windows实例,详情请参见连接方式概述。
2.单击开始>运行,输入cmd,然后按回车键后进入命令行窗口。
3.执行以下命令,更换KMS域名。
slmgr -skms kms.cloud.aliyuncs.com
4.执行以下命令,激活KMS服务。
slmgr -ato
详情请参见VPC环境下ECS Windows系统激活方法。
如果在激活中遇到问题,请参见Windows系统ECS实例激活失败。
微软已经于2020年1月14日停止对Windows Server 2008和Windows Server 2008 R2操作系统提供支持。因此阿里云不再对使用上述操作系统的ECS实例提供技术支持。如果您有使用上述操作系统的ECS实例,请尽快更新至Windows Server 2012或以上版本。
使用Windows 操作系统创建ECS实例时,需要确保实例内存大于等于1GiB。内存低于1GiB的ECS实例(例如, 512MiB)只能选择Linux镜像和Windows Server 1709镜像。
Ubuntu某些版本(例如Ubuntu 18.04)的ECS实例中,启动安骑士进程(AliYunDun)后,系统平均负载较高。关闭安骑士进程后,系统平均负载恢复正常。
具体的原因和解决方案请参见Ubuntu 18.04版本的ECS实例中启动安骑士进程后系统负载较高。
阿里云的FreeBSD公共镜像已为内核添加了补丁,已满足系列V及以上的实例规格族的启动需求。具体的实例规格族可通过DescribeInstanceTypeFamilies接口的Generation参数查询。
以下情况可能导致系统无法正常启动,您可以通过FreeBSD内核源码打补丁编译内核的方式,避免或解决系统无法启动的问题。
使用非阿里云提供的FreeBSD镜像及相关自定义镜像创建ECS实例时,系列V及以上实例规格族的ECS实例可能出现无法正常启动的情况。
使用FreeBSD公共镜像创建ECS实例,并使用了freebsd-update等更新内核补丁,可能会导致系列V及以上实例规格族的ECS实例无法正常启动。
本示例以FreeBSD 12.1为例,介绍如何使用FreeBSD内核源码打补丁编译内核。
1.下载并解压FreeBSD内核源码。
wget https://mirrors.aliyun.com/freebsd/releases/amd64/12.1-RELEASE/src.txz -O /src.txz cd / tar -zxvf /src.txz
2.下载补丁包。
本示例中,为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
3.复制内核文件,并编译安装内核。
make -j 表示指定编译时的并行数,需要根据您执行编译的环境配置来决定。例如,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
4.编译完成后,删除源码。
rm -rf /usr/src/*
rm -rf /usr/src/.*
当您使用Fedora 33 64位操作系统的ECS实例时,如果登录凭证设置的是ssh-rsa签名算法的SSH密钥对,可能无法顺利使用SSH远程连接实例。您可以通过以下任一方式解决该问题:
将ssh-rsa签名算法的SSH密钥对替换为ECDSA签名算法等其他签名算法的SSH密钥对。
在系统中运行update-crypto-policies --set LEGACY命令,将加密策略POLICY切换为LEGACY,即可继续使用ssh-rsa签名算法的SSH密钥对。
您需要把内核版本更新为高于4.15的版本以解决该问题。Alibaba Cloud Linux操作系统的内核版本均为4.19,不会出现该问题。以下解决方案主要适用于非Alibaba Cloud Linux操作系统的其他Linux发行版。
注意 在操作前,建议您为ECS实例创建快照备份数据,避免因误操作造成的数据丢失。创建快照的更多信息,请参见快照概述。
1.远程连接Linux实例。
2.运行以下命令查看内核版本信息。
uname -r
3.如果内核版本不高于4.15,则需要运行以下命令更新内核版本。
如果内核版本高于4.15,则表示系统不会出现softlockup异常。您无需再进行后续操作。
yum update kernel
4.更新内核版本后,需要重启Linux实例。
reboot
5.待Linux实例重启后,再次运行以下命令,确认内核版本已高于4.15。
uname -r
部分低版本的Linux内核如果无法通过yum update kernel命令更新内核版本,则需要您自行下载高于4.15版本的内核RPM包手动升级。
您可以通过以下任一方式解决该问题:
方式一:自行升级操作系统内核至5.10版本。
方式二:为操作系统新增以下补丁,并重新构建内核(build kernel)。
Benjamin Herrenschmidt (1): PCI: Don't auto-realloc if we're preserving firmware config
Kelsey Skunberg (1): PCI: Make pci_hotplug_io_size, mem_size, and bus_size private
Logan Gunthorpe (1): PCI: Don't disable bridge BARs when assigning bus resources
Nicholas Johnson (2): PCI: Add "pci=hpmmiosize" and "pci=hpmmioprefsize" parameters PCI: Avoid double hpmemsize MMIO window assignment
说明:部分内核版本已包含上述的部分补丁,您仍需要将未包含的补丁添加至内核中。例如,Debian 10的4.19内核版本已经包含了上述的第1、3个补丁,但还需要将第2、4、5个补丁添加至内核之后才可以使操作系统正常使用Kdump服务。
当您使用由包年包月镜像制作的自定义镜像时,无论是使用自定义镜像创建实例,还是更换系统盘,都是重新在镜像市场下单购买镜像的使用权。所以,用于制作自定义镜像的包年包月镜像是否过期,对使用自定义镜像没有影响。
可以。您可以通过ECS实例更换系统盘来更换镜像。更换镜像时有以下几种选择:
1.将其他类别的镜像(如公共镜像、自定义镜像、共享镜像)换成包年包月镜像:更换后,系统将按镜像的费用和ECS实例的剩余付费周期计算实际费用。
2.将包年包月镜像换成其它类别的镜像(如公共镜像、自定义镜像、共享镜像):如果供应商允许退款,镜像供应商将按照您的实际使用情况退款。
3.将一个包年包月镜像(设为镜像A)换成另一个包年包月镜像(设为镜像B):更换后,如果镜像 A 允许退款,将按退款方式结算费用,镜像B将按镜像的价格和ECS实例剩余付费周期计算实际费用。
包年包月镜像到期后,如果没有及时续费就不能再正常使用。
您不能单独为包年包月镜像续费。如果您需要继续使用该镜像,可以在续费包年包月ECS实例时,同步为镜像续费。续费后即可继续使用该镜像。
目前您还不能单独购买包年包月镜像。
您可以选择以下任一种方式购买包年包月镜像:
1.在创建ECS实例时,付费方式选择包年包月,并从镜像市场选择镜像,再选择按周、按月或按年付费。
说明:在这种情况下,您需要同时支付实例与镜像的费用。如果实例创建成功,表明您已经同时支付了实例与镜像的费用,不会出现其中一项资源购买失败的情况。
2.如果您想在一台已有的包年包月或按周付费ECS实例上使用包年包月镜像,您可以使用更换操作系统功能将操作系统更换为包年包月镜像,此时,您只能按照ECS实例的付费周期选择镜像的付费周期。具体操作方式,请参见更换操作系统(非公共镜像)。
说明:在这种情况下,您只需要支付镜像的费用。
镜像市场的包年包月和按周付费镜像是指从阿里云云市场购买的,按周、按月或按年付费使用的镜像。这些镜像由镜像供应商开发并维护,所有售前咨询和售后服务都由镜像供应商提供。在本文中,这类镜像统称为包年包月镜像。
有关该问题的分析及解决方案如下:
问题现象:在阿里云官网购买ECS实例,选择镜像时,发现无法选取任何镜像市场的镜像。
原因分析:该问题可能是由于购买ECS实例时,勾选了I/O优化实例选项导致的。
与普通ECS实例相比,I/O优化实例可在实例与云盘之间提供更好的网络能力,可保证SSD云盘存储发挥最高性能。由于相关优化操作涉及网络、存储和镜像内部相关驱动等,因此并非所有镜像都能支持I/O优化实例。
解决方法:购买I/O优化实例时,建议您选择实例支持的官方标准镜像,再自行部署相关业务环境。
如问题依然未解决,请提交工单。
当您在Linux系统上部署业务时希望程序能够区分不同的ECS实例,可能会通过systemd-machine-id-setup命令重置/etc/machine-id的方式来实现,但该方式需要您在每台ECS实例上重新生成machine ID。为免去繁琐的操作,阿里云推荐您通过/sys/class/dmi/id/product_uuid文件来区分不同的ECS实例,该文件作为实例对外的唯一标识之一,可完全取代/etc/machine-id的作用,并且操作简便,只需要获取实例对应的UUID即可。您可以运行以下命令查看ECS实例的/sys/class/dmi/id/product_uuid信息:
cat /sys/class/dmi/id/product_uuid
返回结果示例:
创建ECS时,DNS服务器采用默认配置,不需要额外配置。
Linux系统存在不同的发行版本,不同发行版本中自定义配置DNS的方法不同,请根据现场环境匹配下列发行版本的操作命令。DNS配置完成之后请参见文件锁定方式,避免因为重启系统配置还原。
1.Alibaba Cloud Linux 2
2.Ubuntu
Ubuntu 16
Ubuntu 18/20
3.CentOS
CentOS 6/7/8
4.Debian
Debian 9/10
5.SUSE Linux
SUSE Linux 12/15
6.OPENSUSE
OPENSUSE 15
详情参见:如何在Linux实例中自定义配置DNS
CentOS 7或RedHat 7系列的系统在升级Systemd至systemd-219-71.el7版本后,重启实例会进入救援模式,这样会导致系统网络服务和一般的应用软件服务异常。具体解决方案请参见CentOS 7.X或RedHat 7.X升级Systemd并重启后会进入救援模式。
查看并记录Linux实例的IP地址和网关信息
1.登录Linux系统的ECS实例,执行以下命令,查看实例的IP地址和子网掩码。
ifconfig
2.执行以下命令,查看实例的网关信息。
route -n
3.通过阿里云的MetaServer获取相关信息。
修改ECS实例的网络类型
1.编辑以下文件,将BOOTPROTO的值修改为static,并将以上步骤中记录的IP地址、网关信息、子网掩码填写到该配置文件中,保存并退出。
/etc/sysconfig/network-scripts/ifcfg-eth0
2.执行以下命令,重启网络服务。
systemctl restart network
该问题可能是由于断电等情况,导致ECS实例内存数据丢失引发的文件系统错误。问题详情及修复方案,请参见ECS实例系统启动失败时报“UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY.”的错误。
历史Linux镜像创建的ECS云服务器,可能存在NTP、阿里云软件源没有配置的情况,还可能存在安全漏洞。修复这些问题,可以让您的云服务器更加安全,可以使用阿里云提供的免费NTP服务器进行时间同步,还可以使用阿里云提供的软件源服务安装软件。修复方法如下:
1.配置NTP服务,请参见配置Linux实例NTP服务(CentOS 6)。
2.添加阿里云软件源,请参见添加软件源。
3.主要修复目前已知的重大安全漏洞,需要升级的软件包括: bash 、glibc 、 openssl 、wget 、ntp 。
在执行如下命令之前,需要确保系统当前的软件源已经正确设置。
CentOS和Aliyun Linux系统:yum update bash glibc openssl wget ntp
Ubuntu和Debian系统:apt-get install bash libc6 libc-bin openssl wget ntp
您可以根据实际情况,从本文提供的四种解决方法中选择其中一种。
方法1:云助手批量修复。适用于多台实例的场景,可以在ECS控制台上完成,操作方式更简便。
方法2:基于云助手API编写的Python SDK脚本。以地域为修复单位,批量检测您的实例状态并完成自动修复。适用于熟悉脚本化运维的用户。
方法3:提供了Shell和PowerShell脚本,需要您登录到ECS实例中手动修复,适用于在少量实例中轮询或测试的场景。其中,脚本内容和解决方法1一致。
方法4:逐一排查网卡,适用于少量实例的场景。
以下几种镜像为已经打开Meltdown安全漏洞补丁(采取PTI ON措施)的公共镜像,镜像将随着阿里云公共镜像的更新而发生变化。
CentOS 7.5/7.6 Debian 9.6/8.10 Red Hat 7.5/7.6 SUSE Linux 15 Ubuntu 18.04 CoreOS 1911.3.0 FreeBSD 11.2 OpenSUSE 15
如果您认为开启PTI ON对实例性能有影响,或者您有其他防护措施,可以根据以下步骤关闭PTI ON。
注:如何添加或修改内核参数,请参阅各Linux发行版对应的官方网站。
阿里云目前支持IBRS和IBPB输出。公共镜像默认通过Reptpoline和IBPB (Indirect Branch Prediction Barriers)的限制策略对Spectre漏洞进行防护,同时通过noibrs参数禁用了IBPB。以下几种镜像为涉及的公共镜像,镜像将随着阿里云公共镜像的更新而发生变化。
CentOS 7.5/7.6 Debian 9.6/8.10 Red Hat 7.5/7.6 SUSE Linux 15 Ubuntu 18.04 CoreOS 1911.3.0 FreeBSD 11.2 OpenSUSE 15
如果您需要恢复操作系统的默认设置,或者认为当前设置对性能有影响,若您有其他防护措施需要关闭Spectre安全漏洞补丁,请按照以下步骤做相应的修改。
注:如何添加或修改内核参数,请参阅各Linux发行版对应的官方网站。
解决方案
1.升级系统内核版本
登录实例,执行如下命令,将系统内核升级至3.10.0-693.21.1.el7.x86_64及以上版本。
yum update kernel
2.修改配置参数
如果您不方便升级系统内核,也可以采用如下两种方法解决该问题。
方法一
通过执行以下命令,调整内核参数的值,使gc_thresh1的值大于VPC同一网段内实例数量,并确保gc_thresh3的值大于gc_thresh2的值,gc_thresh2的值大于gc_thresh1的值。
方法二
规划网段时,建议您控制VPC同一网段内实例数量,避免出现同一网段内实例数量过多的情况。
在弹性裸金属服务器实例规格族的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,然后重启服务器使配置生效。
RedHat 8.1 v1版本镜像中kdump服务默认未开启。如果您需要使用kdump,请运行以下命令开启kdump服务。
systemctl enable kdump
systemctl start kdump
当前部分RHEL镜像默认未开启kdump,您可以提交工单获取dump文件。请注意,通过提交工单获取dump文件时,内存大于16 GiB的实例规格可能出现无法获取dump文件的情况,详情请以工单内信息为准。
公共镜像中默认未开启kdump服务。若您需要实例在宕机时,生成core文件,并以此分析宕机原因,请参见以下步骤开启kdump服务。本步骤以公共镜像CentOS 7.2为例。实际操作时,请以您的操作系统为准。
1.设置core文件生成目录。
1)运行vim /etc/kdump.conf打开kdump配置文件。vim命令使用详情,请参见Vim教程。
2)设置path为core文件的生成目录。本示例中,在/var/crash目录下生成core文件,则path的设置如下。
path /var/crash
3)保存并关闭/etc/kdump.conf文件。
2.开启kdump服务。
根据操作系统对命令的支持情况,选择开启方式。本示例中,CentOS 7.2使用方法一开启kdump服务。
方法一: 依次运行以下命令开启kdump服务。
systemctl enable kdump.service
systemctl start kdump.service
方法二: 依次运行以下命令开启kdump服务。
chkconfig kdump on
service kdump start
3.运行以下命令模拟宕机。
echo c > /proc/sysrq-trigger
说明 运行该命令后,实例会与网络失去连接。您需要重新连接实例,完成后续操作。
4.分析core文件。
1)运行以下命令安装Crash分析工具。
yum install crash
2)下载debug-info安装包。
运行uname -r命令查看操作系统内核版本,下载相应版本的debug-info包。
kernel-debuginfo-common-x86_64-<内核版本>.rpm
kernel-debuginfo-<内核版本>.rpm
说明 不同CentOS版本的debug-info包下载地址有所不同。您可以通过CentOS官网查找对应版本软件包的下载地址,具体请参见CentOS debuginfo软件包。
本示例中,系统的内核版本为3.10.0-514.26.2.el7.x86_64,因此下载命令为:
wget http://debuginfo.centos.org/7/x86_64/kernel-debuginfo-common-x86_64-3.10.0-514.26.2.el7.x86_64.rpm
wget http://debuginfo.centos.org/7/x86_64/kernel-debuginfo-3.10.0-514.26.2.el7.x86_64.rpm
3)依次运行下列命令,安装debug-info包。
rpm -ivh kernel-debuginfo-common-x86_64-3.10.0-514.26.2.el7.x86_64.rpm
rpm -ivh kernel-debuginfo-3.10.0-514.26.2.el7.x86_64.rpm
4)依次运行以下命令使用Crash工具分析core文件。
cd <core文件的生成目录>
crash /usr/lib/debug/lib/modules/<内核版本号>/vmlinux vmcore
本示例中,core文件的生成目录为/var/crash/127.0.0.1-2019-07-08-15:52:25,内核版本号为3.10.0-514.26.2.el7.x86_64,因此运行的命令为:
cd /var/crash/127.0.0.1-2019-07-08-15:52:25
crash /usr/lib/debug/lib/modules/3.10.0-514.26.2.el7.x86_64/vmlinux vmcore
Swap分区或虚拟内存文件,是在系统物理内存不够用的时候,由系统内存管理程序将那些很长时间没有操作的内存数据,临时保存到Swap分区或虚拟内存文件中,以提高可用内存额度的一种机制。
但是,如果在内存使用率已经非常高,而同时I/O性能也不是很好的情况下,该机制其实会起到相反的效果。阿里云ECS云盘使用了分布式文件系统作为云服务器的存储,对每一份数据都进行了强一致的多份拷贝。该机制在保证用户数据安全的同时,由于3倍增涨的I/O操作,会降低本地磁盘的存储性能和I/O性能。
综上,为了避免当系统资源不足时进一步降低ECS云磁盘的I/O性能,所以Windows系统实例默认没有启用虚拟内存,Linux系统实例默认未配置Swap分区。
处理CentOS DNS解析超时的详情如下:
1.原因分析
因CentOS 6和CentOS 7的DNS解析机制变动,导致2017年2月22日以前创建的ECS实例或使用2017年2月22日以前的自定义镜像创建的CentOS 6和CentOS 7实例可能出现DNS解析超时的情况。
2.解决方法
请按下列步骤操作修复此问题:
下载脚本fix_dns.sh。
将下载的脚本放至CentOS系统的/tmp目录下。
运行bash /tmp/fix_dns.sh命令,执行脚本。
3.脚本作用
判断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。配置成功后,无需重启实例即可生效。
4.脚本逻辑
1)判断实例系统是否为CentOS。
如果实例为非CentOS系统(如Ubuntu和Debian):脚本停止工作。
如果实例为CentOS系统:脚本继续工作。
2)查询解析文件/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的配置。
内网互通可以通过高速通道和云企业网实现。
要互连的网络实例(专有网络VPC、本地数据中心关联的边界路由器VBR、本地分支或总部加入的云连接网CCN)的所属地域和账号决定了网络互通所需的步骤。在开始使用CEN配置互连网络前,您需要明确要互通的网络实例及所属账号和地域情况。
详情请参见 《云企业网文档》步骤一:网络规划。
ECS实例间迁移步骤如下:
1.为源ECS实例创建自定义镜像。
2.根据源ECS实例与目标ECS实例的归属地域和归属账号,迁移分为以下几种情况。
源实例与目标实例属于同地域同账号,可直接进入下一步。
源实例与目标实例属于不同地域,需复制镜像至目标实例所在地域。详情请参见复制镜像。
源实例与目标实例属于不同账号,需共享镜像给目标实例的账号。详情请参见共享或取消共享镜像。
源实例与目标实例属于不同地域和不同账号,需先复制镜像到目标地域,再分享给目标实例的账号。详情请参见复制镜像和共享或取消共享镜像。
3.使用镜像创建新的ECS实例,或为现有目标ECS实例更换镜像。详情请参见使用自定义镜像创建实例或更换操作系统(镜像)。
说明 为现有目标ECS实例更换镜像时,源镜像中不能包含数据盘快照。
以上迁移步骤不适用时,请参见阿里云ECS实例间迁移。
您可以通过下列步骤操作:
1.使用账号A的实例创建自定义镜像。具体步骤,请参见使用实例创建自定义镜像。
2.共享镜像给账号B。具体步骤,请参见共享或取消共享镜像。
3.账号B使用共享镜像创建实例。具体步骤,请参见使用自定义镜像创建实例。
请确保您已将镜像共享给新购服务器的账号,并根据实际情况选择下列方法之一进行操作。
如果共享镜像和新购服务器在同一个地域,可以更换系统盘,更换时选择您共享的镜像即可。具体步骤,请参见更换操作系统(非公共镜像)。
如果共享镜像和新购服务器不在同一个地域,需要先复制镜像到目标地域,再通过更换系统盘来更换镜像。具体步骤,请参见复制镜像和更换操作系统(非公共镜像)。
注意:更换系统盘存在如下风险:
原系统盘会被释放,建议您提前创建快照备份数据。
更换系统盘需要停止实例,因此会中断您的业务。
更换系统盘完成后,您需要在新的系统盘中重新部署业务运行环境,有可能会对您的业务造成长时间的中断。
更换系统盘是重新为您的实例分配一个系统盘,磁盘ID会改变,所以基于旧的系统盘创建的快照将不能用于回滚新的系统盘。
您可以为之前的ECS实例创建自定义镜像,然后使用该自定义镜像创建ECS实例即可。具体步骤,请参见使用实例创建自定义镜像和使用自定义镜像创建实例。