LVM-Snapshot-Volume kann nicht bereitgestellt werden

8

Ich habe ein logisches Volume, das als Dateisystem für ein virtuelles Gastbetriebssystem dient. Ich bin mit dem Status meines Gastbetriebssystems zufrieden und möchte ein Backup davon erstellen. Ich habe einen Snapshot mit erstellt lvcreateund versuche, den Snapshot bereitzustellen, damit ich die Daten für die Sicherung tarieren kann.

Was wirklich seltsam ist, ist, dass ich den LVM-Snapshot absolut nicht mounten kann.

$> mount /dev/guest_images_lvm/cvfunc_vol1_ss /mnt/ops/backup/
mount: you must specify the filesystem type

Mit dem -tParameter mount habe ich ext3 und ext4 für den Dateisystemtyp ausprobiert, aber in jedem Fall erhalte ich den folgenden Fehler:

mount: wrong fs type, bad option, bad superblock on /dev/mapper/guest_images_lvm-cvfunc_vol1

Hier ist die Ausgabe lvsfür das Snapshot-Volume:

LV             VG                  Attr   LSize  Origin      Snap%  Move Log Copy%  Convert
cvfunc_vol1_ss guest_images_lvm    swi-a-  1.00g cvfunc_vol1   0.00

Was sind die richtigen Parameter, die ich zum Mounten angeben muss, um den LVM-Snapshot zu mounten? Gibt es eine andere Möglichkeit, den Dateisystemtyp des Snapshots zu bestimmen? Für das, was es wert ist, lasse ich das RedHat KVM Virt-Manager-GUI-Tool das Volume erstellen.

BEARBEITEN Weitere Informationen wie gewünscht.

Ausgabe von lvs

LV             VG                  Attr   LSize  Origin      Snap%  Move Log Copy%       Convert
cvfunc_vol1    guest_images_lvm    owi-a- 20.00g                                           
cvfunc_vol1_ss guest_images_lvm    swi-a-  1.00g cvfunc_vol1   0.00                        
cvfunc_vol2    guest_images_lvm    -wi-ao 20.00g                                           
lv_home        vg_softrekcvdev0100 -wi-ao 25.68g                                           
lv_root        vg_softrekcvdev0100 -wi-ao 32.34g                                           
lv_swap        vg_softrekcvdev0100 -wi-ao  9.81g

Ausgabe von lvdisplayfür das betreffende Volumen

--- Logical volume ---
LV Name                /dev/guest_images_lvm/cvfunc_vol1_ss
VG Name                guest_images_lvm
LV UUID                YA4m5i-yf7R-hO95-gb0F-iXqQ-PQjU-tXhAp0
LV Write Access        read/write
LV snapshot status     active destination for /dev/guest_images_lvm/cvfunc_vol1
LV Status              available
# open                 0
LV Size                20.00 GiB
Current LE             5120
COW-table size         1.00 GiB
COW-table LE           256
Allocated to snapshot  0.00% 
Snapshot chunk size    4.00 KiB
Segments               1
Allocation             inherit
Read ahead sectors     auto
- currently set to     256
Block device           253:5

Ausgabe des ddBefehls durch Kommentar unten vorgeschlagen:

# dd if=/dev/guest_images_lvm/cvfunc_vol1_ss bs=1024 count=1 | file -
1+0 records in
1+0 records out
1024 bytes (1.0 kB) copied, 1.6909e-05 s, 60.6 MB/s
/dev/stdin: x86 boot sector; GRand Unified Bootloader, stage1 version 0x3, boot drive 0x80, 1st sector stage2 0x19041; partition 1: ID=0x83, active, starthead 1, startsector 63, 208782 sectors; partition 2: ID=0x8e, starthead 0, startsector 208845, 41720805 sectors, code offset 0x48
Andre
quelle
Versuche zu rennen blkid /dev/guest_images_lvm/cvfunc_vol1.
Zoredache
1
Vermutlich ist cvfunc_vol1 ein Disk-Image, keine Partition. Siehe zB andremiller.net/content/…
Bittrance
@Zoredache Ich habe diesen Befehl ausgeführt und er ist gerade ohne Ausgabe zur Eingabeaufforderung zurückgekehrt. Ich habe es auch mit -c / dev / null ausgeführt und das gleiche (leere) Ergebnis erhalten.
Andre
Hrm, ich bin versucht zu glauben, dass Sie Ihren Schnappschuss falsch erstellt haben oder so. Welchen Befehl haben Sie ausgeführt? Vielleicht die volle Ausgabe von lvs / vgdisplay bereitstellen?
Zoredache
@ Zoredachelvcreate -L1G -s -n cvfunc_vol1_ss /dev/guest_images_lvm/cvfunc_vol1
Andre

