Linuxでサーバー内部のハードウェア情報を素早く取得する方法
見知らぬサーバーにSSHでログインし、中身を把握しようとする場面はよくあるだろう。のマザーボードは何か、メモリスロットは何本使われていて、周波数はどれくらいか、ディスクはどのモードで動作しているか。
通常は、lspciやdmidecodeといったバラバラのコマンドを組み合わせて使ったり、/procや/sys以下のファイルを読んだりと、結果を頭の中でつなぎ合わせて全体像を把握する必要がある。
lshw(Hardware Lister)は、この一連の作業を完全に自動化してくれる。コンピュータの設定情報を統合されたハードウェアツリーとしてまとめ、コンソールでの表示だけでなくXMLやHTMLといった готовые形式でも出力できる。
lshwでできること
このプログラムは複数のソースを通じてシステムをスキャンする。x86とEFIではDMI(SMBIOS)にクエリを送信し、CPUIDを調べ、PCI/AGP、USB、SCSI、IDE/ATAバスの一覧を解析し、PowerPCアーキテクチャではOpenFirmwareデバイスツリーを読み取る。
その結果、すべてのハードウェアが整理された詳細なレポートが手に入る:
- 正確なRAM構成:タイミング、各モジュールのサイズ、使用中のスロット、対応の最大容量。
- BIOS/UEFIファームウェアバージョンとマザーンボードリビジョン。
- プロセッサ設定、対応の命令セット、バス周波数、各レベルのキャッシュサイズ。
- ストレージコントローラー、ネットワークカード、接続されている周辺機器と、使用しているカーネルドライバー。
追加の魅力として、このユーティリティは生のデバイスIDだけでなく、ローカルデータベース hwdataと /usr/share/misc/から判読可能な名前を取得してくれる。
出力形式と実践的なシナリオ
lshwのプレーンテキスト出力は、パラメータなしで実行すると長すぎるように感じることがある。しかし、的管理者和インフラ開発者の生活をずっと楽にする柔軟なフラグが用意されている。
コンパクトなサマリー
テキストの壁なしで全体像を素早く把握する必要がある場合は、ブリーフモードが便利だ:
各ノードの状態、デバイスパス、コンポーネントの簡単な説明を含む整然としたテーブルが出力される。
HTMLレポートの生成
インベントリを同僚と共有したり、チケットにサーバー状態を添付する必要がある場合は、1つのコマンドで整形されたHTMLファイルを生成できる:
このようなレポートはブラウザで即座に閲覧でき、判読可能な折りたたみセクションを含み、コントローラーと子デバイスを視覚的に分離している。
XMLとJSONによる自動化
インベントリスクリプトや自動マシン監査のために、このユーティリティは生の構造化データを出力できる:
このXMLはPythonで 쉽게 파싱でき、新しいサーバーのセットアップ時にCMDBデータベースにフィードすることもできる。
ビルドと内部構造
このプロジェクトはC++で書かれており、長い歴史がある。コードは古いコンパイラバージョンでもコンパイルでき、重い依存関係を必要としない。
わずか数秒でソースからバイナリをビルドできる:
システム回復用(レスキューディスク)のミニマリストイメージをビルドしている場合、lshwは静的にコンパイルするか、UPXで圧縮できるため、バイナリのサイズはほとんど気にならない:
GUI愛好家には lshw-gtk ビルドが利用可能だ( make gui でビルド)が、実際にはコンソールバージョンで十分だ。
誰が役立つのか
このユーティリティはコンテナやサーバーレスの関数だけを扱っている人にはおそらく必要ないだろう。しかし、ベアメタルサーバーのセットアップ、家庭用サーバーの構築、メモリモジュール検出の問題の診断、マシンのフリートのインベントリスクリプトの作成などをしている場合、 lshw は大幅な時間節約になる。ルート権限で1回実行すれば、ケースに何がインストールされているかを正確に把握できる。
関連プロジェクト