挂载LVM覆盖/快照?

时间:2009-04-18 19:16:51

标签: fedora snapshot lvm device-mapper

我正在尝试以编程方式安装使用Fedora LiveUSB创建者创建的磁盘映像,我遇到了一些问题。

据我所知,在主机系统之外安装LVM快照非常困难。我有“原始”图像和持久快照,所以我认为它应该在技术上可行。

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

LVM的卷概念在整个系统中是不可移植的,就像你可以把一些md驱动器打在一起一样,它们仍然有效。每个LVM vg都有一个唯一的标识符,您需要让系统的LVM接受它。换句话说,LVM无法“看到”卷组,直到您“告诉”它的存在。一旦你这样做,它应该从那里顺利航行。

快照由记录的扇区增量组成。您是对的,您应该能够通过同时显示原始快照和快照来显示快照。快照本身不起作用。

我假设您正在考虑将这些脚本编写在一起,因为您只需要lvm工具集来实现此目的。

一份小小的礼物可以帮助你。将其保存为/ usr / sbin / lvms,将所有者设置为root / root,chmod 755,并使用它来保存指尖。


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

答案 1 :(得分:1)

Fedora LiveCD或LiveUSB中的操作系统映像可以在暴露嵌入的根文件系统后安装。 Fedora的livecd-tools包提供了一个实用程序liveimage-mount,可以使用Python来实现这一点。

Fedora LiveOS image(Live CD / USB操作系统)技术使用Device-mapper快照目标在启动时制作可用于读写安装的根文件系统的压缩只读副本,其中文件系统写入临时或持久的写时复制覆盖。一切都是通过dmsetup命令完成的。不涉及LVM(尽管它也使用Device-mapper技术)。

LiveOS安装的设备将在其基本文件系统中包含/ LiveOS /目录。 /LiveOS/squashfs.img文件包含一个压缩(和只读)ext4文件系统,该文件系统本身包含一个/ LiveOS /目录,其中包含名为ext3fs.img的文件中的分布式根文件系统。因此,squashfs.img文件包含一个目录和文件/LiveOS/ext3fs.img,它本身包含根文件系统(使用/ bin,/ boot,/ dev,/ etc,/ home,...)。

如果设备上安装了持久性覆盖文件,它将保存为
/ LiveOS / overlay-<标签> - < UUID>
其中LABEL和UUID是设备分区标签和UUID,由以下命令报告,
 lsblk -o LABEL,UUID

可以通过编程方式

  1. 循环安装squashfs.img文件,然后
  2. 为mount 1中的ext3fs.img文件设置循环设备。
  3. 如果没有持久性叠加,您可以直接从中挂载ext3fs.img文件或循环设备 第2步(只读,基本图像)。
  4. 如果存在持久性覆盖文件,请为其设置循环设备。
  5. 以512字节扇区为单位确定根文件系统的大小,

    blockdev --getsz <basefs_loop>

  6. 然后使用此常规命令

    设置Device-mapper快照目标

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

  7. 最后,将Device-mapper目标安装在所需的安装点上,

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