「デバイスファイル」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(作成)
 
(同期)
10行目: 10行目:
 
:Unix ライクなオペレーティングシステムにおいて、デバイスファイルまたはスペシャルファイルとは通常のファイルのようにファイルシステム上に配置されるデバイスドライバーのインターフェイスである。
 
:Unix ライクなオペレーティングシステムにおいて、デバイスファイルまたはスペシャルファイルとは通常のファイルのようにファイルシステム上に配置されるデバイスドライバーのインターフェイスである。
   
Linux ではデバイスファイルは {{ic|/dev}} ディレクトリに存在します ([[FHS|Filesystem Hierarchy Standard]])
+
[[Wikipedia:ja:Filesystem Hierarchy Standard|Filesystem Hierarchy Standard]] に従って Linux ではデバイスファイルは {{ic|/dev}} ディレクトリに存在します。
   
 
Arch Linux ではデバイスノードは [[udev]] によって管理されています。
 
Arch Linux ではデバイスノードは [[udev]] によって管理されています。
16行目: 16行目:
 
== ブロックデバイス ==
 
== ブロックデバイス ==
   
[[Wikipedia:ja:デバイスファイル#ブロックデバイス|ブロックデバイス]] はバッファを使ってハードウェアデバイスにアクセスすること、任意のサズと配置のブロックを読み書きすることができます
+
ブロックデバイスは特殊ファイルで、バッファを使ってハードウェアデバイスにアクセスできます。仮想ファルシステムデバイス詳細な説明と比較は [[Wikipedia:ja:デバイスファイル#ブロックデバイス|ブロックデバイス]] 見てください
   
 
=== ブロックデバイスの名前 ===
 
=== ブロックデバイスの名前 ===
28行目: 28行目:
 
ハードディスクや [[SSD]]、フラッシュドライブなど [[Wikipedia:ja:SCSIコマンド|SCSI コマンド]] ([[Wikipedia:ja:Small Computer System Interface|SCSI]], [[Wikipedia:ja:Serial Attached SCSI|SAS]], [[Wikipedia:USB Attached SCSI|UASP]]), ATA ([[Wikipedia:ja:Advanced_Technology_Attachment#パラレルATA|PATA]], [[Wikipedia:ja:シリアルATA|SATA]]), [[Wikipedia:USB mass storage device class|USB マスストレージ]]接続のいずれかをサポートするストレージデバイスはカーネルの SCSI ドライバーサブシステムによって扱われます。同じ命名規則を使用します。
 
ハードディスクや [[SSD]]、フラッシュドライブなど [[Wikipedia:ja:SCSIコマンド|SCSI コマンド]] ([[Wikipedia:ja:Small Computer System Interface|SCSI]], [[Wikipedia:ja:Serial Attached SCSI|SAS]], [[Wikipedia:USB Attached SCSI|UASP]]), ATA ([[Wikipedia:ja:Advanced_Technology_Attachment#パラレルATA|PATA]], [[Wikipedia:ja:シリアルATA|SATA]]), [[Wikipedia:USB mass storage device class|USB マスストレージ]]接続のいずれかをサポートするストレージデバイスはカーネルの SCSI ドライバーサブシステムによって扱われます。同じ命名規則を使用します。
   
これらデバイスの名前は {{ic|sd}} から始まります。そして認識順に {{ic|a}} から始まる小文字の英字が後ろに続きます ({{ic|sda}})2番目に認識されたデバイスは {{ic|b}} が付きます ({{ic|sdb}})。デバイス上の[[パーティション]]にパーティションテーブルにおける番号が付きます。例: {{ic|sda1}} はパーティション {{ic|1}} で、{{ic|sda2}} はパーティション {{ic|2}} です。
+
これらデバイスの名前は {{ic|sd}} から始まります。そして認識順に {{ic|a}} から始まる小文字の英字が後ろに続きます。1番目に発見されたデバイスは {{ic|sda}}、2番目に発見されたデバイスは {{ic|sdb}} という風に続きます。
   
  +
例:
まとめ:
 
   
 
* {{ic|/dev/sda}} - デバイス {{ic|a}}、最初に認識されたデバイス。
 
* {{ic|/dev/sda}} - デバイス {{ic|a}}、最初に認識されたデバイス。
* {{ic|/dev/sda1}} - デバイス {{ic|a}} のパーティション {{ic|1}}。
 
 
* {{ic|/dev/sde}} - デバイス {{ic|e}}、5番目に認識されたデバイス。
 
* {{ic|/dev/sde}} - デバイス {{ic|e}}、5番目に認識されたデバイス。
* {{ic|/dev/sde7}} - デバイス {{ic|e}} のパーティション {{ic|7}}。
 
   
 
==== NVME ====
 
==== NVME ====
   
[[NVM Express]] (NVMe) で接続された [[SSD]] などのストレージデバイスの名前は {{ic|nvme}} から始まります。その後ろにデバイスコントローラごとに {{ic|0}} から始まる数字が付きます。最初に認識された NVMe コントローラは {{ic|nvme0}}、2番目は {{ic|nvme1}} と続きます。そして "n" という文字とコントローラ上のデバイスを意味する {{ic|1}} から始まる数字が続きます。{{ic|nvme0n1}} は最初に認識されたコントローラの最初に認識されたデバイス。{{ic|nvme0n2}} は最初に認識されたコントローラの2番目のデバイスです。各デバイスに存在する[[パーティション]]は "p" という文字とパーティションテーブルにおける番号で表されます。例えば {{ic|nvme0n1p}} は最初のコントローラの最初のデバイスの番号 {{ic|1}} のパーティションで、番号 {{ic|2}} のパーティションは {{ic|nvme0n1p2}} です。
+
[[NVM Express]] (NVMe) で接続された [[SSD]] などのストレージデバイスの名前は {{ic|nvme}} から始まります。その後ろにデバイスコントローラごとに {{ic|0}} から始まる数字が付きます。最初に認識された NVMe コントローラは {{ic|nvme0}}、2番目は {{ic|nvme1}} と続きます。そして "n" という文字とコントローラ上のデバイスを意味する {{ic|1}} から始まる数字が続きます。{{ic|nvme0n1}} は最初に認識されたコントローラの最初に認識されたデバイス。{{ic|nvme0n2}} は最初に認識されたコントローラの2番目のデバイスです。
   
  +
例:
まとめ:
 
   
 
* {{ic|/dev/nvme0n1}} - コントローラ {{ic|0}} のデバイス {{ic|1}}。最初に認識されたコントローラの最初のデバイス。
 
* {{ic|/dev/nvme0n1}} - コントローラ {{ic|0}} のデバイス {{ic|1}}。最初に認識されたコントローラの最初のデバイス。
* {{ic|/dev/nvme0n1p1}} - コントローラ {{ic|0}} のデバイス {{ic|1}} のパーティション {{ic|1}}。
 
 
* {{ic|/dev/nvme2n5}} - コントローラ {{ic|2}} のデバイス {{ic|5}}。3番目に認識されたコントローラの5番目のデバイス。
 
* {{ic|/dev/nvme2n5}} - コントローラ {{ic|2}} のデバイス {{ic|5}}。3番目に認識されたコントローラの5番目のデバイス。
* {{ic|/dev/nvme2n5p7}} - コントローラ {{ic|2}} のデバイス {{ic|5}} のパーティション {{ic|7}}。
 
   
 
==== MMC ====
 
==== MMC ====
   
[[Wikipedia:ja:SDメモリーカード|SD カード]], [[Wikipedia:ja:マルチメディアカード|MMC カード]], [[Wikipedia:ja:マルチメディアカード#eMMC|eMMC ストレージデバイス]]はカーネルの {{ic|mmc}} ドライバーによって管理され、デバイスの名前は {{ic|mmcblk}} から始まります。そして後ろに {{ic|0}} から始まる番号が付きます。例えば {{ic|mmcblk0}} は最初に認識されたデバイス、{{ic|mmcblk1}} は2番目に認識されたデバイスです。各デバイスに存在する[[パーティション]]は "p" という文字とパーティションテーブルにおける番号によって名前が付きます。パーティションテーブルの番号 {{ic|1}} のパーティションは {{ic|mmcblk0p1}}、番号 {{ic|2}} のパーティションは {{ic|mmcblk0p2}} となります。
+
[[Wikipedia:ja:SDメモリーカード|SD カード]][[Wikipedia:ja:マルチメディアカード|MMC カード]], [[Wikipedia:ja:マルチメディアカード#eMMC|eMMC ストレージデバイス]]はカーネルの {{ic|mmc}} ドライバーによって管理され、デバイスの名前は {{ic|mmcblk}} から始まります。そして後ろに {{ic|0}} から始まる番号が付きます。例えば {{ic|mmcblk0}} は最初に認識されたデバイス、{{ic|mmcblk1}} は2番目に認識されたデバイスです。
   
  +
例:
まとめ:
 
   
 
* {{ic|/dev/mmcblk0}} - デバイス {{ic|0}}、最初に認識されたデバイス。
 
* {{ic|/dev/mmcblk0}} - デバイス {{ic|0}}、最初に認識されたデバイス。
* {{ic|/dev/mmcblk0p1}} - デバイス {{ic|0}} のパーティション {{ic|1}}。
 
 
* {{ic|/dev/mmcblk4}} - デバイス {{ic|4}}、5番目に認識されたデバイス。
 
* {{ic|/dev/mmcblk4}} - デバイス {{ic|4}}、5番目に認識されたデバイス。
* {{ic|/dev/mmcblk4p7}} - デバイス {{ic|4}} のパーティション {{ic|7}}。
 
   
 
==== SCSI 光学ディスクドライブ ====
 
==== SCSI 光学ディスクドライブ ====
65行目: 59行目:
 
また、[[Udev]] によって {{ic|/dev/cdrom}} が {{ic|/dev/sr0}} のシンボリックリンクとなっています。ドライブがサポートしているディスクの種類や挿入されているメディアとは関係なく常に名前は {{ic|cdrom}} です。
 
また、[[Udev]] によって {{ic|/dev/cdrom}} が {{ic|/dev/sr0}} のシンボリックリンクとなっています。ドライブがサポートしているディスクの種類や挿入されているメディアとは関係なく常に名前は {{ic|cdrom}} です。
   
  +
例:
まとめ:
 
   
 
* {{ic|/dev/sr0}} - 光学ディスクドライブ {{ic|0}}、最初に認識された光学ディスクドライブ。
 
* {{ic|/dev/sr0}} - 光学ディスクドライブ {{ic|0}}、最初に認識された光学ディスクドライブ。
 
* {{ic|/dev/sr4}} - 光学ディスクドライブ {{ic|4}}、5番目に認識された光学ディスクドライブ。
 
* {{ic|/dev/sr4}} - 光学ディスクドライブ {{ic|4}}、5番目に認識された光学ディスクドライブ。
 
* {{ic|/dev/cdrom}} - {{ic|/dev/sr0}} のシンボリックリンク。
 
* {{ic|/dev/cdrom}} - {{ic|/dev/sr0}} のシンボリックリンク。
  +
  +
==== virtio-blk ====
  +
  +
virtio ブロックデバイス(virtio-blk)インターフェイスに接続されたドライブの名前は {{ic|vd}} で始まります。その後に {{ic|a}} から順に小文字の文字が続きます。1番目に発見されたデバイスは {{ic|vda}}、2番目に発見されたデバイスは {{ic|vdb}} という風に続きます。
  +
  +
{{Note|virtio-blk と virtio-scsi を混同しないでください。virtio-scsi は SCSI コントローラをエミュレートするので [[#SCSI|SCSI 命名規則]]に従います。}}
  +
  +
例:
  +
  +
* {{ic|/dev/vda}} - デバイス {{ic|a}}、最初に発見されたデバイス。
  +
* {{ic|/dev/vde}} - デバイス {{ic|e}}、5番目に発見されたデバイス。
  +
  +
==== パーティション ====
  +
  +
パーティションデバイスの名前はデバイスの名前と、パーティションテーブルで割り当てられたパーティション番号を組み合わせたものです(つまり {{ic|/dev/''drivepartition''}})。デバイス名が数字で終わるドライブは、ドライブの名前とパーティション番号の間に "p" という文字が挟まれます(つまり {{ic|/dev/''drive'''''p'''''partition''}})。
  +
  +
例:
  +
  +
* {{ic|/dev/sda1}} - {{ic|/dev/sda}} 上のパーティション {{ic|1}}。
  +
* {{ic|/dev/nvme2n5p3}} - {{ic|/dev/nvme2n5}} 上のパーティション {{ic|3}}。
  +
* {{ic|/dev/mmcblk3p4}} - {{ic|/dev/mmcblk3}} 上のパーティション {{ic|4}}。
  +
* {{ic|/dev/vda1}} - {{ic|/dev/vda}} 上のパーティション {{ic|1}}。
  +
* {{ic|/dev/loop0p2}} - {{ic|/dev/loop0}} 上のパーティション {{ic|2}}。
   
 
=== ユーティリティ ===
 
=== ユーティリティ ===
110行目: 127行目:
   
 
* [https://doc.kusakata.com/admin-guide/devices.html Linux 予約デバイス — Linux カーネルドキュメント]
 
* [https://doc.kusakata.com/admin-guide/devices.html Linux 予約デバイス — Linux カーネルドキュメント]
* [https://wiki.gentoo.org/wiki/Device_file Gentoo:Device file]
+
* [[Gentoo:Device file]]

2022年7月21日 (木) 05:10時点における版

関連記事

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

疑似デバイス

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

参照