SSブログ

udevへのストレージに関するルールの追加 [Linux]

/dev/sd[ab] が入れ替わることに関連して、デバイスへのパスを固定するための udev のルールを作成してみた。

1. 要件
指定したデバイスへのシンボリック・リンク(パス名を固定)を /dev に作成する。


対象とするデバイスは、下記の通りである。
また、ルールは /etc/udev/rules.d/60-persistent-strage.rules に設定する。

(1) 2 個のバードディスクの一方にインストールされている Windows のパーティション


・/dev/part-win-1
・/dev/part-win-2


(2) SATA1、STAT2 に接続されているハードディスク


・/dev/ata-disk-1
・/dev/ata-disk-2


2. 作成したルール


(1) Windows のパーティションへのシンポリック・リンクの作成


(a) /dev/sda[12] を使用の場合

# NTFS partitions
SUBSYSTEM=="block", ENV{ID_BUS}=="ata", ENV{ID_FS_TYPE}=="ntfs", \
SYMLINK+="part-win-%n"


(b) /dev/sda{1+x,2+x} を使用の場合

# NTFS partitions
SUBSYSTEM=="block", ENV{ID_BUS}=="ata", ENV{ID_FS_TYPE}=="ntfs", \
PROGRAM="/bin/sh -c 'echo $((%n-x))'", SYMLINK+="part-win-%c"


・実際には一行で設定する。
・%n: デバイスの番号
・%c: PROGRAM で指定したコマンドの標準出力


(2) SATA1、STAT2 に接続されているハードディスクへのシンボリック・リンクの作成

# pci-0000:00:1f.2-ata-1.0
SUBSYSTEM=="block", ENV{ID_BUS}=="ata", ENV{DEVTYPE}=="disk", \
ENV{ID_PATH}=="pci-0000:00:1f.2-ata-1.0", SYMLINK+="ata-disk-1"
# pci-0000_00_1f_2-ata-1.1
SUBSYSTEM=="block", ENV{ID_BUS}=="ata", ENV{DEVTYPE}=="disk", \
ENV{ID_PATH}=="pci-0000:00:1f.2-ata-1.1", SYMLINK+="ata-disk-2"


または

# pci-0000:00:1f.2-ata-1.0, pci-0000_00_1f_2-ata-1.1
SUBSYSTEM=="block", ENV{ID_BUS}=="ata", ENV{DEVTYPE}=="disk", \
ENV{ID_PATH}=="pci-0000:00:1f.2-ata-1.?", \
PROGRAM="/bin/sh -c \"echo $((`echo %E{ID_PATH} | sed 's/.*\.//'` +1))\"", \
SYMLINK+="ata-disk-%c"


・実際には一行で設定する。
・%E{ID_PATH}: ID_PATH の値
・同様のシンボリック・リンクが /dev/disk/by-path に存在する。
 /dev/disk/by-path/pci-0000:00:1f.2-ata-1.0
 /dev/disk/by-path/pci-0000:00:1f.2-ata-1.1


3. 備考


(1) ルールで指定できる項目の確認

% udevadm info --query=all --name=<dev-path>


nice!(0)  コメント(0) 
共通テーマ:パソコン・インターネット

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。