Erkennen und Mounten aller Dateisysteme auf allen Laufwerken (einschließlich LVM)

1

Ich habe eine Live-CD, die ich erstelle und auf alle physisch angeschlossenen Festplatten eines Computers zugreifen kann. Es gibt keinen Benutzereingriff, und ich muss alle Laufwerke finden und einhängen, die eingehängt werden können. Ich muss auch in der Lage sein zu handhaben, ob die Datenträger oder Datenträger LVM verwenden oder nicht und jede Volume-Gruppe einhängen.

bpedman
quelle

Antworten:

1

Hier ist das, worauf ich gekommen bin, um alle verfügbaren Festplatten zu finden und einzubinden. In diesem Skript werden auch alle fehlgeschlagenen Reittiere nachverfolgt (die ich auch in meiner Situation benötigt habe, nicht Teil der Frage, aber für andere nützlich sein könnte).

Hier scanne ich alle Partitionen ein /proc/partitions und versuchen, jede Partition zu mounten, die ich finde. LVM-Partitionen werden nach dem Scannen und Aktivieren in dieser Datei aufgeführt.

# Scan for all volume groups
lvscan
# Activate all volume groups
vgchange -a y

# Get all partitions (-n+3 skips first 3 lines since they do not contain partitions)
# Also skip partitions that are loop devices which is actually the ISO cd itself
all_partitions=$(tail -n+3 /proc/partitions | awk '{print $4}' | grep -v loop)

# Array of failed mounts
declare -a failed_mounts=()

# Mount each partition to /mnt/{partition name}
for partition in ${all_partitions}; do
    mountdir=/mnt/${partition}
    mkdir -p ${mountdir}
    mount /dev/${partition} ${mountdir} &>>${INIT_LOG}
    if [ $? -ne 0 ]; then
        echo "Failed to mount ${partition}"
        rm -rf ${mountdir}
        failed_mounts+=(${partition})
    fi
done

Dies kann abhängig von der Distribution sein oder auch nicht, aber da ich dies in eine Live-CD einbaue, muss sie nicht unabhängig von der Distribution sein.

bpedman
quelle
0

Nur der LVM-Teil

Aktivieren Sie zuerst alle Volume-Gruppen:

vgchange -a y

Dann

lvdisplay -c | sed -e 's/  //; s/:.*//'

sollte Ihnen eine Liste der aktivierten LVM-Volumes geben. Sie sollten von der Form sein /dev/VGNAME/LVNAMEJetzt können Sie damit Mountpunkte nach Belieben erstellen.

quazgar
quelle
Danke aber das ist eine etwas unvollständige Antwort. Ich muss auch in der Lage sein, herauszufinden, welche Festplatten möglich sind.
bpedman
edit: Welche anderen Festplatten gibt es beispielsweise, die nicht notwendigerweise LVM verwenden, die ich auch mounten muss?
bpedman