Los servidores Linux ejecutan aplicaciones comerciales de misión crítica en muchos tipos diferentes de infraestructuras, incluidas máquinas físicas, virtualización, nube privada, nube pública y nube híbrida. Es importante que los administradores de sistemas de Linux entiendan cómo administrar la infraestructura de hardware de Linux, incluidas las funcionalidades definidas por software relacionadas con las redes, el almacenamiento, los contenedores de Linux y varias herramientas en los servidores de Linux.
Puede tomar algún tiempo solucionar y resolver problemas relacionados con el hardware en Linux. Incluso los administradores de sistemas con mucha experiencia a veces pasan horas trabajando para resolver misteriosas discrepancias de hardware y software.
Los siguientes consejos deberían hacer que sea más rápido y fácil solucionar problemas de hardware en Linux. Muchas cosas diferentes pueden causar problemas con el hardware de Linux; antes de comenzar a tratar de diagnosticarlos, es inteligente conocer los problemas más comunes y dónde es más probable encontrarlos.
Diagnóstico rápido de dispositivos, módulos y controladores
El primer paso para solucionar problemas suele ser mostrar una lista del hardware instalado en su servidor Linux. Puede obtener información detallada sobre el hardware usando ls comandos como lspci , lsblk , lscpu y lsscsi . Por ejemplo, aquí está la salida de 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
Si el ls los comandos no revelan ningún error, use procesos de inicio (por ejemplo, systemd ) para ver cómo funciona el servidor Linux. sistema es el proceso de inicio más popular para arrancar espacios de usuario y controlar múltiples procesos del sistema. Por ejemplo, aquí está el resultado del systemctl status 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
....
Profundizando en múltiples registros
Dmesg le permite descubrir errores y advertencias en los últimos mensajes del núcleo. Por ejemplo, aquí está la salida de dmesg | más 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
....
También puede ver todos los registros del sistema Linux en /var/log/messages archivo, que es donde encontrará errores relacionados con problemas específicos. Vale la pena monitorear los mensajes a través de la cola Comando en tiempo real cuando realiza modificaciones en su hardware, como montar un disco adicional o agregar una interfaz de red Ethernet. Por ejemplo, aquí está la salida de 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
Análisis de funciones de red
Puede tener cientos de miles de aplicaciones nativas de la nube para brindar servicios comerciales en un entorno de red complejo; estos pueden incluir virtualización, nube múltiple y nube híbrida. Esto significa que debe analizar si la conectividad de red funciona correctamente como parte de su solución de problemas. Los comandos útiles para averiguar las funciones de red en el servidor Linux incluyen ip addr , trazar ruta , nslookup , cavar y ping , entre otros. Por ejemplo, aquí está el resultado de 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
....
En conclusión
La solución de problemas de hardware de Linux requiere un conocimiento considerable, incluido cómo usar potentes herramientas de línea de comandos y averiguar los registros del sistema. También debe saber cómo diagnosticar el espacio del kernel, que es donde puede encontrar la causa raíz de muchos problemas de hardware. Tenga en cuenta que los problemas de hardware en Linux pueden provenir de muchas fuentes diferentes, incluidos dispositivos, módulos, controladores, BIOS, redes e incluso fallas simples de hardware antiguo.