Antworten:

6

Mit der Einschränkung, dass ich nicht viel über kvm weiß, würde ich vermuten, dass die Partition ein vollständiges Disk-Image ist. In diesem Fall sollten Sie eine aussagekräftige Partitionstabelle erhalten, wenn Sie Folgendes tun:

fdisk -l /dev/guest_images_lvm/cvfunc_vol1

Wenn dies der Fall ist, müssen Sie etwas tun, wie in diesem Artikel vorgeschlagen: http://www.andremiller.net/content/mounting-hard-disk-image-including-partitions-using-linux

Wenn es sich tatsächlich nur um eine Partition handelt, beschwert sich fdisk wie folgt:

Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0xe3a5124c.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.

BEARBEITEN: Verwenden Sie die Optionen -l gemäß Andres Vorschlag, um die Trauer zukünftiger Leser zu verringern.

Bittrance
quelle
Sie befinden sich möglicherweise auf etwas, so sehr, dass mein Schnappschuss laut fdisk zwei Partitionen enthält. Ich bin mir nicht sicher, ob das normal ist oder nicht ...
Andre
5

Welches Dateisystem ist im logischen Volume enthalten? Finden Sie es heraus mit dd if=/dev/SOMETHING bs=1024 count=1 | file -.

Enthält das logische Volume ein XFS-Dateisystem? XFS-Dateisysteme haben eindeutige Bezeichner, und Linux kann das "gleiche" Dateisystem nicht zweimal bereitstellen, es sei denn, Sie verwenden es mount -o nouuidfür den Snapshot.

200_Erfolg
quelle
Ich habe meinen ursprünglichen Beitrag mit der Ausgabe des ddBefehls bearbeitet, wie Sie vorgeschlagen haben. Ich weiß nicht, ob es sich um XFS handelt. Leider habe ich den Fehler gemacht, dass ein RHEL-Tool das Volume erstellt und formatiert.
Andre
Ich denke, @Bittrance hat dann die richtige Antwort.
200_erfolg
dmesg beschwert sich nicht über doppelte XFS-UUIDs, was es wert ist.
Andre
1

Diese LVM-Partition wurde vom Gast als Datenträger verwendet. Auf dieser Festplatte wurden eine oder mehrere Partitionen erstellt. Sie möchten diese Partitionsinformationen extrahieren und Ihrem Hostsystem zur Verfügung stellen.

Der einfachste Weg, dies zu tun, ist losetupdas LVM:

losetup /dev/loop0 /dev/guest_images_lvm/cvfunc_vol1_ss

Und erzählen Sie Ihrem Linux-Kernel von diesen Partitons:

partx -a /dev/loop0

Montieren:

mount  /dev/loop0 /mnt/vm

So bereinigen Sie erneut:

umount /mnt/vm
partx -d /dev/loop0p*
losetup -d /dev/loop0

Warum können Sie nicht einfach die Partitionen aus dem LVM hinzufügen und müssen den zusätzlichen Schritt über losetupausführen? Da Sie sicherlich die Partitionen auf dem LVM auflisten können, wird es das gleiche sein:

% sudo losetup -a
/dev/loop0: [0005]:19633989 (/dev/mapper/vg0-mail01--root)
 % sudo partx -s /dev/loop0 ; sudo partx -s /dev/vg0/mail01-root
NR START      END  SECTORS SIZE NAME UUID
 1  2048 20969471 20967424  10G      
NR START      END  SECTORS SIZE NAME UUID
 1  2048 20969471 20967424  10G      

Der Grund dafür ist, dass LVM vom dmGeräte-Manager verwaltet wird und sicher niemand sagen kann, dass das Partitions-Setup falsch ist.

Igor Galić
quelle