デバイス管理

HOMELinuxtips > デバイス管理

デバイス管理:記事リスト

デバイス管理のカテゴリーには以下の記事がリストされています。

CentOS7のNICをCentOS6系のeth0にする方法|net.ifnames=0の設定手順

「CentOS7でeth0が使えない」「NIC名がenp0s3になってしまってスクリプトが動かない」
そんなトラブルに困った経験はないでしょうか。

CentOS7からNICの命名規則が変わり、ネットワークインターフェース名が
enp0s3p4p2 のような形式で自動割り当てされるようになりました。
一部のソフトウェアやスクリプトは 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系との互換性を確保できる

続きを読む "CentOS7のNICをCentOS6系のeth0にする方法|net.ifnames=0の設定手順"

LinuxでCD-ROMをマウントする方法|mountコマンドの手順とアンマウントまで解説

Linuxでは、CD-ROMを使用する前に「マウント」と呼ばれる操作が必要です。Windowsのように自動的にドライブとして認識されるわけではなく、mountコマンドでディレクトリツリーに接続する操作が必要です。

【この記事でわかること】

・mountコマンドでCD-ROMを/mnt/cdromなどのマウントポイントに接続できる
・CD-ROMのデバイス名は通常/dev/cdromenなどで、マウントポイントは事前に作成が必要
・umountコマンドでマウントを解除でき、/dev/cdromenまたはマウントポイントを指定する
・使用後は必ずumountしてからディスクを取り出す(アンマウントしないとデータ破損の恐れ)

CD-ROMのマウントとは

Linuxのファイルシステムは、すべてのストレージデバイスを単一のディレクトリツリーとして扱います。CD-ROMを使用するには、mount コマンドでCD-ROMのデバイスファイルをディレクトリ(マウントポイント)に「接続」する必要があります。

マウントの手順

1. マウントポイントを作成する

マウント先のディレクトリが存在しない場合は、先に作成します。

[root@Tiger ~]# mkdir /mnt/cdrom

既に /mnt/cdrom が存在する場合は、このコマンドは不要です。

2. CD-ROMをマウントする

# rootユーザーでマウントを実行する(一般ユーザーはsu -で切り替え) [pakira@Tiger ~]$ su - パスワード: [root@Tiger ~]# mount /dev/cdrom /mnt/cdrom

3. CD-ROMの内容を確認する

[root@Tiger ~]# cd /mnt/cdrom [root@Tiger cdrom]# ls -l 合計 82 drwxr-xr-x 2 root root 61440 4月 30 09:29 2010 CentOS -rw-r--r-- 8 root root 212 6月 15 07:32 2008 EULA -rw-r--r-- 8 root root 18009 6月 15 07:32 2008 GPL -rw-r--r-- 8 root root 1512 6月 15 07:32 2008 RPM-GPG-KEY-beta -r--r--r-- 1 root root 1098 4月 30 09:34 2010 TRANS.TBL

マウントを解除する(アンマウント)

CD-ROMの使用が終わったら、必ずアンマウントしてからディスクを取り出してください。

# マウントポイントを指定してアンマウントする [root@Tiger ~]# umount /mnt/cdrom # またはデバイスファイルを指定してアンマウントする [root@Tiger ~]# umount /dev/cdrom

注意: CD-ROMのディレクトリ(/mnt/cdrom)に移動している状態ではアンマウントできません。「cd」コマンドで別のディレクトリに移動してからアンマウントしてください。

応用・マウント時の追加オプション

ファイルシステムタイプを明示指定する

一般的なCD-ROMのファイルシステムは iso9660 です。自動検出で問題ない場合がほとんどですが、明示的に指定することもできます。

# ファイルシステムタイプを明示的に指定する [root@Tiger ~]# mount -t iso9660 /dev/cdrom /mnt/cdrom

現在のマウント状況を確認する

# マウント中のデバイスを一覧表示する [root@Tiger ~]# df -hT Filesystem Type Size Used Avail Use% Mounted on /dev/sda1 xfs 50G 15G 36G 30% / /dev/cdrom iso9660 700M 700M 0 100% /mnt/cdrom

トラブルシュート

「mount: block device /dev/cdrom is write-protected, mounting read-only」が表示される場合

CD-ROMは読み取り専用メディアのため、このメッセージが表示されますが正常です。書き込みができないだけで、読み取りは問題なく行えます。

「device is busy」が表示されてアンマウントできない場合

CD-ROMのディレクトリをカレントディレクトリにしているプロセスが存在します。cd / などで別のディレクトリに移動してから再試行してください。

# lsofでCD-ROMを使っているプロセスを確認する [root@Tiger ~]# lsof /mnt/cdrom

本記事のまとめ

mount /dev/cdrom /mnt/cdrom:CD-ROMをマウントする(root権限が必要)
・マウントポイント(/mnt/cdrom)は事前に mkdir で作成しておく
umount /mnt/cdrom:アンマウントする(CD-ROMのディレクトリから出てから実行)
df -hT でマウント状況を確認できる

続きを読む "LinuxでCD-ROMをマウントする方法|mountコマンドの手順とアンマウントまで解説"

/proc/dmaでLinuxのDMAチャンネル情報を確認する方法|Direct Memory Accessの仕組みも解説

