Linux-Server führen geschäftskritische Geschäftsanwendungen in vielen verschiedenen Arten von Infrastrukturen aus, darunter physische Maschinen, Virtualisierung, Private Cloud, Public Cloud und Hybrid Cloud. Für Linux-Systemadministratoren ist es wichtig zu verstehen, wie die Linux-Hardwareinfrastruktur verwaltet wird – einschließlich softwaredefinierter Funktionen in Bezug auf Netzwerke, Speicher, Linux-Container und mehrere Tools auf Linux-Servern.
Es kann einige Zeit dauern, Hardwareprobleme unter Linux zu beheben und zu lösen. Selbst sehr erfahrene Systemadministratoren verbringen manchmal Stunden damit, mysteriöse Hardware- und Software-Diskrepanzen zu lösen.
Die folgenden Tipps sollen die Fehlerbehebung von Hardware unter Linux beschleunigen und vereinfachen. Viele verschiedene Dinge können Probleme mit Linux-Hardware verursachen; Bevor Sie versuchen, sie zu diagnostizieren, sollten Sie sich über die häufigsten Probleme informieren und wissen, wo Sie sie am wahrscheinlichsten finden.
Schnelldiagnose von Geräten, Modulen und Treibern
Der erste Schritt bei der Fehlerbehebung besteht normalerweise darin, eine Liste der auf Ihrem Linux-Server installierten Hardware anzuzeigen. Detaillierte Informationen zur Hardware erhalten Sie mit ls Befehle wie lspci , lsblk , lscpu und lsscsi . Hier ist zum Beispiel die Ausgabe von lsblk Befehl:
# 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
Wenn die ls Befehle keine Fehler anzeigen, verwenden Sie Init-Prozesse (z. B. systemd ), um zu sehen, wie der Linux-Server funktioniert. systemd ist der beliebteste Init-Prozess zum Bootstrapping von Benutzerbereichen und zur Steuerung mehrerer Systemprozesse. Hier ist zum Beispiel die Ausgabe des systemctl status Befehl:
# 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
....
Durchsuchen mehrerer Loggings
Dmesg ermöglicht es Ihnen, Fehler und Warnungen in den neuesten Nachrichten des Kernels herauszufinden. Hier ist zum Beispiel die Ausgabe von dmesg | mehr Befehl:
# 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
....
Sie können sich auch alle Linux-Systemprotokolle in /var/log/messages ansehen Datei, in der Sie Fehler finden, die sich auf bestimmte Probleme beziehen. Es lohnt sich, die Nachrichten über den Tail zu überwachen Befehl in Echtzeit, wenn Sie Änderungen an Ihrer Hardware vornehmen, z. B. eine zusätzliche Festplatte installieren oder eine Ethernet-Netzwerkschnittstelle hinzufügen. Hier ist zum Beispiel die Ausgabe von tail -f /var/log/messages Befehl:
# 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
Analyse von Netzwerkfunktionen
Möglicherweise verfügen Sie über Hunderttausende von Cloud-nativen Anwendungen, um Geschäftsdienste in einer komplexen Netzwerkumgebung bereitzustellen. Dazu können Virtualisierung, Multiple Cloud und Hybrid Cloud gehören. Das bedeutet, dass Sie im Rahmen Ihrer Fehlerbehebung analysieren sollten, ob die Netzwerkverbindung ordnungsgemäß funktioniert. Nützliche Befehle zum Ermitteln von Netzwerkfunktionen auf dem Linux-Server sind unter anderem ip addr , Traceroute , nslookup , graben , und ping , unter anderen. Hier ist zum Beispiel die Ausgabe von ip addr show Befehl:
# 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
....
Fazit
Die Fehlerbehebung von Linux-Hardware erfordert beträchtliche Kenntnisse, einschließlich der Verwendung leistungsstarker Befehlszeilentools und der Ermittlung von Systemprotokollen. Sie sollten auch wissen, wie Sie den Kernel-Space diagnostizieren, wo Sie die Ursache vieler Hardwareprobleme finden können. Denken Sie daran, dass Hardwareprobleme in Linux aus vielen verschiedenen Quellen stammen können, einschließlich Geräten, Modulen, Treibern, BIOS, Netzwerken und sogar einfachen alten Hardwarefehlfunktionen.