デバイス名が変わる
マシンに同じタイプのデバイスを複数搭載している場合は、デバイスファイル名の扱いに注意する必要がある。
...
複数のデバイスが接続されている場合、カーネルは、一定の規則に従って、それぞれ別の名前のデバイスに対応付け
ます。
...
注意点としては、この対応付けは起動するたびに変わりうる
ということです。
...
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があることを知れた。