2009-04-18 82 views
2

我想以编程方式挂载使用Fedora LiveUSB创建者创建的磁盘映像,并遇到一些问题。装载LVM覆盖/快照?

从我所知道的情况来看,在主机系统之外安装LVM快照非常困难。我拥有“原始”形象和持久性快照,所以我认为它应该在技术上可行。

任何想法?

+0

可能它会帮助添加更多的细节到你的问题。 – hlovdal 2009-04-18 21:31:42

+0

@ hlovdal, 我不确定还有什么要添加的。我只是试图在另一个系统上创建一个LVM快照。 – lfaraone 2009-04-19 15:34:17

回答

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

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

Fedora LiveOS image(Live CD/USB操作系统)技术使用设备映射程序快照目标在启动时创建可供读写安装的根文件系统的压缩只读副本,其中文件系统写入进入一个临时或永久的写入时复制叠加层。一切都通过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- <LABEL> - <UUID>
其中label和UUID是该设备分区标签和所报告的下面的命令UUID,
                lsblk -o LABEL,UUID

一个可以通过编程

  1. 环安装squashfs.img文件,然后
  2. 设置一个环装置用于安装1.
  3. 如果发现ext3fs.img文件有没有永久覆盖,您可以简单地从步骤2(只读,基本映像)安装
    ext3fs.img文件或循环设备。
  4. 如果存在持久覆盖文件,请为其设置循环设备。
  5. 确定在512字节扇区单位的根文件系统的大小,

    blockdev --getsz <basefs_loop>

  6. 然后设置一个设备映射快照目标与这种一般的命令,

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

  7. 最后,在所需的安装点上安装设备映射程序目标,

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