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服务器)看看你的Linuxsystemd服务器是如何工作的。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.scope│││└─23860/opt/bridge/bin/bridge--public-dir=/opt/bridge/static--config=/var/console-config/console-c││└─docker-a4433f0d523c7e5bc772ee4db1861e4fa56c4e63a2d48f6bc831458c2ce9fd2d.scope││└─23639/usrinto./eachpodlog使用dmesg在最新的内核消息中查找错误和警告。例如,这是dmesg|的输出更多命令:#dmesg|更多....[1539.027419]IPv6:ADDRCONF(NETDEV_UP):eth0:linkisnotready[1539.042726]IPv6:ADDRCONF(NETDEV_UP):veth61f37018:linkisnotready[1539.048706]IPv6:ADDRCONF(NETDEV_CHANGE7):veth1f61flink3[1539.055034]IPv6:ADDRCONF(NETDEV_CHANGE):eth0:linkbecomesready[1539.098550]deviceveth61f37018enteredpromiscuousmode[1541.450207]deviceveth61f37018leftpromiscuousmode[1542.493266]SELinux:mountinvalid.Samesuperblock,differentsecuritysettingsfor(devmqueue,typemqueue)[9965.292788]SELinux:mountinvalid.Samesuperblock,differentsecuritysettingsfor(devmqueue,typemqueue)[9965.449401]IPv6:ADDRCONF(NETDEV_UP):eth0:linkisnotready[9965.462738]IPv6:ADDRCONF(NETDEV_UP):vetheacc333c:linkisnotready[9965.468942]IPv6:ADDRCONF(NETDEV_CHANGE):vetheacc333c:linkbecomesready..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]:usingnameserver127.0.0.1#53fordomaincluster.localDec113:21:03bastiondnsmasq[30201]:settingupstreamserversfromDBusDec113:21:03bastiondnsmasq[30201]:usingnameserver192.199.0.2#53Dec113:21:03bastiondnsmasq[30201]:usingnameserver127.0.0.1#53fordomainin-addr.Arpadec113:21:03BastionDnSmasq[30201]:useSnameserver127.0.0.0.0.1#53fordomainCluster.localdec113:21:33BastionDnsmasq[30201]:21:33bastiondnsmasq[30201]:usingnameserver127.0.0.1#53fordomainin-addr.arpaDec113:21:33bastiondnsmasq[30201]:usingnameserver127.0.0.1#53fordomaincluster.local分析网络功能您可能将数千个云原生应用程序合二为一服务于复杂网络环境下的业务,y包括虚拟化、多云和混合云。这意味着,作为故障排除的一部分,您应该分析网络连接是否正常工作。用于确定Linux服务器中网络功能的有用命令包括:??ipaddr、traceroute、nslookup、dig、ping等。例如,这是ipaddrshow命令的输出:#ipaddrshow1:lo:
