1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

デバイスファイルの名前

Posted at

デバイス名が変わる

マシンに同じタイプのデバイスを複数搭載している場合は、デバイスファイル名の扱いに注意する必要がある。
...
複数のデバイスが接続されている場合、カーネルは、一定の規則に従って、それぞれ別の名前のデバイスに対応付けます。
...
注意点としては、この対応付けは起動するたびに変わりうるということです。
...
2つのうちどちらが/dev/sdaになって、どちらが/dev/sdbになるかはデバイスの認識順によって決まります

気づき

同じタイプのデイバスは規則に従って名前がつけられるからカーネルの認識順によって変わるのか。

ファイル名が変わるみたいな話だから大変そうだ。しかし変わるとどういうことが起きるのだろうか。
ファイル名が変わると内容も変わることになるので困ると思う。

具体的な問題

別ストレージデバイスの増設

ストレージCを足すと認識順がA→C→BになってBの名前は/dev/sdbから/dev/sdcに変わる

ストレージデバイスの場所を入れ替える

AとBを挿す場所を入れ替えると、Aが/dev/sdbに、Bが/dev/sdaになる。

ストレージデバイスが壊れて認識されなくなる

Aが壊れてBが/dev/sdaとして認識される

気づき

増設しても名前が変わるのか。

udevがデータの危険を避ける

名前が変わってどうなるかというと、運が良ければブートしないくらいで済みますが、運が悪いとデータを破壊します。
...
このような問題は、systemdのudevにというプログラムが作る「persistent device name」という名前を利用することによって避けられます。
udevは起動時などにデバイスを認識するたびに、マシンに搭載されているデバイスの構成が変更しても変わらない、あるいは変わりにくいデバイス名を以下に自動で作ります。
persistent device nameには、たとえば/dev/disk/by-path/ディレクトリ以下に存在する

vboxuser@*********::~$ ls -l /dev/sda
brw-rw---- 1 root disk 8, 0  5月 24 09:32 /dev/sda
vboxuser@l**********:~$ ls -l /dev/disk/by-path/acpi-VMBUS\:00-scsi-0\:0\:0\:0
root@************:************# ls -l /dev/disk/by-path
合計 0
...
lrwxrwxrwx 1 root root  9  5月 24 09:38 pci-0000:00:0d.0-ata-1 -> ../../sda
....

気づき

/dev/disk/by-path/以下にそれっぽい名前がありsdaを指している。

ファイルシステムを間違えたくない

マウントするファイルシステムを間違えたくないという話であれば、mountコマンドにおけるラベル、UUIDの指定によって問題発生を防ぎます。

root@************:/*********# cat /etc/fstab
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# / was on /dev/sda5 during installation
UUID=9f8ea8db-01f4-4d19-b9e0-4a731cd178e4 /               ext4    errors=remount-ro 0       1
# /boot/efi was on /dev/sda1 during installation
UUID=395E-3827  /boot/efi       vfat    umask=0077      0       1
/swapfile                                 none            swap    sw              0       0

気づき

ファイルシステムとはなんだっけ?
ファイルシステムとデバイスシステムの繋がりがわからない

root@*********:***********# lsblk --fs /dev/sda
NAME FSTYPE LABEL UUID                                 FSAVAIL FSUSE% MOUNTPOINT
sda                                                                   
├─sda1
│    vfat         395E-3827                               511M     0% /boot/efi
├─sda2
│                                                                     
└─sda5
     ext4         9f8ea8db-01f4-4d19-b9e0-4a731cd178e4   12.4G    43% /

出典

気づき

/dev/sdaというデバイスファイルの下にsda1とsda5がありそれにUUidがついている。
デバイスファイルがファイルシステムをまとめているのか?

まだデバイスファイルに関して理解していない。

出典

感想

カーネルの認識順でデバイスファイルの名前が変わるのは大変だがそれらの問題を避けてくれるudvがあることを知れた。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?