GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Fehlerbehebung bei Hardwareproblemen unter Linux

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.


Linux
  1. Verwenden Sie lspci unter Linux, um Ihre Hardware anzuzeigen

  2. Verwalten Sie Ihre angeschlossene Hardware unter Linux mit systemd-udevd

  3. Linux-Fehlerbehebung 101:Systemleistung

  4. Fehlerbehebung und Debugging für Linux-Netzwerke?

  5. Abrufen von Informationen über die Hardware einer Maschine in Linux

Finden Sie Informationen zur Linux-Systemhardware mit Hwinfo

So finden Sie Hardwarespezifikationen unter Linux

Ein Leitfaden für Anfänger zur Netzwerkfehlerbehebung unter Linux

So zeigen Sie Hardwareinformationen unter Linux an

Fehlerbehebung „Inakzeptables TLS-Zertifikat“-Fehler in Linux

Textterminal-Hardware (für Linux)