# ECS从入门到精通(错误排查)

# Linux启动与登录问题

Linux 启动与登录问题是 ECS 的高频问题,而往往处理不及时会直接影响到 用户业务的正常可持续运行,因此也变成了我们处理问题优先级的重中之重。在云环境上影响 ECS 启动与登录的因素非常多,镜像、管控、虚拟化、底层 硬件、系统与文件异常等等,本文仅从系统与文件本身角度,在大量处理经验 的基础上,归纳总结了一些可能会引起系统启动与登录问题的排查点,并给出 几个比较常见的典型案例来具体展示和说明。

## 系统启动异常

### 1.部分 CentOS 系统启动黑屏,无异常报错的场景,可以 fsck 一下系统盘。

### 2.根分区空间满,以及 inode 数量耗尽。

### 3.升级内核或者从老的共享实例迁移到独享规格导致的启动异常。

#### 3.1 手动注入驱动 (mkinitrd virtio 相关驱动 )。

#### 3.2 修改 grub 的启动顺序,优先尝试使用老内核启动。

#### 3.3 /boot 目录下面内核的关联文件是否全(下面仅为 demo,不同系统内核版

本文件不一致,部分内核版本 boot 下的 i386 目录也是有用的)。

#### 3.4 /boot/grub/device.map 里面的 hda 改成 vda。

### 4.fstab/grub 中的 uuid 不对,可以直接修改为 /dev/vda1 这种形式尝试。

​ 数据盘分区异常加载起不来的场景,可以去注释 fstab 所有的行,添加类似下面

的启动项尝试,也适用于系统盘快照创建云盘挂载后,uuid 一致导致的启动异

常,改成非 UUID 的挂载即可。

### 5.根目录权限 777(部分目录 777)也会导致启动异常,或者 ssh 登陆异常。

可尝试使用以下链接修复:

Linux误操作777之后的恢复方法-阿里云开发者社区

### 6.常见的关键目录缺失,有的是软链,也可以看看对应目录下面的文件数量(文件 数量要跟同内核版本或者相差不大的版本对比),简单判断。

如果参数设置不当,是会导致启动异常的,如 /etc/sysctl.conf 以及检查 rc.local

的配置,profile 的检查。

### 8. CentOS 的 selinux 需要关闭。

## root 登录异常

