私はあなたと同じ問題を抱えています:/dev/sd**
再起動後のカーネルによる名前変更:
もちろん、私の自動マウントはすべて/etc/fstab
LABELまたはUUIDによって参照されるため、基本的には問題ありません。そして、上記のすべてのコマンド、blkidまたはlsblkは、この種の情報を提供します。
しかし、トラブルは、私の場合のように、現在起動しているシステムの視点でRAWモードでパーティションを使用している場合に開始されます:たとえば、VirtualBoxの仮想ディスクを作成するためにパーティションをrawデバイスとして使用このパーティションへの参照は次のようなものです:)/dev/sdf3
またはパーティションはrawデバイスとして使用され、iSCSI用のLUNを作成します(したがって、このパーティションへの参照は次のようになります/dev/sdc6
)
ブート時に、たとえばrc.localで、信頼できる方法/dev/sdXX
で、専用のRAWパーティションのデバイスを見つけ、ファイルを調整する必要があります。
実施例1
このrawディスクのVirtualBoxディスク* .vmkの説明。
\# Extent description
RW 488397167 FLAT "/dev/sdXX" 0
その後、VirtualBoxサービスを再起動します
実施例2
tgtd構成では/dev/sdd6
、ビルド時にターゲット:target0が関連付けられていました。再起動後、同じパーティションの名前が変更されます。/deb/sdc6
これは、リムーバブルディスク、USBまたはeSATAで発生します。では、新しいデバイスを自動的に見つける方法は?再び/etc/rc.d/rc.local
そのため、この場合、新しいデバイス名を見つけるための信頼できる方法が必要です。GPTパーティションは、GPTテーブルに記述されたGPTパーティションに一意のGUIDを提供します。
gdiskは、リストモードではこの情報を提供しませんが、iコマンドを使用した対話モードでのみ提供します。幸いなことに、blkidはそれを行います!
その/dev/sdXX
ため、パーティション作成時に通知されたGUIDに関連付けられているすべてのディスク(device )を調べるには、シェルスクリプトを記述する必要があります。
search_device_by_partUUID.shのようなもの:
\#!/bin/bash
PART_UUID=$1
if [ "$PART_UUID" = "" ]
then
echo "Syntax: $0 <a valid partition UUID>"
exit 3
fi
lsblk | grep '^sd' | awk '{print $1}' | while read DISK_DEVICE
do
INFO=`blkid /dev/${DISK_DEVICE}* | grep "PARTUUID=\"$PART_UUID\"" `
if [ "$INFO" != "" ]
then
echo INFO : "$INFO"
BLK_DEVICE=`echo "$INFO" | awk '{print $1}'`
echo $BLK_DEVICE > /dev/shm/blkdevice
echo -n "BLK_DEVICE : " ; cat /dev/shm/blkdevice
fi
done
そして/dev/shm/blkdevice
、rc.localスクリプトでを使用します。