デバイス管理
デバイス管理:記事リスト
デバイス管理のカテゴリーには以下の記事がリストされています。
CentOS7のNICをCentOS6系のeth0にする方法|net.ifnames=0の設定手順
そんなトラブルに困った経験はないでしょうか。
CentOS7からNICの命名規則が変わり、ネットワークインターフェース名が
enp0s3 や p4p2 のような形式で自動割り当てされるようになりました。一部のソフトウェアやスクリプトは
eth0 を前提にしているため、互換性の問題が起きることがあります。
この記事では、CentOS7のNIC名をCentOS6系の
eth0 形式に変更する手順を解説します。設定変更には再起動が必要になりますので、メンテナンス時間を確保してから作業してください。
・/etc/default/grub に net.ifnames=0 biosdevname=0 を追加することでCentOS7の新NIC命名規則を無効化できる
・grub2-mkconfig -o /boot/grub2/grub.cfg でGRUB設定を再生成して変更を反映する
・/etc/sysconfig/network-scripts/ifcfg-xxxxをifcfg-eth0にリネームして設定を引き継ぐ
・NAME・DEVICE・HWADDRをeth0に統一してから再起動することでCentOS6系との互換性を確保できる
/proc/dmaでLinuxのDMAチャンネル情報を確認する方法|Direct Memory Accessの仕組みも解説
【この記事でわかること】
・cat /proc/dmaでシステムのDMAチャンネルの使用状況を確認できる・DMAはCPUを介さずにメモリとデバイス間でデータ転送を行う仕組み
・現代のPCIe接続デバイスでは/proc/dmaにほぼ表示されなくなっている
・DMAチャンネルの確認はISAバス時代のレガシーハードウェア管理で必要だった
DMA(Direct Memory Access)とは
DMA(ダイレクトメモリアクセス)は、CPUを介さずにメモリとデバイス(ハードディスク・サウンドカードなど)の間でデータを直接転送する仕組みです。CPUを経由しないことで、CPU負荷を下げながら高速なデータ転送が可能になります。DMAコントローラーが転送要求を受け付け、転送完了後にCPUに割り込みで通知する仕組みになっています。
/proc/dmaファイルとは
/proc/dma は、現在システムで使用されているDMAチャンネルの割り当て情報を表示する仮想ファイルです。more や cat コマンドで内容を参照できます。基本的な使い方
DMAチャンネル情報を表示する
[pakira@Tiger ~]$ more /proc/dma 4: cascade
システムによっては以下のような出力になることもあります。
[root@server ~]# cat /proc/dma 1: Sound Blaster8 2: floppy 3: Sound Blaster16 4: cascade
DMAチャンネルの標準的な割り当て
ISAバス時代のDMAチャンネルの標準的な割り当ては以下のとおりです。・DMA 0:未使用(予約)
・DMA 1:サウンドカードなど
・DMA 2:フロッピーディスクコントローラー
・DMA 3:利用可能(ECP パラレルポートなど)
・DMA 4:カスケード(2つのDMAコントローラーを接続するための予約)
・DMA 5~7:16ビットDMA用(ISA拡張スロット向け)
現代のシステムにおけるDMA
現代のLinuxサーバーでPCIeやUSB接続のデバイスを使用している場合、/proc/dma にはほとんど何も表示されないか「4: cascade」のみが表示されることがほとんどです。これは、PCIeデバイスがISAのDMAチャンネルを使用しないためです。現代のデバイスは「バスマスタリング」や「DMA Remapping」などより高度な仕組みでCPUを介さずにデータ転送を行っています。
本記事のまとめ
・cat /proc/dma:システムで使用中のDMAチャンネルを確認・DMAはCPUを介さないデータ転送の仕組み(CPU負荷軽減に貢献)
・DMAチャンネル4番の「cascade」は特殊用途で常に予約されている
・現代のPCIeデバイスはISA DMAを使わないため、
/proc/dma はほぼ空続きを読む "/proc/dmaでLinuxのDMAチャンネル情報を確認する方法|Direct Memory Accessの仕組みも解説"
I/Oアドレスの情報を表示する|/proc/ioports と lspci -vv で確認する現代Linuxの実務
この記事のポイント
・/proc/ioports ファイルを参照すれば、現在使われているI/Oアドレスの情報を一覧で表示できる
・PCIデバイス単位で詳細を確認するなら lspci コマンド(特に lspci -vv)が現実的
・現代のLinux(RHEL9・Ubuntu 24.04系)でも /proc/ioports と lspci はそのまま使える
・lsusb / dmesg / journalctl と組み合わせると、デバイス認識トラブルの一次切り分けが速くなる
続きを読む "I/Oアドレスの情報を表示する|/proc/ioports と lspci -vv で確認する現代Linuxの実務"
lspciコマンドでLinuxのPCIデバイス情報を確認する方法|-vオプションで詳細表示
lspciコマンドはPCIバスに接続されているすべてのデバイスの情報をOSから一覧表示します。物理的にサーバーのケースを開けなくても、搭載されているハードウェアを確認できます。
【この記事でわかること】
・lspciコマンドでPCIバスに接続されているデバイスの一覧を表示できる・-vオプションで各デバイスの詳細情報(フラグ・メモリアドレスなど)を表示できる
・ネットワークカードやグラフィックカードの認識確認に日常的に使用する
・lspci -nnでベンダーID・デバイスIDも合わせて確認できる
基本的な使い方
1. PCIデバイスの一覧を表示する
$ su - パスワード: # lspci 00:00.0 Host bridge: Intel Corporation E7230/3000/3010 Memory Controller Hub 00:01.0 PCI bridge: Intel Corporation E7230/3000/3010 PCI Express Root Port 00:1c.0 PCI bridge: Intel Corporation N10/ICH 7 PCI Express Port 1 (rev 01) 00:1d.0 USB Controller: Intel N10/ICH7 Family USB UHCI Controller #1 (rev 01) 00:1d.7 USB Controller: Intel N10/ICH 7 Family USB2 EHCI Controller (rev 01) 00:1f.0 ISA bridge: Intel 82801GB/GR (ICH7 Family) Interface Bridge (rev 01) 00:1f.1 IDE interface: Intel Corporation (ICH7 Family) IDE Controller (rev 01) 00:1f.2 IDE interface: Intel Corporation /ICH7 SATA IDE Controller (rev 01) 00:1f.3 SMBus: Intel Corporation N10/ICH 7 Family SMBus Controller (rev 01) 04:00.0 Ethernet controller: Broadcom NetXtreme Gigabit Ethernet PCI (rev 11) 06:05.0 VGA compatible controller: XGI Inc. Z7/Z9 (XG20)
・先頭の「00:00.0」などはPCIアドレス(バス:スロット.ファンクション)
・その後にデバイスの種類と名称が表示される
2. -vオプションで詳細情報を表示する
-v オプションを付けると、各デバイスのフラグ・メモリアドレス・割り込み設定などの詳細情報が表示されます。# lspci -v 00:00.0 Host bridge: Intel Corporation E7230/3000/3010 Memory Controller Hub Subsystem: Dell Unknown device 01b7 Flags: bus master, fast devsel, latency 0 Capabilities: [e0] Vendor Specific Information 00:1f.0 ISA bridge: Intel Corporation 82801GB/GR (ICH7 Family) Bridge (rev 01) Subsystem: Dell Unknown device 01b7 Flags: bus master, medium devsel, latency 0 Capabilities: [e0] Vendor Specific Information (以下省略)
3. ベンダーIDとデバイスIDも確認する(-nnオプション)
# lspci -nn 04:00.0 Ethernet controller [0200]: Broadcom NetXtreme Gigabit Ethernet [14e4:1681] (rev 11)
[14e4:1681]」がベンダーID(14e4=Broadcom)とデバイスIDです。ドライバーを探す際に役立ちます。応用・特定デバイスを絞り込む
grepでネットワークカードだけを確認する
# lspci | grep -i ethernet 04:00.0 Ethernet controller: Broadcom NetXtreme Gigabit Ethernet PCI (rev 11)
よく使うgrepキーワード
・grep -i ethernet:ネットワークカード・
grep -i vga:グラフィックカード・
grep -i raid:RAIDコントローラー・
grep -i usb:USBコントローラー・
grep -i storage:ストレージコントローラートラブルシュート
「bash: lspci: command not found」と表示される場合
lspci は pciutils パッケージに含まれています。インストールされていない場合は以下でインストールします。# yum install -y pciutils # CentOS 7以前 # dnf install -y pciutils # CentOS 8以降
本記事のまとめ
・lspci:PCIデバイスの一覧表示(要root権限の場合あり)・
lspci -v:各デバイスの詳細情報を表示・
lspci -nn:ベンダーID・デバイスIDも表示・
lspci | grep -i ethernet:特定種類のデバイスを絞り込む・
pciutils パッケージに含まれている(未導入の場合はyum/dnfでインストール)/proc/interruptsでLinuxのIRQ情報を確認する方法|割り込み要求の読み方を解説
LinuxではIRQの情報を
/proc/interrupts ファイルから確認できます。【この記事でわかること】
・cat /proc/interruptsでシステムのIRQ(割り込み要求)情報を確認できる・IRQは0~15の16種類があり、デバイスごとに割り当てられている
・機器増設前の事前確認やハードウェアトラブルの診断に活用できる
・IRQの競合(同じIRQ番号を複数デバイスで使用)が問題の原因になることがある
