I server Linux eseguono applicazioni aziendali mission-critical in molti diversi tipi di infrastrutture, tra cui macchine fisiche, virtualizzazione, cloud privato, cloud pubblico e cloud ibrido. È importante che gli amministratori di sistema Linux comprendano come gestire l'infrastruttura hardware Linux, comprese le funzionalità definite dal software relative a reti, storage, container Linux e strumenti multipli sui server Linux.
La risoluzione dei problemi relativi all'hardware su Linux può richiedere del tempo. Anche gli amministratori di sistema di grande esperienza a volte trascorrono ore a lavorare per risolvere misteriose discrepanze hardware e software.
I seguenti suggerimenti dovrebbero rendere più semplice e veloce la risoluzione dei problemi hardware in Linux. Molte cose diverse possono causare problemi con l'hardware Linux; prima di iniziare a provare a diagnosticarli, è utile conoscere i problemi più comuni e dove è più probabile che li trovi.
Dispositivi, moduli e driver a diagnosi rapida
Il primo passaggio nella risoluzione dei problemi di solito consiste nel visualizzare un elenco dell'hardware installato sul server Linux. È possibile ottenere informazioni dettagliate sull'hardware utilizzando ls comandi come lspci , lsblk , lscpu e lsscsi . Ad esempio, ecco l'output di lsblk comando:
# 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
Se il ls i comandi non rivelano alcun errore, utilizzano processi init (ad es. systemd ) per vedere come funziona il server Linux. sistema di sistema è il processo di inizializzazione più popolare per il bootstrap degli spazi utente e il controllo di più processi di sistema. Ad esempio, qui viene visualizzato lo stato systemctl comando:
# 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
....
Analisi in più registri
Dmesg ti consente di capire errori e avvisi negli ultimi messaggi del kernel. Ad esempio, ecco l'output di dmesg | di più comando:
# 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
....
Puoi anche guardare tutti i log di sistema Linux in /var/log/messages file, che è dove troverai gli errori relativi a problemi specifici. Vale la pena monitorare i messaggi tramite la coda comando in tempo reale quando si apportano modifiche all'hardware, come il montaggio di un disco aggiuntivo o l'aggiunta di un'interfaccia di rete Ethernet. Ad esempio, ecco l'output di tail -f /var/log/messages comando:
# 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
Analisi delle funzioni di rete
Potresti avere centinaia di migliaia di applicazioni cloud native per servire servizi aziendali in un ambiente di rete complesso; questi possono includere la virtualizzazione, il cloud multiplo e il cloud ibrido. Ciò significa che dovresti analizzare se la connettività di rete funziona correttamente come parte della tua risoluzione dei problemi. I comandi utili per capire le funzioni di rete nel server Linux includono ip addr , tracciare , nslookup , scava e ping , tra gli altri. Ad esempio, ecco l'output di ip addr show comando:
# 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
....
In conclusione
La risoluzione dei problemi dell'hardware Linux richiede una conoscenza considerevole, incluso come utilizzare potenti strumenti da riga di comando e capire i log di sistema. Dovresti anche sapere come diagnosticare lo spazio del kernel, che è dove puoi trovare la causa principale di molti problemi hardware. Tieni presente che i problemi hardware in Linux possono derivare da molte fonti diverse, inclusi dispositivi, moduli, driver, BIOS, reti e persino semplici malfunzionamenti hardware vecchi.