Ich habe das gleiche Problem wie Sie: Umbenennen /dev/sd**
nach einem Neustart durch Kernel :
Natürlich werden alle meine automatischen Einhängepunkte /etc/fstab
von LABEL oder von UUID referenziert, daher gibt es im Grunde kein Problem dafür. Und alle obigen Befehle, blkid oder lsblk, geben diese Art von Informationen.
Aber das Problem beginnt wie in meinem Fall, wenn Sie die Partition im RAW-Modus verwenden, und zwar aus der Sicht des aktuell gebooteten Systems: Zum Beispiel: Die Partition wird als Raw-Gerät verwendet, um eine virtuelle Festplatte für VirtualBox zu erstellen (so der Verweis auf diese Partition ist so etwas wie: /dev/sdf3
) oder die Partition als raw Device verwendet wird , eine LUN für iSCSI zu machen (so der Hinweis auf diese Partition ist so etwas wie: /dev/sdc6
)
Also müssen Sie jetzt beim Booten, zum Beispiel in rc.local, auf zuverlässige Weise herausfinden, auf welchem /dev/sdXX
Gerät sich Ihre dedizierte RAW-Partition befindet, und eine Datei anpassen:
BEISPIEL 1
Die VirtualBox-Festplatte * .vmk-Beschreibung dieser Raw-Festplatte, im Teil ungefähr so:
\# Extent description
RW 488397167 FLAT "/dev/sdXX" 0
Starten Sie anschließend den VirtualBox-Dienst neu
BEISPIEL 2
In der Konfiguration tgtd wurde zum /dev/sdd6
Zeitpunkt der Erstellung ein target: target0 zugeordnet . Nach dem Neustart erhalten Sie die gleiche Partition umbenannt /deb/sdc6
Dies geschieht mit einem Wechseldatenträger, USB oder eSATA! Wie findet man das neue Gerät automatisch? Wieder in /etc/rc.d/rc.local
In diesem Fall benötigen wir also eine zuverlässige Methode, um den neuen Gerätenamen zu ermitteln. Die GPT-Partition bietet eine eindeutige GUID für jede GPT-Partition, die in einer GPT-Tabelle geschrieben ist.
gdisk stellt diese Informationen nicht im Listenmodus zur Verfügung, sondern nur im interaktiven Modus mit: i Befehl. Zum Glück macht es blkid!
Sie müssen also ein Shell-Skript schreiben, um alle Ihre Festplatten /dev/sdXX
zu durchsuchen, dh das Gerät , das der GUID zugeordnet ist, die beim Erstellen der Partition festgestellt wurde.
So etwas wie 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
und benutze dann /dev/shm/blkdevice
, in deinem rc.local Skript.