1. /etc/passwd /etc/shadow ( 用户名 root polikt dbus 等关键用户存在与否,文件为空,格式(dos2unix)。

2. /etc/pam.d 目录下是否有为空的文件及参数设置是否正常,如常见的 sys-tem-auth passwd。

3. /etc/pam.d 下面所有文件里面涉及的 so 文件,看看文件是否存在,是否为空 /usr/lib64/security。

4. 查 /etc /lib64 /bin /sbin /usr/bin /usr/sbin 等目录有没有 size 为 0 的文件。

5. /etc/profile /etc/profile.d( 打 印 列 表 ) /etc/bashrc /root/.bash_profile /root/. bashrc 等涉及登陆环境设的文件是否异常。

6. 注意内核版本,是否存在新老内核,多更换几个内核试下。

7. 系统日志也是一个比较重要的检查项(后面会介绍无法登陆怎么检查)。

8. Ubuntu 12.04 登陆异常 在 /etc/login.defs 里面配置了错误的 ERASECHAR 导致,恢复默认 0177 即可。

9. 输入 root 后直接 login 失败三连,日志如下。

找个同内核版本的机器对比发现没有 /etc/pam.d/login。

​ rpm 包校验一下,确认 login 文件没了,手动创建一个,内容拷贝过来,好了。

10. /etc/ssh/sshd_config 相关参数如 LoginGraceTime/Allowusers/Permit-RootLogin。

11. 问题不好确认的时候,可以将 shadow 密码字段清空,看看登陆是否正常,可以判断是否到密码验证阶了。

​ 之前有过一篇关于 ssh 问题排查的文档,可参考:

​ 一个有意思的SSH登陆案例-阿里云开发者社区

### 系统登陆不进去了,不挂盘的情况下怎么操作?

上面的检查点很多是需要切换到另外的系统环境下去做检查,比如挂载 LiveCD 或者 chroot 切换;但对于使用 ECS 的用户来说,阿里云暂还未提供实例挂载 ISO 镜像的功能,那么如何进行上面的操作呢?可以借助阿里云新推出的卸载系统盘功能,可以 把系统盘卸载掉,作为数据盘挂载到一个新的机器,这样就可以执行上面的检查了。

详见:卸载或挂载系统盘_云盘_块存储_云服务器 ECS-阿里云

###场景覆盖:

Linux 系统常见问题诊断覆盖以下场景:

Linux 系统常见启动问题修复覆盖以下场景:

## grub.conf 文件内容被清空了怎么办

简介:/boot/grub/grub.conf 被清空,系统启动就进入 grub 状态(CentOS 6.8)。

1.find /boot/grub/stage1。

​ 显示为(hd0,0)。

2. 确认一下内核的具体版本

ls -l /boot 去看。

3. 手动设置 grub,具体步骤。

如果没有报错的话,即可成功启动,进入到系统内部后需要继续支持。

4. mount -e remount,rw / 重新挂载分区为读写。

5. service network restart。

如果提示 eth0 eth1 失败,ifconfig 看不到网卡的话

6. lsmod |grep net。

看下 virtio_net 这个驱动有没有,如果没有的话(网卡报错基本都不会有)。

7. insmod /lib/modules/2.6.32-696.3.2.el6.x86_64/kernel/drivers/net/virtio_net.ko。

8. 重启网络服务,嗨 ~ 网通了。

9. 登陆 ssh,找个同版本系统的 grub.conf拷贝一份过来,不然重启之后又进grub 了。

参考 系统诊断小技巧(8):如何修复grub损坏-阿里云开发者社区

## 巧妙利用 strace 查找丢失的文件

问题描述:客户反馈系统无法远程登陆,实际系统启动本身就有问题。

根据报错信息来看,是系统内读取 user 有问题,需要挂盘查看。

1.挂盘后 chroot 如下 ihave no name,这里本身就是有问题了,说明系统内缺少了什么文件导致异常。

2.strace 跟踪一下 chroot 的过程,看下丢失的文件。

3.查看对应文件的关系(测试机补图)。

4.确认系统上丢了最终的 libnss_files-2.12.so,尝试拷贝一个。

5.此时已经可以上网了,去拷贝一个同版本的文件试试吧。

## 小心 PAM 不让你登录

问题描述:

ssh 可以登陆,管理终端无法登陆 root,提示 login in...

先通过 ssh 方式登录系统,查看登录日志是否有异常。

似乎是 login 验证模块的问题进一步查看对应的配置文件 /etc/pam.d/login。

其中一行的作用为禁止本地登录,可以将其注释掉即可。

```

auth required pam_succeed_if.so user != root quiet

错误提示没了_ESC错误排查-系统启动篇相关推荐

  1. php 错误提示开启,php开启与关闭错误提示,php开启错误提示_PHP教程

    php开启与关闭错误提示,php开启错误提示 windows系统开关php错误提示 如果不具备修改php.ini的权限,可以将如下代码加入php文件中: 代码如下 复制代码 ini_set(" ...

  2. 一个简单的解决方法:word文档打不开,错误提示mso.dll模块错误。

    一个简单的解决方法:word文档打不开,错误提示mso.dll模块错误. 参考文章: (1)一个简单的解决方法:word文档打不开,错误提示mso.dll模块错误. (2)https://www.cn ...

  3. MFC工程 : view.h 包含错误, 提示 undeclared identifier 等错误

    比如已有:  testView.h testDoc.h resource.h  mynewfile.cpp 如果要在mynewfile.cpp中添加testView.h, 有时会提示 undeclar ...

  4. php 错误提示,php怎么显示错误

    php怎么显示错误? 调试PHP让浏览器提示错误的方法 一. php.ini中的display_errors的值改为On: 或者 php代码页顶部加上ini_set("display_err ...

  5. php 错误提示模板,php 关闭错误提示方法总结与性能分析

    一,关闭notice错误提示 1.在php.ini文件中改动 error_reporting 改为:error_reporting=E_ALL & ~E_NOTICE 2.如果你不能操作php ...

  6. php访问参数错误,提示“无法访问参数错误”的4种解决方法

    直接拔下usb设备而不是点击弹出.直接拔下usb设备会损坏甚至破坏扇区,是导致usb设备参数错误的原因之一.切记尽量使用"安全弹出usb"功能. usb接口问题.usb接口是电脑和 ...

  7. ajax php 错误提示,php – jQuery AJAX错误处理

    从ajax调用返回的错误是从未成功的页面加载返回结果.可能是您的php页面返回了一个有效页面,但结果不是您想要的.这是在成功回归的情况下处理的.希望以下代码snippit有助于说明-- $.ajax( ...

  8. idea html 错误提示,Idea 代码编辑错误不飘红提示

    洛谷P2055 [ZJOI2009]假期的宿舍 [二分图最大匹配] 题目描述 学校放假了 · · · · · · 有些同学回家了,而有些同学则有以前的好朋友来探访,那么住宿就是一个问题.比如 A 和 ...

  9. ad软件one pin错误是啥意思_AD19的错误提示大总结解释

    AD19的错误提示大总结解释 错误提示解释 Error Reporting 错误报告选项卡共有6类: Violations Associated with Buses 有关总线电气错误的各类型(共 1 ...

最新文章

  1. javascript-XMLHttpRequest
  2. ORC文件存储格式的深入探究
  3. Leetcode--450. 删除二叉搜索树中的节点
  4. Stream中toMap引发NullPointerException____Stream的执行流程
  5. Web Service学习总结
  6. 真有钱!科大讯飞年中分红:共派发现金红利2.2亿元
  7. hdu 1018 Big Number(n!求位数)
  8. C语言输入中10A20B,C语言实验报告第3章答案.doc
  9. jmeter之线程组间变量的传递二
  10. maven 阿里下载源 setting.xml
  11. Python绘制污染玫瑰图
  12. 室外3D建图定位(0)Loam-3D激光定位算法的一些思考
  13. IDEA上的文字转拼音名
  14. 面向对象的编程(上)_方法的重载(overload)练习
  15. Python中flatten用法
  16. valgrind使用整理
  17. “公正”与“公平”之辨
  18. BMY、KMP、BM、BMHS算法性能比较
  19. 《算法笔记》(胡凡)day1-C语言与C++入门
  20. 连接服务器显示615,D-Link DIR 615无线路由器设置

热门文章

  1. JAVA用最简单的方法来构建一个高可用的服务端,提升系统可用性
  2. mysql关于时间的面试题,mysql时间设置默认值MySQL常见面试题
  3. train_test_split 数据集划分,样本划分
  4. GloVe:另一种Word Embedding方法
  5. 华为公有云架构解决方案
  6. GPU编程和流式多处理器
  7. TVM vs TensorRT比较
  8. PyTorch中的MIT ADE20K数据集的语义分割
  9. ffmpeg architecture(上)
  10. 客快物流大数据项目(七):Docker总结