了解导致您的Linux硬件出现故障的原因,以便您可以快速恢复并运行它。Linux服务器在许多不同类型的基础架构上运行关键业务应用程序,包括物理机、虚拟化、私有云、公共云和混合云。Linux系统管理员了解如何管理Linux硬件基础设施(包括与网络、存储、Linux容器相关的软件定义功能)和Linux服务器上的各种工具非常重要。在Linux上排除和解决与硬件相关的问题可能需要一些时间。即使是经验丰富的系统管理员有时也会花费数小时来解决神秘的硬件和软件差异问题。以下提示应该可以更快更轻松地对Linux中的硬件进行故障排除。许多不同的事情都会导致Linux硬件出现问题。在开始诊断它们之前,了解最常见的问题以及最有可能发现它们的位置是明智的。快速诊断排除设备、模块和驱动程序故障的第一步通常是显示安装在Linux服务器上的硬件列表。您可以使用lspci、lsblk、lscpu和lsscsi等列表命令来获取有关硬件的详细信息。例如,这是lsblk命令的输出:#lsblkNAMEMAJ:MINRMSIZEROTYPEMOUNTPOINTxvda202:0050G0disk├─xvda1202:101M0part└─xvda2202:2050G0part/xvdb202:16020G0disk└─xvdb1202:17020G0part如果这些列出的命令没有显示任何错误,请使用诸如systemd之类的初始化系统来查看Linux服务器的工作方式。systemd是最流行的初始化系统,用于启动用户空间和控制多个系统进程。例如,这是systemctlstatus命令的输出:#systemctlstatusbastion.f347.internalState:runningJobs:0queuedFailed:0unitsSince:Wed2018-11-2801:29:05UTC;2daysagoCGroup:/├─1/usr/lib/systemd/systemd--switched-root--system--deserialize21├─kubepods.slice│├─kubepods-pod3881728a_f2af_11e8_af77_06af52f87498.slice││├─docker-88b27385f4bae77bba834fbd60a61d19026bae13d18eb147783ae27819c34967.范围││└─23860/opt/bridge/bin/bridge--public-dir=/opt/bridge/static--config=/var/console-config/console-c││└─docker-a4433f0d523c7e5bc772ee4db1861e4fa56c4e63a2d48f6bc22314└─3/usr/bin/pod....深入查看各种日志并使用dmesg查找最新内核消息中的错误和警告。例如,这是dmesg|的输出更多命令:#dmesg|更多....[1539.027419]IPv6:ADDRCONF(NETDEV_UP):eth0:链接未就绪[1539.042726]IPv6:ADDRCONF(NETDEV_UP):veth61f37018:链接未就绪[1539.048706]IPv6:ADDRCONF(NETDEV_CHANGE):veth61f37018:链接准备就绪[1539.055034]IPv6:ADDRCONF(NETDEV_CHANGE):eth0:链接准备就绪[1539.098550]设备veth61f37018进入混杂模式[1541.450207]设备veth61f37018离开混杂模式[1542.493266]SELinux:安装无效。相同的超级块,不同的安全设置(devmqueue,类型mqueue)[9965.292788]SELinux:挂载无效。相同的超级块,不同的安全设置(devmqueue,typemqueue)[9965.449401DE]CONNECTIPvF6)(NET:eth0:链接未准备好[9965.462738]IPv6:ADDRCONF(NETDEV_UP):vetheacc333c:链接未准备好[9965.468942]IPv6:ADDRCONF(NETDEV_CHANGE):vetheacc333c:linkbecomesready....您也可以登录/var/log/messages文件,您可以在其中找到与特定问题相关的错误。当您对硬件进行修改(例如安装额外的磁盘或添加以太网NIC)时,值得通过tail命令实时监控消息。例如,这是tail-f/var/log/messages命令的输出:#tail-f/var/log/messagesDec113:20:33bastiondnsmasq[30201]:usingnameserver127.0.0.1#53fordomainin-addr.arpaDec113:20:33bastiondnsmasq[30201]:对域cluster.localDec113:21:03bastiondnsmasq[30201]使用名称服务器127.0.0.1#53:从DBusDec113设置上游服务器:21:03堡垒dnsmasq[30201]:使用名称服务器192.199.0.2#53Dec113:21:03堡垒dnsmasq[30201]:使用名称服务器127.0.0.1#53作为域in-addr.arpaDec113:21:03堡垒dnsmasq[30201]:将名称服务器127.0.0.1#53用于域cluster.localDec113:21:33bastiondnsmasq[30201]:从DBusDec113:21:33bastiondnsmasq[30201]设置上游服务器:使用名称服务器192.199.0.1#53Dec13:21:33bastiondnsmasq[30201]:使用名称服务器127.0.0.1#53用于域in-addr.arpaDec113:21:33bastiondnsmasq[30201]:使用名称服务器127.0.0.1#53用于域集群。本地分析网络功能你可能有上千个云在复杂的网络环境中服务于业务的本地应用程序,其中可能包括虚拟化、多云和混合云意味着,作为故障排除的一部分,您应该分析网络连接是否正常工作。用于确定Linux服务器中网络功能的有用命令包括:??ipaddr、traceroute、nslookup、dig、ping等。例如,这是ipaddrshow命令的输出:#ipaddrshow1:lo:
