2009-04-18 24 views
2

Ich versuche, ein mit dem Fedora LiveUSB-Ersteller erstelltes Disk-Image programmatisch zu mounten, und ich stoße auf einige Probleme.Mount LVM-Overlays/Schnappschüsse?

Von dem, was mir gesagt wurde, ist es sehr schwierig, LVM-Snapshots außerhalb des Host-Systems zu mounten. Ich habe sowohl das "makellose" Bild als auch den hartnäckigen Schnappschuss, also dachte ich, dass es technisch möglich sein sollte.

Irgendwelche Ideen?

+0

Wahrscheinlich wird es helfen, mehr Details zu Ihrer Frage hinzuzufügen. – hlovdal

+0

@hlovdal, Ich bin mir nicht sicher, was sonst noch hinzuzufügen ist. Ich versuche einfach, einen LVM-Snapshot, der in einem System erstellt wurde, auf einem anderen zu mounten. – lfaraone

Antwort

2

LVMs Konzept der Volumes ist nicht portable über Systeme in dem Sinne, dass Sie einige MD-Laufwerke zusammenschlagen können und sie werden immer noch funktionieren. Jeder LVM vg hat eine eindeutige Kennung und Sie müssen den LVM Ihres Systems dazu bringen, ihn zu akzeptieren. Mit anderen Worten, LVM kann die Datenträgergruppe nicht "sehen", bis Sie sie über ihre Anwesenheit "erzählen". Sobald Sie das tun, sollte es von dort reibungslos segeln.

Der Snapshot besteht aus aufgezeichneten Sektordeltas. Sie haben Recht, Sie sollten in der Lage sein, Ihren Snapshot zu erhalten, indem Sie sowohl das Original als auch den Snapshot präsentieren. Ein Snapshot allein funktioniert nicht.

Ich gehe davon aus, dass Sie scripting zusammen betrachten, weil Sie nur das LVM-Toolset benötigen, um dies zu ermöglichen.

Ein kleines Abschiedsgeschenk, um Ihnen auf Ihrem Weg zu helfen. Speichern Sie es als/usr/sbin/lvms, setzen Sie den Besitzer als root/root, chmod 755, und verwenden Sie es, um Ihre Fingerspitzen zu speichern.


#!/bin/sh 
#lvms command - consolidates all LVM views into a single command 
pvscan 1>/dev/null 2>/dev/null 
vgscan 1>/dev/null 2>/dev/null 
lvscan 1>/dev/null 2>/dev/null 
echo "Available Physical Volumes - - - - - - -" 
pvs 
echo 
echo "Active Volume Groups - - - - - - - - - -" 
vgs 
echo 
echo "Active Logical Volumes - - - - - - - - -" 
lvs 
+0

eine Sache, obwohl. Dies sind keine * tatsächlichen * LVM-Partitionen; es sind nur normale Dateien auf einer fetten Partition. Haben Sie eine Idee, wie LVM sie dann finden kann? :) – lfaraone

+0

Sie würden eine Loopback-Halterung verwenden. Dies verwandelt eine Datei in ein "Gerät", dann verwenden Sie einen regulären Mount-Befehl, um das "Gerät" zu erreichen. Sehr ähnlich wie OS X .dmg-Dateien. Natürlich, wenn Sie es zu einem "Gerät" machen können, sollte es keinen Grund geben, warum Sie LVM nicht dazu bringen können, die PV/LV-Setups darauf zu identifizieren. –

+0

Übrigens, ich hoffe, die kleine Scripty war nützlich. Es ist keine große Sache, aber ich finde es einfacher zu arbeiten, wenn ich den gesamten LVM-Status vor mir sehen kann. –

1

das Betriebssystemabbild in einem Fedora Live-CD oder LiveUSB kann nach der Belichtung des eingebetteten Root-Dateisystem montiert werden. Fedora's Paket livecd-tools bietet ein Dienstprogramm liveimage-mount, das dies mit Python macht. Die Fedora LiveOS image (Live CD/USB-Betriebssystem) -Technologie verwendet das Device-Mapper-Snapshot-Ziel, um eine komprimierte, schreibgeschützte Kopie des Root-Dateisystems für den Lese-/Schreib-Mounting beim Systemstart bereitzustellen, in den Dateisystemschreibvorgänge eintreten ein temporäres oder persistentes Copy-on-Write-Overlay. Alles wird mit dem Befehl dmsetup erreicht. LVM ist nicht beteiligt (obwohl es auch Device-Mapper-Technologie verwendet).

Ein installiertes LiveOS-Gerät hat ein/LiveOS/-Verzeichnis im Basis-Dateisystem. Die Datei /LiveOS/squashfs.img enthält ein komprimiertes (und schreibgeschütztes) ext4-Dateisystem, das selbst ein/LiveOS/-Verzeichnis und darin das verteilte Root-Dateisystem in einer Datei namens ext3fs.img enthält. Die Datei squashfs.img enthält also ein Verzeichnis und eine Datei, /LiveOS/ext3fs.img, die selbst das Root-Dateisystem enthält (mit/bin,/boot,/dev,/etc,/home, ...).

Wenn eine persistente Overlay-Datei auf dem Gerät installiert ist, wird es als
               /LiveOS/Overlay- <LABEL> speicherbar - <UUID>
wo LABEL und UUID sind die Gerätepartitionskennzeichnung und die UUID wie im folgenden Befehl gemeldet:
              lsblk -o LABEL,UUID

Man kann programmatisch

  1. Schleife die squashfs.img Datei montieren, dann
  2. eine Schleifeneinrichtung für die ext3fs.img Datei in Mount gefunden aufgebaut 1.
  3. Bei ist keine persistente Überlagerung, Sie können einfach die ext3fs.img Datei oder Loop-Gerät von
    Schritt 2 (das schreibgeschützte, Basisbild) mounten.
  4. Wenn es eine persistente Overlay-Datei gibt, richten Sie ein Loop-Gerät dafür ein.
  5. Bestimmen der Größe des Root-Dateisystem in Einheiten von 512-Byte-Sektoren,

    blockdev --getsz <basefs_loop>

  6. Dann Einrichten eines Device-mapper Snapshot-Ziel mit dieser allgemeinen Befehl

    dmsetup create <target_name> --table "0 <size> snapshot <basefs_loop> <overlay_loop> P 8"

  7. Montieren Sie das Device-Mapper-Ziel schließlich an einem gewünschten Einhängepunkt,