华为云用户手册

  • 处理方法 远程登录弹性云服务器。 执行以下命令,查看相应用户的默认Shell。 cat /etc/passwd | grep test 查看相应用户的 Shell 是否被修改成了 nologin。 test:x:1000:1000::/home/test:/sbin/nologin 如果需要修改相关策略配置,在继续之前建议进行文件备份。 执行以下命令,将相应用户的默认Shell修改为bash。 vi /etc/passwd 将/sbin/nologin修改为/bin/bash 使用SSH客户端重新连接服务器。
  • 处理方法 建议不要安装来源不明的软件,使用正版软件,推荐使用Windows2012操作系统。 如果是通过外部镜像创建的服务器,请参考《 镜像服务 用户指南》中“优化Windows私有镜像”章节优化私有镜像。 排查是否是因为CPU占用过高导致的蓝屏,如果是请参考以下操作降低CPU使用率: 可以通过把一些暂时不使用的进程关掉后再尝试。 或者可以尝试重启云服务器。 如果重装系统,请先备份重要数据。 如果服务器有重要数据不能重装,可以通过挂载磁盘方式拷贝数据,需要先备份,再卸载磁盘,然后挂载盘拷贝数据。 如果需要分析蓝屏原因,需要确认是否有配置内存转储文件(crash dump)的收集,系统会自动生成蓝屏dump日志到指定的目录。 由于蓝屏日志的分析非常耗时,建议客户在遇到蓝屏的情况,重启云服务器后,参考如上的可能原因进行排查。一般第三方杀毒软件、系统故障和CPU占用过高是导致云服务器蓝屏最常见的原因。
  • 问题描述 当使用SSH登录Linux弹性云服务器时,即便正确输入了密码,在命令行或secure日志中也会出现类似如下错误信息,导致连接失败: This account is currently not available. Connection to 127.0.0.1 closed. Received disconnect from 127.0.0.1: 11: disconnected by user. pam_unix(sshd:session): session closed for user test.
  • 根因分析 出现该问题的可能原因如下: CentOS 7中/etc/rc.d/rc.local文件没有执行权限。解决方案请参考处理方法1。 /etc/rc.local为/etc/rc.d/rc.local的软链接 /etc/rc.local配置路由重启不生效的场景,是由于添加路由依赖网络服务,而在CentOS 7系统启动过程中内核读取rc.local时网络服务尚未启动,导致添加路由失败。解决方案请参考处理方法2。
  • 处理方法1 针对/etc/rc.d/rc.local文件没有执行权限导致开机启动脚本执行失败的场景,解决方案如下。 CentOS7中该文件默认没有可执行权限 查看/etc/rc.d/rc.local是否有执行权限 ls -l /etc/rc.d/rc.local -rw-r--r-- 1 root root 473 Sep 14 02:19 /etc/rc.d/rc.local 如回显信息所示该文件没有执行权限,需要为/etc/rc.d/rc.local添加可执行权限。 执行以下命令为/etc/rc.d/rc.local添加可执行权限 chmod +x /etc/rc.d/rc.local
  • 处理方法 短期处理方法: 执行以下命令重启NetworkManager服务。 systemctl restart NetworkManager 长期处理方法: CentOS 7操作系统云服务器 执行以下命令停止NetworkManager服务,改用network管理网络 systemctl disable NetworkManager /sbin/chkconfig network on kill `pgrep -o dhclient` systemctl stop NetworkManager systemctl start network 出现network启动失败可能为系统内置多网卡配置文件导致,处理方法参考多网卡配置文件导致network启动失败处理。 Ubuntu16.04操作系统 执行以下命令使用networking管理网络。 systemctl disable NetworkManager systemctl disable network-manager systemctl enable networking kill `pgrep -o dhclient` systemctl stop NetworkManager systemctl start networking 启用networking服务,一定要检查interfaces文件中是否设置网络配置为DHCP模式。 vi /etc/network/interfaces 若只有一个网卡eth0则可以检查或增加: auto eth0iface eth0 inet dhcp 图1 设置网络配置为DHCP模式
  • 根因分析 出现该问题通常是密码文件的属性的问题导致,也有可能是根目录空间满。 执行以下命令查看存放用户和密码的文件(/etc/passwd和/etc/shadow)属性。 lsattr /etc/passwd /etc/shadow 如上图所示,/etc/passwd和/etc/shadow文件中有i属性,"i"的文件属性表示该文件不能修改:它不能被删除或重命名,无法为此创建任何链接文件,不能将任何数据写入该文件。只有管理员用户可以设置或清除此属性。 1.如果设置了'a'属性的文件只能在append(只允许增加记录)写作模式。只有管理员用户可以设置或清除此属性。 CAP_LINUX_IMMUTABLE功能可以设置或清除这个属性。 其他文件属性可以执行以下命令查看chattr使用手册。 chattr 2.如果lsattr结果中没有限制增加或者修改的属性,则可能为根分区空间不足,可以查询根分区使用率。 df -h 处理方法则为删除根分区下不需要的文件。
  • 处理方法 场景一:/etc/resolv.conf未配置 DNS地址 或者DNS地址错误导致。 /etc/resolv.conf中最关键的是nameserver项,如果没指定nameserver就找不到DNS服务器,其它关键字是可选的。 nameserver表示解析 域名 时使用该地址指定的主机为域名服务器。其中域名服务器是按照文件中出现的顺序来查询的,且只有当第一个nameserver没有反应时才查询下一个的nameserver。 请检查/etc/resolv.conf中配置的DNS地址。 场景二:/etc/nsswitch.conf文件删除DNS解析记录导致。 检查/etc/nsswitch.conf是否有DNS解析配置。 grep hosts /etc/nsswitch.conf 回显信息如下所示,hosts行中未配置DNS选项,导致解析域名时不会读取/etc/resolv.conf,导致域名解析失败。 #hosts: db files nisplus nis dnshosts: files myhostname 打开/etc/nsswitch.conf找到hosts行添加DNS解析。 #hosts: db files nisplus nis dnshosts: files dns myhostname hosts项的值代表按优先级顺序列出服务,这些服务用于查找域名的IP地址。 “file”表示使用/etc/hosts文件,“ dns”表示使用域名服务。如果“file”位于“ dns”之前,则意味着系统将首先尝试在/etc/hosts中查找域名,然后才通过DNS查找(这是默认配置)。如果未配置dns则不会使用DNS查找。 场景三:/lib64/libnss_dns.so.2库文件丢失导致无法解析域名。 /lib64/libnss_dns.so.2库文件由glibc包产生,可以通过校验glibc查看包是否被修改。 rpm -V glibc 在正常的Linux系统执行 rpm -qf /lib64/libnss_dns.so.2生成库文件。 回显信息如下所示,说明/lib64/libnss_dns.so.2文件缺失。 missing /lib64/libnss_dns.so.2 执行以下命令,重新建立软链接。 在正常的云服务器上执行ls -l /lib64/libnss_dns.so.2可知/lib64/libnss_dns.so.2的源文件为/usr/lib64/libnss_dns-2.17.so。 ln -s /usr/lib64/libnss_dns-2.17.so /usr/lib64/libnss_dns.so.2
  • 处理方法 用chattr命令将i权限撤销,然后再修改密码。 如果文件属性为"i",执行以下命令。 chattr -i /etc/passwd /etc/shadow 如果文件属性为"a",执行以下命令。 chattr -a /etc/passwd /etc/shadow (可选)如果对修改过属性的文件有安全要求需要设置相应的属性,请重新设置相应的属性。 如果设置文件属性为"i",执行以下命令。 chattr +i /etc/passwd /etc/shadow 如果设置文件属性为"a",执行以下命令。 chattr +a /etc/passwd /etc/shadow 查看修改后的文件属性,执行以下命令。 lsattr /etc/passwd /etc/shadow
  • 根因分析 出现该问题通常有三个原因: /etc/resolv.conf未配置DNS地址或者DNS地址错误导致。 /etc/nsswitch.conf文件删除DNS解析记录导致。 /lib64/libnss_dns.so.2库文件丢失导致无法解析域名。 执行以下命令,查看解析域名打开的所有文件。 strace -e trace=open ping www.baidu.com -c 1 该结果中出现的所有文件都会影响域名解析。
  • 操作步骤 关闭原弹性云服务器,卸载其系统盘,并将系统盘挂载到临时弹性云服务器。 原弹性云服务器关机,进入详情页,并选择“云硬盘”页签。 原弹性云服务器关机时,请勿执行强制关机操作,否则可能引起重置密码操作失败。 单击系统盘所在行的“卸载”,卸载该系统盘。 展开临时弹性云服务器的详情页,并选择“云硬盘”页签。 单击“挂载磁盘”,在“挂载磁盘”对话框中,选择1.b中卸载的系统盘,将其挂载到临时弹性云服务器上。 远程登录临时弹性云服务器,并重置密码。 在临时弹性云服务器的“操作”列下,单击“远程登录”。 执行以下命令,查看原弹性云服务器上卸载的系统盘在临时弹性云服务器上的目录。 fdisk -l 图1 查看系统盘所在的目录 创建临时目录并挂载。 mkdir /aaz mount /dev/vdb1 /aaz 切换至挂载目录。 chroot /aaz 图2 切换至挂载目录 执行以下命令,根据系统提示输入新设置的密码。 passwd 图3 设置新密码 系统显示如下回显信息时,说明密码设置成功。 all authentication tokens updated successfully. 关闭临时弹性云服务器,卸载原弹性云服务器的系统盘,并将其重新挂载回原弹性云服务器后执行重启操作。 临时弹性云服务器关机,并进入详情页,选择“云硬盘”页签。 单击“卸载”,卸载1中临时挂载的数据盘。 展开原Linux弹性云服务器的详情页,选择“云硬盘”页签。 单击“挂载磁盘”,在“挂载磁盘”对话框中,选择3.b中卸载的数据盘,并设置挂载点为“/dev/sda”。 重启原弹性云服务器。
  • 附录 常见操作系统的默认网络服务配置,建议不修改,直接采用默认值。 表1 常见操作系统的默认网络服务配置 操作系统 网络服务 是否内置DHCP功能 CentOS 6 Network 否,有单独的dhclient进程 CentOS 7 NetworkManager 否,有单独的dhclient进程 CentOS 8 NetworkManager 是 Ubuntu 16.04 NetworkManager 否,有单独的dhclient进程 Ubuntu 18.04 NetworkManager 否,有单独的dhclient进程 Ubuntu 20.04 NetworkManager 是 Ubuntu 22.04 NetworkManager 是
  • 处理方法 登录弹性云服务器。 执行以下命令,编辑hosts文件。 vi /etc/hosts 按“i”,进入编辑模式。 在hosts文件最后添加一行内容,写入IP地址和主机名。 私有IP地址 主机名 示例: 假设弹性云服务器的主机名为“hostname”,私有IP地址为“192.168.0.1”,则需添加的语句为: 192.168.0.1 hostname 按“Esc”退出编辑模式。 执行以下命令,保存并退出。 :wq 针对镜像为Ubuntu、Debian的弹性云服务器,如果需要更新主机名,需将/etc/cloud/cloud.cfg中的manage_etc_hosts参数设置为false,同时将新设置的主机名更新至/etc/hosts中。编辑/etc/hosts文件时,请勿删除127.0.0.1所在行语句,否则会出现非root用户切换root超时问题。
  • 处理方法 在控制台重启主机,进入单用户模式。 进入单用户模式的详细操作请参考Linux云服务器如何进入单用户模式重置root密码 执行以下命令检查/etc/passwd文件 。 cat /etc/passwd 确认passwd文件已被破坏,执行以下命令使用系统初始的备份passwd-文件替换损坏的passwd文件 。 cp /etc/passwd- /etc/passwd 该操作会造成自行添加的用户丢失,如果为应用运行的用户会导致应用启动失败,待修复后请自行添加用户。 执行以下命令退出当前根目录至initramfs的根目录。 exit 重启云服务器。 (可选)待系统启动,添加丢失的用户,例如执行以下命令添加Nginx运行用户nobody并指定该用户shell为/sbin/nologin(请根据场景添加用户,需要登录系统的用户需要指定shell为/bin/bash)。 useradd nobody -s /sbin/nologin
  • 可能原因 E CS 实例的网络配置为DHCP(Dynamic Host Configuration Protocol,动态主机设置协议)方式。 以CentOS 7的ECS为例,如果网络配置为DHCP方式,当ECS实例启动时,Linux系统的NetworkManager服务会启动dhclient进程,dhclient进程会向DHCP服务器请求分配IP地址,并获得IP地址租约到期时间。 正常情况下,dhclient进程会定期向DHCP服务器更新租约到期时间,以确保实例IP地址的可用性,如下图: 图2 正常情况 当用户误操作停止了NetworkManager服务,并清理了dhclient进程时,会导致ECS实例无法自动更新IP地址的续租到期时间。当租约到期后,ECS实例的IP地址会被释放,导致网络不通。
  • 解决方案 远程登录ECS实例。 执行以下命令,重启NetworkManager服务,并设置为开启自启动。 systemctl restart NetworkManager systemctl enable NetworkManager 执行以下命令,查看NetworkManager服务状态。 systemctl status NetworkManager 图3 查看NetworkManager服务状态 执行以下命令,查看网络状态。 ip ad 图4 查看网络状态 若出现如图4所示结果,表示ECS实例的网络恢复正常。
  • 问题现象 Linux操作系统云服务器根目录空间占用率过高。例如,以图1为例,根目录空间占用率为96%。 图1 根目录空间占用率过高 查询当前系统存在一个约42G大小的文件access_log,这个文件是apache产生的访问日志文件,从日志大小判断是很久没有清理的apache日志文件了。 执行以下命令删除access_log。 rm /tmp/access_log 执行以下命令查看文件系统使用率。 df -h 删除该文件后使用df查看文件系统使用率仍是96%。
  • 操作场景 本节操作适用于Linux操作系统云服务器/etc/passwd文件损坏导致云服务器无法登录的问题。 本节操作为紧急恢复系统方法,需要在单用户模式下会将系统备份初始备份/etc/passwd-文件替换已损坏的/etc/passwd文件,该操作会造成自行添加的用户丢失(包括应用运行的用户,可以参考/etc/shadow文件添加其他账号)。 本节操作涉及重启云服务器操作,重启云服务器会造成业务中断,请谨慎操作。
  • 根因分析 通常不会出现删除文件后空间不释放的情况,特殊情况是文件进程锁定,或有进程一直在向这个文件写数据。 为了分析根因,首先需要了解Linux文件的存储机制和存储结构。 一个文件在文件系统中存放分为两个部分: 指针部分:指针位于文件系统的meta-data中,在将数据删除后,这个指针就从meta-data中清除了。 数据部分:而数据部分存储在磁盘中。 将数据对应的指针从meta-data中清除后,文件数据部分占用的空间就可以被覆盖并写入新的内容。出现删除access_log文件后,空间还没有释放的原因,是因为httpd进程还在一直向这个文件写入内容,导致删除了access_log文件后,进程锁定,文件对应的指针部分并未从meta-data中清除,由于指针并未删除,系统内核就默认文件并未被删除,因此查询文件系统使用率时,显示空间并未释放。
  • 问题描述 Linux操作系统的ECS实例内存充足,但是在执行命令或启动服务时,出现错误提示“Cannot allocate memory”。 命令及执行结果如下: root@localhost:~# free -m total used free shared buffers/cached availableMem: 3890 125 3179 2 504 3463Swap: 0 0 0root@localhost:~# uname -a-bash: fork: Cannot allocate memory
  • fs.inotify.max_user_watches值耗尽 Linux操作系统云服务器提示空间不足:No space left on device 解决方案: 执行以下命令,编辑/etc/sysctl.conf文件。 vi /etc/sysctl.conf 补充如下信息: fs.inotify.max_user_watches = 524288 执行以下命令使修改生效。 sysctl -p Inotify用于监视文件系统事件, 默认情况下可监视的每个真实用户ID创建的文件数量 上限为8192,可以通过执行以下命令获取当前的inotify文件监视限制。 cat /proc/sys/fs/inotify/max_user_watches 如果此限制不足以监视所有文件,必须增加限制以使正常工作。
  • 已删除文件因句柄被占用未释放导致相应空间未释放 登录服务器,执行df -h查看磁盘block空间使用率为100%。 执行df -i查看磁盘inode空间使用率较低,如下截图所示,本例inode空间使用率为1%。 执行du -sh查看文件占用空间和磁盘可用空间相差较大。 解决方案: 执行以下命令,查找当前分区是否存在未被清除句柄的文件。 lsof |grep delete 执行以下命令,结束进程释放磁盘空间。 kill -9 进程编号
  • 操作步骤 使用密钥登录Linux云服务器,设置root密码。 sudo passwd root 若密钥文件丢失或损坏,请参考Linux云服务器如何进入单用户模式重置root密码,重置root密码。 使用root身份编辑云服务器的ssh登录方式。 su root vi /etc/ssh/sshd_config 修改如下配置项: 把PasswordAuthentication no 改为 PasswordAuthentication yes 或去掉PasswordAuthentication yes 前面的#注释掉。 把PermitRootLogin no 改为 PermitRootLogin yes 或去掉PermitRootLogin yes 前面的#注释掉。 重启sshd使修改生效。 service sshd restart 重启云服务器就可以使用root用户和新设置的密码登录了。 防止非授权用户使用原来的密钥文件访问Linux云服务器,请将/root/.ssh/authorized_keys文件删除或清空authorized_keys文件内容。
  • 问题描述 Linux操作系统的ECS实例发生异常重启事件,错误提示如下: Kernel panic - not syncing: NMI: Not continuing 同时,内核日志打印如下信息: [645683.754132] Uhhuh. NMI received for unknown reason 20 on CPU 1.[645683.754133] Do you have a strange power saving mode enabled?[645683.754133] Kernel panic - not syncing: NMI: Not continuing
  • 可能原因 如果Linux操作系统ECS实例的内核参数kernel.unknown_nmi_panic配置为1,则ECS会在系统收到NMI中断时主动通过panic系统重启。 通常情况下,将内核参数kernel.unknown_nmi_panic配置为1的目的是为了在发生NMI中断时,主动触发panic,从而进行系统定位。由于个别型号的CPU会在正常业务流程中产生NMI中断,在这种情况下如果将内核参数kernel.unknown_nmi_panic配置为1,将会导致ECS产生非预期的异常重启事件。
  • 可能原因 Linux操作系统云服务器中限制资源使用的配置文件是/etc/security/limits.conf和/etc/security/limits.d/目录,/etc/security/limits.d/目录中的配置优先级高于/etc/security/limits.conf的配置。 如果修改/etc/security/limits.conf文件,重启后不生效,则可能是由于limits.conf中的修改被/etc/security/limits.d/目录中配置项的值所覆盖。
  • 处理方法 在处理前,建议先禁用systemd-resolved服务。 方法一:手动修改/etc/resolv.conf文件。 以root用户登录ECS。 关闭并禁用systemd-resolved服务。 systemctl stop systemd-resolved systemctl disable systemd-resolved 默认的/etc/resolv.conf是软链接,删除重建为普通文件。 rm -rf /etc/resolv.conf 编辑/etc/resolv.conf,增加相关DNS配置。 vim /etc/resolv.conf 通过添加自定义的nameserver参数增加DNS配置,如下所示: nameserver 100.125.1.250nameserver 100.125.129.250 将/etc/resolv.conf配置文件加锁,防止被dhcp或者其他服务更改。 chattr +i /etc/resolv.conf 方法二:使用NetworkManager根据dhcp获取的DNS信息(vpc子网中配置的DNS信息)维护/etc/resolv.conf文件。 关闭并禁用systemd-resolved服务。 systemctl stop systemd-resolved systemctl disable systemd-resolved 编辑NetworkManager配置文件,增加dns=default配置。 vim /etc/NetworkManager/NetworkManager.conf [main]plugins=ifupdown,keyfiledns=default[ifupdown]managed=true[device]wifi.scan-rand-mac-address=no 默认的/etc/resolv.conf是软链接,删除重建为普通文件。 rm -rf /etc/resolv.conf 重启NetworkManager,刷新/etc/resolv.conf文件。 systemctl restart NetworkManager 检查/etc/resolv.conf中的dns相关配置。 如果与云服务器所属子网下的DNS配置一致,代表修改成功。 您可以登录控制台,在弹性云服务器详情页,单击网卡区域的主网卡名称,即可跳转至子网控制台,切换至“基本信息”页签,即可查看到“DNS服务器地址”信息。 如果不一致,请提交工单联系技术支持处理。
  • 解决方案 远程登录ECS实例。 执行以下命令,查看ECS实例内核参数kernel.unknown_nmi_panic的值。 sysctl -n kernel.unknown_nmi_panic 如果内核参数的取值为1,说明是由于内核参数配置错误引起的ECS实例异常重启。 图1 排查结果 执行以下命令,查看是否存在内核参数kernel.unknown_nmi_panic相关配置。 vim /etc/sysctl.conf 在/etc/sysctl.conf文件中,排查是否存在kernel.unknown_nmi_panic的相关配置。 如果存在kernel.unknown_nmi_panic=1的配置,将该配置改为kernel.unknown_nmi_panic=0 如果不存在kernel.unknown_nmi_panic=1的配置,增加kernel.unknown_nmi_panic=0 图2 查看/etc/sysctl.conf文件 按“Esc”,输入:wq保存并退出。 执行以下命令,使配置生效。 sysctl –p 图3 配置生效 该修复方案热生效,无需重启ECS。
  • 处理方法 登录管理控制台。 通过ECS的主机监控功能的“内存使用率”指标,查看云服务器内存使用情况确认云服务器内存情况,详细操作,请参见查看监控指标 。 如果内存不足,建议扩容内存或者优化内存的使用,扩容内存可参考变更规格通用操作。 否则,执行步骤3。 以root用户登录云服务器,执行以下命令,排查message和dmesg日志。 dmesg -T cat /var/log/messages 如果出现如图1所示的cgroup相关报错打印,执行步骤8。 否则,执行步骤4。 图1 日志报错 执行以下命令,查看当前系统线程总数。 ps -efL | wc -l 执行以下命令,将得到的两个值与步骤4查到的当前系统线程总数进行对比。 sysctl -a | grep pid_max sysctl -a | grep threads-max 如果当前系统线程总数接近这两个值其中一个,那么就需要对这pid_max、threads-max这两个参数进行调优。调优步骤请参考调优pid_max、threads-max参数。 否则,执行步骤6。 执行以下命令,确定报错进程的pid。 ps -ef | grep 报错进程名 执行以下命令,根据得到的pid检查该进程的limits配置: cat /proc/pid/limits 图2 确定进程limits配置 查看Max processes行,如果当前用户创建的所有线程数接近该值,那么需要对limits参数进行调优,调优步骤请参考调优limits参数。 否则,执行步骤8。 执行以下命令,根据日志的cgroup报错可以得到pid_max、pids.current参数值。 cat /sys/fs/cgroup/pids/拼接日志中报错目录/pids.max cat /sys/fs/cgroup/pids/拼接日志中报错目录/pids.current 图3 cgroup目录 示例如下: 执行以下命令,根据进程的pid查找对应的cgroup目录。 cat /proc/pid/cgroup 图4 根据pid查找对应的cgroup目录 返回结果中的pids行为“/user.slice/user-0.slice/session-5.scope/”,与/sys/fs/cgroup/pids/拼接,可得进程对应的cgroup目录为“/sys/fs/cgroup/pids/user.slice/user-0.slice/session-5.scope/”。 执行以下命令,根据得到的cgroup目录获取pid_max、pids.current参数值。 cat /sys/fs/cgroup/pids/user.slice/user-0.slice/session-5.scope/pids.max cat /sys/fs/cgroup/pids/user.slice/user-0.slice/session-5.scope/pids.current 如果pids.current接近pids.max,那么需要对cgroup参数进行调优,调优步骤请参考调优cgroup参数。 否则,请提交工单联系技术支持处理。
  • 根因分析 服务端sshd服务开启UseDNS选项状态下,当客户端试图使用SSH连接服务器时,服务器端先根据客户端的IP地址进行DNS PTR反向查询出客户端的主机名,然后根据查询出的客户端主机名进行DNS正向A记录查询,验证与其原始IP地址是否一致,这是防止客户端欺骗的一种措施,但一般我们的是动态IP不会有PTR记录,建议关闭该选项。 执行如下命令确认是否开启了UseDNS选项。 grep UseDNS /etc/ssh/sshd_config 如果该选项值为“yes”或者为注释行则说明已开启该选项。建议参考本节操作修改UseDNS。
共100000条
提示

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