デバイスファイル

提供: ArchWiki
2022年8月8日 (月) 16:31時点におけるAshMyzk (トーク | 投稿記録)による版 (TranslationStatus)
ナビゲーションに移動 検索に移動

関連記事

Wikipedia より:

Unix ライクなオペレーティングシステムにおいて、デバイスファイルまたはスペシャルファイルとは通常のファイルのようにファイルシステム上に配置されるデバイスドライバーのインターフェイスである。

Filesystem Hierarchy Standard に従って Linux ではデバイスファイルは /dev ディレクトリに存在します。

Arch Linux ではデバイスノードは udev によって管理されています。

ブロックデバイス

ブロックデバイスは特殊ファイルで、バッファを使ってハードウェアデバイスにアクセスできます。仮想ファイルシステムデバイスの詳細な説明と比較は ブロックデバイス を見てください。

ブロックデバイスの名前

デバイスの名前の最初の部分はブロックデバイスを操作するカーネルのドライバーサブシステムを示します。

警告: ブロックデバイスのカーネルによる名前は永続的ではなく起動毎に変化する可能性があるため、設定ファイルでは使うべきではありません。

SCSI

ハードディスクや SSD、フラッシュドライブなど SCSI コマンド (SCSI, SAS, UASP), ATA (PATA, SATA), USB マスストレージ接続のいずれかをサポートするストレージデバイスはカーネルの SCSI ドライバーサブシステムによって扱われます。同じ命名規則を使用します。

これらデバイスの名前は sd から始まります。そして認識順に a から始まる小文字の英字が後ろに続きます。1番目に発見されたデバイスは sda、2番目に発見されたデバイスは sdb という風に続きます。

例:

  • /dev/sda - デバイス a、最初に認識されたデバイス。
  • /dev/sde - デバイス e、5番目に認識されたデバイス。

NVME

NVM Express (NVMe) で接続された SSD などのストレージデバイスの名前は nvme から始まります。その後ろにデバイスコントローラごとに 0 から始まる数字が付きます。最初に認識された NVMe コントローラは nvme0、2番目は nvme1 と続きます。そして "n" という文字とコントローラ上のデバイスを意味する 1 から始まる数字が続きます。nvme0n1 は最初に認識されたコントローラの最初に認識されたデバイス。nvme0n2 は最初に認識されたコントローラの2番目のデバイスです。

例:

  • /dev/nvme0n1 - コントローラ 0 のデバイス 1。最初に認識されたコントローラの最初のデバイス。
  • /dev/nvme2n5 - コントローラ 2 のデバイス 5。3番目に認識されたコントローラの5番目のデバイス。

MMC

SD カードMMC カード, eMMC ストレージデバイスはカーネルの mmc ドライバーによって管理され、デバイスの名前は mmcblk から始まります。そして後ろに 0 から始まる番号が付きます。例えば mmcblk0 は最初に認識されたデバイス、mmcblk1 は2番目に認識されたデバイスです。

例:

  • /dev/mmcblk0 - デバイス 0、最初に認識されたデバイス。
  • /dev/mmcblk4 - デバイス 4、5番目に認識されたデバイス。

SCSI 光学ディスクドライブ

SCSI ドライバーサブシステムによってサポートされているインターフェイスを使って接続されている光学ディスクドライブ (ODD) の名前は sr から始まります。そしてその後ろに 0 から始まる番号が付きます。例えば sr0 は最初に認識されたデバイス、sr1 は2番目に認識されたデバイスとなります。

また、Udev によって /dev/cdrom/dev/sr0 のシンボリックリンクとなっています。ドライブがサポートしているディスクの種類や挿入されているメディアとは関係なく常に名前は cdrom です。

例:

  • /dev/sr0 - 光学ディスクドライブ 0、最初に認識された光学ディスクドライブ。
  • /dev/sr4 - 光学ディスクドライブ 4、5番目に認識された光学ディスクドライブ。
  • /dev/cdrom - /dev/sr0 のシンボリックリンク。

virtio-blk

virtio ブロックデバイス(virtio-blk)インターフェイスに接続されたドライブの名前は vd で始まります。その後に a から順に小文字の文字が続きます。1番目に発見されたデバイスは vda、2番目に発見されたデバイスは vdb という風に続きます。

ノート: virtio-blk と virtio-scsi を混同しないでください。virtio-scsi は SCSI コントローラをエミュレートするので SCSI 命名規則に従います。

例:

  • /dev/vda - デバイス a、最初に発見されたデバイス。
  • /dev/vde - デバイス e、5番目に発見されたデバイス。

パーティション

パーティションデバイスの名前はデバイスの名前と、パーティションテーブルで割り当てられたパーティション番号を組み合わせたものです(つまり /dev/drivepartition)。デバイス名が数字で終わるドライブは、ドライブの名前とパーティション番号の間に "p" という文字が挟まれます(つまり /dev/driveppartition)。

例:

  • /dev/sda1 - /dev/sda 上のパーティション 1
  • /dev/nvme2n5p3 - /dev/nvme2n5 上のパーティション 3
  • /dev/mmcblk3p4 - /dev/mmcblk3 上のパーティション 4
  • /dev/vda1 - /dev/vda 上のパーティション 1
  • /dev/loop0p2 - /dev/loop0 上のパーティション 2

ユーティリティ

lsblk

util-linux パッケージにはブロックデバイスを確認する lsblk(8) ユーティリティが含まれています。例:

$ lsblk -f
NAME   FSTYPE   LABEL       UUID                                 MOUNTPOINT
sda
├─sda1 vfat                 C4DA-2C4D                            /boot
├─sda2 swap                 5b1564b2-2e2c-452c-bcfa-d1f572ae99f2 [SWAP]
└─sda3 ext4                 56adc99b-a61e-46af-aab7-a6d07e504652 /

上記の例では、利用可能なデバイスはひとつだけ (sda) で、デバイスには3つのパーティションが存在しています (sda1 から sda3)。パーティションはそれぞれ異なるファイルシステムでフォーマットされています。

wipefs

wipefs は指定したデバイスのファイルシステム, RAID, パーティションテーブルのシグネチャ (マジック文字列) を確認・消去することができます。libblkid(3) から認識されないようになります。ファイルシステム自体は消去せず、デバイスの他のデータが消去されることもありません。

詳しくは wipefs(8) を見てください。

例えば、/dev/sdb デバイスのシグネチャを全て消去してシグネチャのバックアップファイル ~/wipefs-sdb-offset.bak を作成するには:

# wipefs --all --backup /dev/sdb

疑似デバイス

物理的なデバイスが存在しないデバイスノード。

参照

翻訳ステータス: このページは en:Device file の翻訳バージョンです。最後の翻訳日は 2022-07-21 です。もし英語版に 変更 があれば、翻訳の同期を手伝うことができます。