GNU/Linux >> Tutoriels Linux >  >> Linux

Dépannage des problèmes matériels sous Linux

Les serveurs Linux exécutent des applications métier critiques dans de nombreux types d'infrastructures, notamment les machines physiques, la virtualisation, le cloud privé, le cloud public et le cloud hybride. Il est important que les administrateurs système Linux comprennent comment gérer l'infrastructure matérielle Linux, y compris les fonctionnalités définies par logiciel liées à la mise en réseau, au stockage, aux conteneurs Linux et à plusieurs outils sur les serveurs Linux.

Le dépannage et la résolution des problèmes liés au matériel sous Linux peuvent prendre un certain temps. Même les administrateurs système très expérimentés passent parfois des heures à résoudre de mystérieuses incohérences matérielles et logicielles.

Les conseils suivants devraient faciliter et accélérer le dépannage du matériel sous Linux. Beaucoup de choses différentes peuvent causer des problèmes avec le matériel Linux; avant de commencer à essayer de les diagnostiquer, il est judicieux de se renseigner sur les problèmes les plus courants et où vous êtes le plus susceptible de les trouver.

Périphériques, modules et pilotes de diagnostic rapide

La première étape du dépannage consiste généralement à afficher une liste du matériel installé sur votre serveur Linux. Vous pouvez obtenir des informations détaillées sur le matériel en utilisant ls commandes telles que lspci , lsblk , lscpu , et lsscsi . Par exemple, voici la sortie de lsblk commande :

# 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

Si le ls les commandes ne révèlent aucune erreur, utilisez les processus init (par exemple, systemd ) pour voir comment fonctionne le serveur Linux. systemd est le processus d'initialisation le plus populaire pour démarrer les espaces utilisateur et contrôler plusieurs processus système. Par exemple, voici la sortie du statut systemctl commande :

# 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
....

Explorer plusieurs journaux

Dmesg vous permet de comprendre les erreurs et les avertissements dans les derniers messages du noyau. Par exemple, voici la sortie du dmesg | plus commande :

# 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
....

Vous pouvez également consulter tous les journaux du système Linux dans /var/log/messages fichier, où vous trouverez les erreurs liées à des problèmes spécifiques. Cela vaut la peine de surveiller les messages via la queue commande en temps réel lorsque vous apportez des modifications à votre matériel, comme le montage d'un disque supplémentaire ou l'ajout d'une interface réseau Ethernet. Par exemple, voici la sortie de tail -f /var/log/messages commande :

# 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 des fonctions réseau

Vous pouvez avoir des centaines de milliers d'applications cloud natives pour servir les services métier dans un environnement réseau complexe; ceux-ci peuvent inclure la virtualisation, le cloud multiple et le cloud hybride. Cela signifie que vous devez analyser si la connectivité réseau fonctionne correctement dans le cadre de votre dépannage. Les commandes utiles pour comprendre les fonctions de mise en réseau dans le serveur Linux incluent ip addr , tracerroute , nslookup , creuser , et ping , entre autres. Par exemple, voici la sortie du ip addr show commande :

# 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
....

En conclusion

Le dépannage du matériel Linux nécessite des connaissances considérables, notamment comment utiliser de puissants outils de ligne de commande et comprendre les journaux système. Vous devez également savoir comment diagnostiquer l'espace du noyau, où vous pouvez trouver la cause première de nombreux problèmes matériels. Gardez à l'esprit que les problèmes matériels sous Linux peuvent provenir de nombreuses sources différentes, y compris les périphériques, les modules, les pilotes, le BIOS, la mise en réseau et même les dysfonctionnements matériels les plus anciens.


Linux
  1. Utilisez lspci sous Linux pour voir votre matériel

  2. Gérer votre matériel connecté sous Linux avec systemd-udevd

  3. Commandes Linux pour afficher les informations sur votre matériel

  4. Dépannage Linux 101 :performances du système

  5. 5 commandes de dépannage du réseau Linux

Trouver des informations sur le matériel du système Linux avec Hwinfo

Comment trouver les spécifications matérielles sous Linux

Un guide du débutant pour le dépannage du réseau sous Linux

Comment afficher les informations sur le matériel sous Linux

Dépannage de l'erreur "Certificat TLS inacceptable" sous Linux

Matériel de terminal texte (pour Linux)