无法挂载 LVM 快照卷

无法挂载 LVM 快照卷

我有一个逻辑卷,用作虚拟客户操作系统的文件系统。我对客户操作系统的状态很满意,想对其进行备份。我使用创建了一个快照,并lvcreate尝试安装该快照,以便我可以打包数据进行备份。

真正奇怪的是,我根本无法安装 LVM 快照。

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

使用-tmount 参数我尝试了 ext3 和 ext4 作为文件系统类型,但在每种情况下我都收到以下错误:

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

lvs以下是快照卷的输出:

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

我需要向 mount 提供哪些正确的参数才能挂载 LVM 快照?还有其他方法可以确定快照的文件系统类型吗?不管怎样,我让 RedHat KVM virt-manager GUI 工具创建卷。

编辑 根据要求提供更多信息。

输出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

lvdisplay相关卷的输出

--- 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

dd以下评论建议的命令输出:

# 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

答案1

由于我对 kvm 了解不多,我猜想该分区是一个完整的磁盘映像。如果是这样,您应该会得到一个有意义的分区表,如下所示:

fdisk -l /dev/guest_images_lvm/cvfunc_vol1

如果是这种情况,您需要按照本文建议的方式进行操作:http://www.andremiller.net/content/mounting-hard-disk-image- including-partitions-using-linux

如果它确实只是一个分区,fdisk 会发出如下抱怨:

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.

编辑:按照 Andre 的建议使用 -l 选项,以减少未来读者的悲伤。

答案2

逻辑卷中包含什么文件系统?使用 查找dd if=/dev/SOMETHING bs=1024 count=1 | file -

逻辑卷是否包含 XFS 文件系统?XFS 文件系统具有唯一标识符,并且 Linux 不会两次挂载“相同”的文件系统,除非您mount -o nouuid在快照上使用。

答案3

该 LVM 分区已被客户机用作磁盘。它在该磁盘上创建了一个或多个分区。您要做的就是提取这些分区信息并将其提供给主机系统。

最简单的方法是使用losetupLVM:

losetup /dev/loop0 /dev/guest_images_lvm/cvfunc_vol1_ss

并告诉你的 Linux 内核这些分区:

partx -a /dev/loop0

安装:

mount  /dev/loop0 /mnt/vm

再次清理:

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

为什么不能直接在 LVM 中添加分区,而需要通过 执行额外步骤losetup?因为您当然可以在 LVM 上列出分区,而且操作相同:

% 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      

原因是 LVM 由dm设备管理器进行管理,并且肯定不会有人告诉它分区设置有错误。

相关内容