Server Linux menjalankan aplikasi bisnis mission-critical di berbagai jenis infrastruktur termasuk mesin fisik, virtualisasi, private cloud, public cloud, dan hybrid cloud. Sangat penting bagi sysadmin Linux untuk memahami cara mengelola infrastruktur perangkat keras Linux—termasuk fungsionalitas yang ditentukan perangkat lunak yang terkait dengan jaringan, penyimpanan, wadah Linux, dan beberapa alat di server Linux.
Diperlukan beberapa waktu untuk memecahkan masalah dan menyelesaikan masalah terkait perangkat keras di Linux. Bahkan sysadmin yang sangat berpengalaman terkadang menghabiskan waktu berjam-jam untuk memecahkan perbedaan perangkat keras dan perangkat lunak yang misterius.
Kiat-kiat berikut akan mempercepat dan mempermudah pemecahan masalah perangkat keras di Linux. Banyak hal berbeda yang dapat menyebabkan masalah dengan perangkat keras Linux; sebelum Anda mulai mencoba mendiagnosisnya, sebaiknya pelajari tentang masalah yang paling umum dan di mana kemungkinan besar Anda akan menemukannya.
Mendiagnosis perangkat, modul, dan driver dengan cepat
Langkah pertama dalam pemecahan masalah biasanya adalah menampilkan daftar perangkat keras yang terpasang di server Linux Anda. Anda dapat memperoleh informasi mendetail tentang perangkat keras menggunakan ls perintah seperti lspci , lsblk , lscpu , dan lsscsi . Misalnya, berikut adalah output dari lsblk perintah:
# 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
Jika ls perintah tidak mengungkapkan kesalahan apa pun, gunakan proses init (mis., systemd ) untuk melihat cara kerja server Linux. sistemd adalah proses init paling populer untuk mem-bootstrap ruang pengguna dan mengendalikan beberapa proses sistem. Misalnya, berikut adalah output dari systemctl status perintah:
# 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
....
Menggali beberapa logging
Dmesg memungkinkan Anda untuk mengetahui kesalahan dan peringatan dalam pesan terbaru kernel. Sebagai contoh, berikut adalah output dari dmesg | lainnya perintah:
# 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
....
Anda juga dapat melihat semua log sistem Linux di /var/log/messages file, di mana Anda akan menemukan kesalahan yang terkait dengan masalah tertentu. Sebaiknya pantau pesan melalui ekor perintah secara real time ketika Anda membuat modifikasi pada perangkat keras Anda, seperti memasang disk tambahan atau menambahkan antarmuka jaringan Ethernet. Misalnya, berikut adalah output dari tail -f /var/log/messages perintah:
# 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
Menganalisis fungsi jaringan
Anda mungkin memiliki ratusan ribu aplikasi cloud-native untuk melayani layanan bisnis di lingkungan jaringan yang kompleks; ini mungkin termasuk virtualisasi, multiple cloud, dan hybrid cloud. Ini berarti Anda harus menganalisis apakah konektivitas jaringan berfungsi dengan benar sebagai bagian dari pemecahan masalah Anda. Perintah yang berguna untuk mengetahui fungsi jaringan di server Linux termasuk ip addr , rute jejak , nslookup , gali , dan ping , diantara yang lain. Sebagai contoh, berikut adalah output dari ip addr show perintah:
# 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
....
Kesimpulan
Pemecahan masalah perangkat keras Linux membutuhkan pengetahuan yang cukup, termasuk bagaimana menggunakan alat baris perintah yang kuat dan mencari tahu sistem logging. Anda juga harus tahu cara mendiagnosis ruang kernel, di mana Anda dapat menemukan akar penyebab banyak masalah perangkat keras. Ingatlah bahwa masalah perangkat keras di Linux dapat berasal dari berbagai sumber, termasuk perangkat, modul, driver, BIOS, jaringan, dan bahkan kegagalan fungsi perangkat keras biasa.