みなさまこんにちは。じょんのび情報局のhokuです。
今回はいつもの今からはじめるインフラエンジニアLinuxコマンド編その①として、最近お世話になった便利なコマンド群のご紹介。
Table of Contents
今から始めるインフラエンジニア〜Linuxコマンド編①〜ハードウェア確認に便利なニクいヤツら
最近はdockerやらcloudやらであまりハードウェアを意識するエンジニアは少なくなってきたかもしれませんが、それでも物理サーバはどこかに存在し、誰かが構築しています。
そんなエンジニアにあなたが該当した場合、新米エンジニアであればきっと助けてくれるだろう便利コマンドをご紹介します。
ネットワーク状態を一発で確認する:ethtool
まずご紹介するのはethtoolコマンド。
お恥ずかしい話これまであまり使ったことはなく、ネットワーク設定といえばあまり気にせず直接viで編集することが多かったのですが、昨今のサーバハードウェアのハイスペック化により1台に搭載されるNICの数がまぁ増えてしまったのと、RHEL7からのNetwrokManagerの登場によりインターフェイスの命名も変わってしまったことから、GUIでの設定に逃げるという愚行を招いてしまっていました。
これではイケナイと思い直して最近またCLIに戻したのですがそんな中でとても活躍してくれたのがこのコマンドでした。
前置きが長くなりましたが、ethtoolコマンドは、「サーバのどのネットワークポートにネットワークケーブルが接続されているのか」を確認するコマンドです。
たくさんネットワークポートを持っているサーバ(これは仮想マシンの仮想NICでも同じです)があっても、すべてのネットワークポートがネットワークに接続されているとは限りません。
Linux上ではネットワークポートの設定をONにしていても、ネットワークに接続されていなければ(物理的にケーブルが刺さっている、あるいは仮想NICが接続状態となっている)ネットワークには繋がりません。逆も然りで、ネットワークポートの設定を行っていなければ、ネットワークがつながっていてもネットワークには繋がりません。
そんな悩みをコマンド一発で解決してくれます。
百聞は一見にしかず、ですので早速コマンド例とコマンド結果をご紹介いたします。構文は以下です。
# ethtool [DEVICE]
実際に実行してみます。
# ethtool eth0
Settings for eth0:
Supported ports: [ TP MII ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
Supports auto-negotiation: Yes
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
Advertised auto-negotiation: No
Speed: 100Mb/s
Duplex: Full
Port: Twisted Pair
PHYAD: 1
Transceiver: internal
Auto-negotiation: off
Supports Wake-on: puag
Wake-on: g
Link detected: yes
Link detectedがyesであればケーブル接続済み、noであればケーブル未接続を表します。
これでOSからケーブル接続状態が識別できるようになりました。あとは、nmcliでネットワーク設定を行って完了です。
複数ポートが有る場合は、少し手間ですが、それぞれのデバイスに対してethtoolを実行することで全ポートの情報が取得できます。
ethtoolsのその他の情報
ethtoolsではその他にもスピードやOS起動時にNICが有効になるかが判別できます。OSセットアップを行う際の良いパートナーとなってくれるので、お悩みの方はご利用してみてはいかがでしょうか。
なお、Toolがインストールされていない場合、以下でインストールされ利用可能になります。
# yum install ethtool
ハードウェア情報を取得する:lshw
次にlshwのご紹介。
各種ハードウェア情報はそれぞれのデバイスからそのファームウェアを通じてBIOSに渡されます。
OSはBIOSが持つその情報を読みこみ認識しますが、例えばメモリの差し込みが甘く実はOSが認識できていない、などといった事象が起きたりします。
そういった問題が起きていないかを確認するために起動後には一度実施しておきたいハードウェア情報取得のコマンドがlshwです。
こちらも前置きはこのあたりで実際に実行してみましょう。
# lshw
xxxx.xxxx.jp
description: Computer
product: KVM
vendor: Red Hat
width: 64 bits
capabilities: smbios-2.4 dmi-2.4 smp vsyscall32
configuration: boot=normal uuid=F488DDE8-B0E7-496F-BE8D-8DA077D824D3
*-core
description: Motherboard
physical id: 0
*-firmware
description: BIOS
vendor: xxxx
physical id: 0
version: x.x.x
date: 01/01/xxxx
size: 96KiB
*-cpu:0
description: CPU
product: Intel(R) Core(TM)2 Duo CPU T7700 @ 2.40GHz
vendor: Intel Corp.
vendor_id: GenuineIntel
physical id: 401
bus info: cpu@0
slot: CPU 1
size: 2GHz
capacity: 2GHz
width: 64 bits
capabilities: fpu fpu_exception wp vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx x86-64 constant_tsc arch_perfmon rep_good nopl eagerfpu pni ssse3 cx16 hypervisor lahf_lm
*-cpu:1
description: CPU
product: Intel(R) Core(TM)2 Duo CPU T7700 @ 2.40GHz
vendor: Intel Corp.
vendor_id: GenuineIntel
physical id: 402
bus info: cpu@1
:
:
~snip~
:
:
かなり長い情報が返りますので、上記は一部のみを表記しています。
(一部情報はセキュリティの観点からマスクしています。)
確認したいデバイスが決まっている場合は、classオプションで特定デバイスのみの確認をすることも可能です。
以下はメモリを指定した場合。
# lshw -class memory
*-firmware
description: BIOS
vendor: xxxx
physical id: 0
version: x.x.x
date: 01/01/xxxx
size: 96KiB
*-memory
description: System Memory
physical id: 1000
size: 1GiB
capacity: 1GiB
capabilities: ecc
configuration: errordetection=multi-bit-ecc
*-bank
description: DIMM RAM
physical id: 0
slot: DIMM 0
size: 1GiB
width: 64 bits
最近はBMCからハードウェア情報を確認したりもできるので、そこまで必要とされなくなったかもしれませんが、いちいちBMCにアクセスしなくてもOSからコマンド確認が行なえます。
lshwのその他の情報
cpuに関してのみ、lshwと似た、lscpuというコマンドがあります。cpu情報のみでしたら、こちらのコマンドのほうが、よりわかりやすく、詳しい情報を出力してくれるので試してみるのもありかと思います。
また、dmidecodeというlshwと同様にハードウェア情報を出力してくれるコマンドもあります。出力が微妙に違うので、お好みでの使い分けになりそうです。
なお、Toolがインストールされていない場合、以下でインストールされ利用可能になります。
# yum install lshw
備忘録も兼ねて投稿しましたが、少しでもみなさんのLinuxライフに役立つことができれば嬉しいです。