設備文件

出自 Arch Linux 中文维基

這篇文章的某些內容需要擴充。

原因: 需要添加對 Loop 設備的解釋。 (在 Talk:設備文件 中討論)

根據維基百科:設備文件在類 Unix 系統中是一個設備驅動程序的接口,並如常規文件一樣出現在文件系統中。

根據文件系統層次結構標準 (FHS),設備文件在 /dev 目錄中。

在 Arch Linux 上設備節點由 udev 管理。

塊設備[編輯 | 編輯原始碼]

塊設備是一種特殊文件,能通過緩衝區訪問硬體設備。有關詳細說明和虛擬文件系統設備之間的比較,請參閱維基百科

塊設備名[編輯 | 編輯原始碼]

設備名的開頭指定了內核操作塊設備時使用的驅動子系統。

警告: 塊設備的內核名稱描述符不固定,在每次啟動時可能會變化。不應在配置文件裡使用塊設備名。

SCSI[編輯 | 編輯原始碼]

支持 SCSI 命令 (SCSISASUASP)、ATA (PATASATA) 的存儲設備或 USB 大容量存儲設備,比如機械硬碟、固態硬碟和快閃記憶體驅動器,均由內核 SCSI 驅動子系統處理。這些設備的命名規範一致。

這些設備的名稱以 sd 開頭。之後是一個從 a 開始的小寫字母,a 表示第一個發現的設備,b 表示第二個發現的設備,以此類推。

例如:

  • /dev/sda - 設備 a,第一個發現的設備。
  • /dev/sde - 設備 e,第五個發現的設備。

NVMe[編輯 | 編輯原始碼]

通過 NVM Express(NVMe) 連接的設備,比如固態硬碟,名稱以 nvme 開頭。之後是一個從 0 開始的數字,表示設備控制器號。nvme0 表示第一個發現的 NVMe 控制器,nvme1 表示第二個發現的,以此類推。然後是字母 "n" 和一個從 1 開始的數字,表示控制器上的設備號。比如 nvme0n1 表示第一個控制器上第一個發現的設備,nvme0n2 表示第一個控制器上第二個發現的設備,以此類推。

例如:

  • /dev/nvme0n1 - 控制器 0 上的設備 1,第一個控制器上第一個發現的設備。
  • /dev/nvme2n5 - 控制器 2 上的設備 5,第三個控制器上第五個發現的設備。

MMC[編輯 | 編輯原始碼]

這篇文章的某些內容需要擴充。

原因: 需要增加對 /dev/mmcblkXboot{0,1}[1]/dev/mmcblkXrpmb[2] 的說明。 (在 Talk:設備文件 中討論)

SD 卡多媒體存儲卡 (MMC 卡)eMMC 存儲設備由內核的 mmc 驅動處理。這些設備的名稱以 mmcblk 開頭,之後是一個從 0 開始的數字表示設備號。比如 mmcblk0 表示第一個發現的設備,mmcblk1 表示第二個發現的設備,以此類推。

例如:

  • /dev/mmcblk0 - 設備 0,第一個發現的設備。
  • /dev/mmcblk4 - 設備 4,第五個發現的設備。

SCSI 光碟驅動器[編輯 | 編輯原始碼]

通過受 SCSI 驅動子系統支持的接口連接的光碟驅動器,其名稱以 sr 開頭。之後是一個從 0 開始的數字,表示設備號。比如 sr0 表示第一個發現的設備, sr1 表示第二個發現的設備,以此類推。

Udev 也提供到 /dev/sr0 的符號連結,名為 /dev/cdrom。符號連結的名稱 /dev/cdrom 與驅動器支持的光碟類型和插入的介質無關。

例如:

  • /dev/sr0 - 光碟驅動器 0,第一個發現的光碟驅動器。
  • /dev/sr4 - 光碟驅動器 4,第五個發現的光碟驅動器。
  • /dev/cdrom - 到 /dev/sr0 的符號連結。

virtio-blk[編輯 | 編輯原始碼]

連接到 virtio 塊設備 (virtio-blk) 接口的驅動器,其名稱以 vd 開頭。之後是一個從 a 開始的小寫字母,a 表示第一個發現的設備 (vda),b 表示第二個發現的設備 (vdb),以此類推。

注意: 不要將 virtio-blk 與 virtio-scsi 混淆。後者模擬 SCSI 控制器,因此遵循 SCSI 命名規則

例如:

  • /dev/vda - 設備 a,第一個發現的設備。
  • /dev/vde - 設備 e,第五個發現的設備。

分區[編輯 | 編輯原始碼]

分區設備名是驅動器設備名與在分區表中分配的分區編號的組合 (可表示為 /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 --fs
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 個分區 (從 sda1sda3),每個分區都有不同的文件系統

wipefs[編輯 | 編輯原始碼]

這篇文章的某些內容需要擴充。

原因: 為什麼要使簽名對 libblkid 不可見? (在 Talk:設備文件 中討論)

wipefs 能列出或擦除指定設備上的文件系統RAID分區表簽名 (魔術字符串),從而使簽名對 libblkid(3) 不可見。它不會擦除文件系統自身,也不會擦除設備上的任何其他數據。

更多信息請參閱 wipefs(8)

例如,以下命令將擦除設備 /dev/sdb 的所有簽名,並給每個簽名創建簽名備份文件 ~/wipefs-sdb-offset.bak

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

偽設備[編輯 | 編輯原始碼]

無物理設備的設備節點。

另請參閱[編輯 | 編輯原始碼]