サーバーのハードウェア管理をしていると、DMAという用語に出くわすことがあります。現代のサーバーではあまり意識することがなくなりましたが、Linuxサーバー管理の基礎知識として理解しておくと役立ちます。

【この記事でわかること】

・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チャンネルの割り当て情報を表示する仮想ファイルです。morecat コマンドで内容を参照できます。

基本的な使い方

DMAチャンネル情報を表示する

[pakira@Tiger ~]$ more /proc/dma 4: cascade

上記の例では、DMAチャンネル4番が「cascade」(複数のDMAコントローラーを連結するための特殊な用途)として使用されています。

システムによっては以下のような出力になることもあります。

[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の仕組みも解説"

lspciコマンドでLinuxのPCIデバイス情報を確認する方法|-vオプションで詳細表示

サーバーに搭載されているネットワークカードやRAIDコントローラーの型番を確認したい、新しく追加したPCIデバイスが正しく認識されているか確認したい——そんなときに使うのが lspci コマンドです。

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」と表示される場合

lspcipciutils パッケージに含まれています。インストールされていない場合は以下でインストールします。

# 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でインストール)

続きを読む "lspciコマンドでLinuxのPCIデバイス情報を確認する方法|-vオプションで詳細表示"

/proc/interruptsでLinuxのIRQ情報を確認する方法|割り込み要求の読み方を解説

サーバーに新しいハードウェアを増設する前や、ハードウェア関連のトラブルを診断する際、現在のIRQ(割り込み要求)の使用状況を確認することが重要です。

LinuxではIRQの情報を /proc/interrupts ファイルから確認できます。

【この記事でわかること】

・cat /proc/interruptsでシステムのIRQ(割り込み要求)情報を確認できる
・IRQは0~15の16種類があり、デバイスごとに割り当てられている
・機器増設前の事前確認やハードウェアトラブルの診断に活用できる
・IRQの競合(同じIRQ番号を複数デバイスで使用)が問題の原因になることがある

IRQ(割り込み要求)とは

IRQ(Interrupt ReQuest:割り込み要求)は、周辺機器がCPUに処理を要求するための仕組みです。キーボード・マウス・ネットワークカードなどの各デバイスがCPUと通信するために使用します。

IRQは0から15まで16種類用意されており、それぞれ標準的な用途が決まっています。

基本的な使い方

1. /proc/interruptsを表示する

# cat /proc/interrupts CPU0 CPU1 0: 1578631102 0 IO-APIC-edge timer 1: 3 0 IO-APIC-edge i8042 6: 3 0 IO-APIC-edge floppy 8: 3 0 IO-APIC-edge rtc 9: 0 0 IO-APIC-level acpi 12: 4 0 IO-APIC-edge i8042 14: 118 0 IO-APIC-edge ide0 50: 41424552 0 IO-APIC-level ehci_hcd:usb1, uhci_hcd:usb2, ata_piix 169: 19056578 0 IO-APIC-level eth0 177: 0 0 IO-APIC-level uhci_hcd:usb3 185: 0 0 IO-APIC-level uhci_hcd:usb4 NMI: 0 0 LOC: 1576647381 1576668242 ERR: 0 MIS: 0

出力の見方:
・1列目:IRQ番号
・2列目以降(CPU0、CPU1):各CPUでの割り込み処理回数(カウンター)
・割り込みコントローラーの種類(IO-APIC-edge、IO-APIC-levelなど)
・最後の列:デバイス名(timer、i8042=キーボードコントローラー、eth0=ネットワークカードなど)

2. 特定デバイスのIRQを確認する(grepで絞り込む)

# ネットワークカード(eth0)のIRQを確認する # cat /proc/interrupts | grep eth0 169: 19056578 0 IO-APIC-level eth0

主なIRQ番号の用途

IRQには以下のような標準的な割り当てがあります。

IRQ 0:システムタイマー
IRQ 1:キーボードコントローラー(i8042)
IRQ 3:シリアルポートCOM2
IRQ 4:シリアルポートCOM1
IRQ 6:フロッピーディスクコントローラー
IRQ 8:リアルタイムクロック(RTC)
IRQ 14:IDE(プライマリ)コントローラー
IRQ 15:IDE(セカンダリ)コントローラー

応用・割り込みカウンターの推移を監視する

watch コマンドと組み合わせることで、リアルタイムにIRQの割り込み回数の増減を監視できます。

# 2秒ごとに /proc/interrupts を更新表示する # watch -n 2 cat /proc/interrupts

割り込み回数が急激に増加しているデバイスがあれば、そのデバイスに問題が発生している可能性があります。

本記事のまとめ

cat /proc/interrupts:IRQ番号・割り込み処理回数・デバイス名を一覧表示
・IRQは0~15の16種類があり、デバイスごとに標準的な割り当てがある
grep デバイス名 で特定デバイスのIRQを素早く確認できる
watch -n 2 cat /proc/interrupts でリアルタイム監視が可能

続きを読む "/proc/interruptsでLinuxのIRQ情報を確認する方法|割り込み要求の読み方を解説"

Linux無料マニュアル(図解60P) 名前とメールで30秒登録