2009-04-18 28 views
2

J'essaye de monter par programme une image de disque créée avec le créateur de Fedora LiveUSB, et je rencontre quelques problèmes. D'après ce qu'on m'a dit, il est très difficile de monter des instantanés LVM en dehors du système hôte. J'ai à la fois l'image «vierge» et l'instantané persistant, alors j'ai pensé que cela devrait être techniquement possible.Monter des superpositions/snapshots LVM?

Des idées?

+0

Probablement, il sera utile d'ajouter plus de détails à votre question. – hlovdal

+0

@hlovdal, Je ne suis pas sûr de ce qu'il y a d'autre à ajouter. J'essaie simplement de monter un cliché LVM créé dans un système sur un autre. – lfaraone

Répondre

2

Le concept de volumes de LVM n'est pas portable sur tous les systèmes, dans le même sens que vous pouvez utiliser certains lecteurs de disque dur ensemble et ils fonctionneront toujours. Chaque vg LVM a un identifiant unique et vous devez obtenir le LVM de votre système pour l'accepter. En d'autres termes, LVM ne peut "voir" le groupe de volumes que lorsque vous le "dites" à propos de sa présence. Une fois que vous faites cela, il devrait être facile de naviguer à partir de là.

L'instantané est constitué de deltas de secteur enregistrés. Vous avez raison, vous devriez être en mesure d'obtenir votre instantané en affichant l'original et l'instantané. Un instantané en lui-même ne fonctionnera pas. Je suppose que vous envisagez de créer des scripts ensemble, car vous avez juste besoin du jeu d'outils lvm pour y arriver.

Un petit cadeau d'adieu pour vous aider sur votre chemin. Enregistrez-le sous/usr/sbin/lvms, définissez le propriétaire en tant que root/root, chmod 755 et utilisez-le pour enregistrer vos doigts.


#!/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

une chose, cependant. ce ne sont pas * des partitions LVM * réelles; ce sont juste des fichiers normaux sur une grosse partition. Une idée sur comment obtenir LVM pour les trouver alors? :) – lfaraone

+0

Vous utiliseriez un montage en boucle. Cela transforme un fichier en un "périphérique", puis vous utilisez une commande de montage standard pour atteindre le "périphérique". Très similaire aux fichiers OS X .dmg. Bien sûr, si vous pouvez en faire un "périphérique", il ne devrait pas y avoir de raison pour que LVM ne puisse pas identifier les configurations PV/BT. –

+0

BTW, espérons que le petit scripty était utile. Ce n'est pas un gros problème, mais je trouve qu'il est plus facile de travailler avec quand je peux voir tout le statut LVM devant moi. –

1

L'image du système d'exploitation dans une Fedora LiveCD ou LiveUSB peut être monté après avoir exposé le système de fichiers racine intégré. Le paquetage livecd-tools de Fedora fournit un utilitaire qui fait cela en utilisant Python. La technologie Fedora LiveOS image (Live CD/système d'exploitation USB) utilise la cible de capture instantanée Device-mapper pour créer une copie compressée en lecture seule du système de fichiers racine disponible pour le montage en lecture-écriture au démarrage, où les écritures de système de fichiers une superposition de copie-écriture instantanée ou persistante. Tout est accompli avec la commande dmsetup. LVM n'est pas impliqué (bien qu'il utilise également la technologie Device-mapper).

Un périphérique LiveOS installé aura un répertoire/LiveOS/dans son système de fichiers de base. Le fichier /LiveOS/squashfs.img contient un système de fichiers ext4 compressé (et en lecture seule) qui contient lui-même un répertoire/LiveOS/et le système de fichiers racine distribué dans un fichier nommé ext3fs.img. Ainsi, le fichier squashfs.img contient un répertoire et un fichier, /LiveOS/ext3fs.img, qui contient lui-même le système de fichiers racine (avec/bin,/boot,/dev,/etc,/home, ...).

S'il y a un fichier de surcouche permanente installée sur l'appareil, il sera enregistré comme
               /LiveOS/overlay- <LABEL>-<UUID>
où LABEL et UUID sont l'étiquette de partition de périphérique et l'UUID signalés par la commande suivante,
                  lsblk -o LABEL,UUID

On peut par programmation boucle

  1. monter le fichier squashfs.img, puis
  2. mis en place un dispositif de boucle pour le fichier ext3fs.img trouvé dans la montagne 1.
  3. Si n'est pas une superposition persistante, vous pouvez simplement monter le fichier ext3fs.img ou le périphérique en boucle de
    étape 2 (l'image de base en lecture seule).
  4. S'il existe un fichier de recouvrement persistant, configurez un périphérique de boucle pour celui-ci.
  5. Déterminer la taille du système de fichiers racine en unités de secteurs de 512 octets,

    blockdev --getsz <basefs_loop>

  6. Ensuite, la configuration d'une cible de copie instantanée Device-mapper avec cette commande générale,

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

  7. Enfin, montez la cible Device-mapper sur un point de montage souhaité,

    mount /dev/mapper/<target_name> <mount point>