如何三招帮你排查Linux中的硬件问题
下列贴士帮助你更快速更轻松地为Linux中的硬件排查故障。许多不同的因素可能导致Linux硬件出现问题;在你开始尝试诊断之前,了解最常见的问题以及最有可能找到原因的环节是明智之举。
Linux服务器在许多不同类型的基础架构中运行关键任务型业务应用程序,包括物理机、虚拟机、私有云、公共云和混合云。对于Linux系统管理员来说,了解如何管理Linux硬件基础架构很重要,包括与网络和存储有关的软件定义功能、Linux容器和Linux服务器上的多个工具。
排查并解决Linux上与硬件有关的问题可能需要一些时间。连经验丰富的系统管理员有时也要花几小时来解决莫名其妙的软硬件问题。
下列贴士帮助你更快速更轻松地为Linux中的硬件排查故障。许多不同的因素可能导致Linux硬件出现问题;在你开始尝试诊断之前,了解最常见的问题以及最有可能找到原因的环节是明智之举。
故障排查的第一步通常是显示Linux服务器上安装的硬件列表。你可以使用ls命令获取硬件的详细信息,比如lspci、lsblk、lscpu和lsscsi。比如说,这是lsblk命令的输出结果:
# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda 202:0 0 50G 0 disk
├─xvda1 202:1 0 1M 0 part
└─xvda2 202:2 0 50G 0 part /
xvdb 202:16 0 20G 0 disk
└─xvdb1 202:17 0 20G 0 part
如果ls命令没有显示任何错误,使用初始化进程(比如systemd)查看Linux服务器的运行状况。systemd是启动用户空间、控制多个系统进程的最流行的初始化进程。比如说,这是systemctl status命令的输出结果:
# systemctl status
● bastion.f347.internal
State: running
Jobs: 0 queued
Failed: 0 units
Since: Wed 2018-11-28 01:29:05 UTC; 2 days ago
CGroup: /
├─1 /usr/lib/systemd/systemd --switched-root --system --deserialize 21
├─kubepods.slice
│ ├─kubepods-pod3881728a_f2af_11e8_af77_06af52f87498.slice
│ │ ├─docker-88b27385f4bae77bba834fbd60a61d19026bae13d18eb147783ae27819c34967.scope
│ │ │ └─23860 /opt/bridge/bin/bridge --public-dir=/opt/bridge/static --config=/var/console-config/console-c
│ │ └─docker-a4433f0d523c7e5bc772ee4db1861e4fa56c4e63a2d48f6bc831458c2ce9fd2d.scope
│ │ └─23639 /usr/bin/pod
dmesg让你可以搞清楚内核的最新信息中的错误和警示内容。比如说,这是dmesg | more命令的输出结果:
# dmesg | more
....
[ 1539.027419] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
[ 1539.042726] IPv6: ADDRCONF(NETDEV_UP): veth61f37018: link is not ready
[ 1539.048706] IPv6: ADDRCONF(NETDEV_CHANGE): veth61f37018: link becomes ready
[ 1539.055034] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
[ 1539.098550] device veth61f37018 entered promiscuous mode
[ 1541.450207] device veth61f37018 left promiscuous mode
[ 1542.493266] SELinux: mount invalid. Same superblock, different security settings for (dev mqueue, type mqueue)
[ 9965.292788] SELinux: mount invalid. Same superblock, different security settings for (dev mqueue, type mqueue)
[ 9965.449401] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
[ 9965.462738] IPv6: ADDRCONF(NETDEV_UP): vetheacc333c: link is not ready
[ 9965.468942] IPv6: ADDRCONF(NETDEV_CHANGE): vetheacc333c: link becomes ready
....
你还可以查看/var/log/messages文件中的所有Linux系统日志,在这里找到与特定问题有关的错误。如果你对硬件进行改动,比如挂载额外磁盘或添加以太网网卡,有必要通过tail命令实时密切关注信息。比如说,这是tail -f /var/log/messages命令的输出结果:
# tail -f /var/log/messages
Dec 1 13:20:33 bastion dnsmasq[30201]: using nameserver 127.0.0.1#53 for domain in-addr.arpa
Dec 1 13:20:33 bastion dnsmasq[30201]: using nameserver 127.0.0.1#53 for domain cluster.local
Dec 1 13:21:03 bastion dnsmasq[30201]: setting upstream servers from DBus
Dec 1 13:21:03 bastion dnsmasq[30201]: using nameserver 192.199.0.2#53
Dec 1 13:21:03 bastion dnsmasq[30201]: using nameserver 127.0.0.1#53 for domain in-addr.arpa
Dec 1 13:21:03 bastion dnsmasq[30201]: using nameserver 127.0.0.1#53 for domain cluster.local
Dec 1 13:21:33 bastion dnsmasq[30201]: setting upstream servers from DBus
Dec 1 13:21:33 bastion dnsmasq[30201]: using nameserver 192.199.0.2#53
Dec 1 13:21:33 bastion dnsmasq[30201]: using nameserver 127.0.0.1#53 for domain in-addr.arpa
Dec 1 13:21:33 bastion dnsmasq[30201]: using nameserver 127.0.0.1#53 for domain cluster.local
你可能在复杂的网络环境中有成千上万个云原生应用程序为业务服务提供服务;这些可能包括虚拟化、多云和混合云。这意味着你应该分析网络连接是否正常运行,这是故障排查的一部分。分析Linux服务器中网络功能的实用命令包括ip addr、traceroute、nslookup、dig和ping等。比如说,这是ip addr show命令的输出结果:
# ip addr show
1:
lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2:
eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP group default qlen 1000
link/ether 06:af:52:f8:74:98 brd ff:ff:ff:ff:ff:ff
inet 192.199.0.169/24 brd 192.199.0.255 scope global noprefixroute dynamic eth0
valid_lft 3096sec preferred_lft 3096sec
inet6 fe80::4af:52ff:fef8:7498/64 scope link
valid_lft forever preferred_lft forever
3:
docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
link/ether 02:42:67:fb:1a:a2 brd ff:ff:ff:ff:ff:ff
inet 172.17.0.1/16 scope global docker0
valid_lft forever preferred_lft forever
inet6 fe80::42:67ff:fefb:1aa2/64 scope link
valid_lft forever preferred_lft forever
....
Linux硬件故障排查需要具备相当扎实的知识,包括如何使用功能强大的命令行工具、解读系统日志。你还应该知道如何诊断内核空间,可以在内核空间找到许多硬件问题的根本原因。请记住,Linux中的硬件问题可能由许多不同的方面引起,包括设备、模块、驱动程序、BIOS、网络,甚至是旧硬件故障。
如何三招帮你排查Linux中的硬件问题的更多相关文章
- Git提交错了不用慌,这三招帮你修改记录
大家好,今天我们来聊聊git当中一个很重要的功能--历史记录的修改. 有的时候我们会突然发现某个地方需要修改,最常见的某个不应该被提交的文件被提交了进来.我们希望它不只是在后序的版本当中不再出现,而是 ...
- 在linux中查询硬件相关信息
1.查询cpu的相关 a.查询CPU的统计信息 使用命令:lscpu 得到的结果如下: Architecture: x86_64 CPU op-mode(s): -bit, -bit Byte Ord ...
- linux中查看硬件温度的命令
用到的命令是: sensors 这个命令来自一个叫 lm_sensors 的包. 执行 sensors-detect 可以以询问的方式做一些配置(可以选择检测哪些硬件的温度).
- Linux中的简单命令
history:打印你输过的命令 1.用户在shell中输入的命令会自动保存到内存缓冲区 2.在退出shell的时候,内存中的数据会刷新到磁盘文件:~/.bash_history ...
- Linux就这个范儿 第15章 七种武器 linux 同步IO: sync、fsync与fdatasync Linux中的内存大页面huge page/large page David Cutler Linux读写内存数据的三种方式
Linux就这个范儿 第15章 七种武器 linux 同步IO: sync.fsync与fdatasync Linux中的内存大页面huge page/large page David Cut ...
- linux中Java项目占用cpu、内存过高时的排查经历
一.使用top命令查看占用高资源的java项目的进程ID(pid): top 二.查看该进程中的线程所占用资源的情况:top -Hp pid 三.查看该线程对应的16进制:printf %x 1112 ...
- Linux系统中的硬件问题如何排查?(5)
Linux系统中的硬件问题如何排查?(5) 2013-03-27 10:32 核子可乐译 51CTO.com 字号:T | T 在Linux系统中,对于硬件故障问题的排查可能是计算机管理领域最棘手的工 ...
- <实训|第九天>掌握linux中普通的权限控制和三种特殊的权限(sst),做合格的运维工程师
linux中,权限的学习是必不可少的,不论是作为一名运维工程师或者是单一的管理者,学习好linux中的权限控制,你就可以保护好自己的隐私同时规划好你所管理的一切. 权限的学习是很多的,不要认为自己已经 ...
- Linux中创建Daemon进程的三种方法
什么是daemon进程? Unix/Linux中的daemon进程类似于Windows中的后台服务进程,一直在后台运行运行,例如http服务进程nginx,ssh服务进程sshd等.注意,其英文拼写为 ...
随机推荐
- Homebrew安装卸载
安装homebrew ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/inst ...
- 使用 IntraWeb (21) - 基本控件之 TIWTabControl
TIWTabControl 包含的是 TIWTabPage; 设计时通过右键菜单 Add Page 添加(再给页面添加东西时一定要先选定页面); 下面例子是动态添加的. TIWTabControl 所 ...
- bitnami-redmine邮件告警配置
配置 bitnami-redmine的配置文件与单纯的redmine配置文件可能并不相同,在这里我们需要打开一下配置文件: /opt/bitnami/apps/redmine/htdocs/confi ...
- ASP.NET Web Pages 的冲突版本问题
随着VS版本和.NET MVC版本.EF的版本的不断更新,虽然很多功能随着版本的提升而更完善,但对于旧版本开发的软件就有点悲催了,或许很多开发者都遇到类似的问题! 最近有一个项目是用.NET MVC3 ...
- 委托、Lambda表达式、事件系列02,什么时候该用委托
假设要找出整型集合中小于5的数. static void Main(string[] args) { IEnumerable<int> source = new List<int&g ...
- 查询并发程序是否启动跟踪功能-trc文件对数据库性能有影响
/* Formatted on 2018/3/14 23:38:51 (QP5 v5.256.13226.35538) */ SELECT icon_name , row_id , user_conc ...
- maven + sonar, gradle + sonar
sonar installation and configuration Download sonar http://downloads.sonarsource.com/sonarqube/ Deco ...
- 详细解读Volley(五)—— 通过源码来分析业务流程
一.初始化请求队列并运行 我们用Volley时,最先开始的就是初始化请求队列,一种常见的写法如下: public class MyApplication extends Application { p ...
- 用开源项目RoundedImageView来实现 圆形 / 圆角 / 椭圆的图片
该开源项目的地址:https://github.com/vinc3m1/RoundedImageView 我自己分流下载文件的:http://download.csdn.net/detail/shar ...
- 《MySQL Workbench数据建模与开发》
<MySQL Workbench数据建模与开发> 基本信息 原书名:MySQL Workbench:Data Modeling & Development 原出版社: McGraw ...