如何挂载压缩磁盘映像?

Xen2050

如果我制作磁盘映像并用gzip / xz / etc压缩,有没有一种方法可以直接挂载它而无需先将其解压缩?

说我用过

sudo dd if=/dev/sdc1 | gzip -9 > image1.dd.gz

如何挂载原始映像,而无需先创建未压缩的副本?

或者我已经用过

sudo dd if=/dev/sdc | gzip -9 > wholedisk.dd.gz

并且磁盘具有多个分区,这会使它变得更难吗?

对于整个磁盘的未压缩映像,则使用kpartxlosetup带有其-P标志的较新版本应为每个分区创建一个循环。

但是有没有办法挂载/设置/读取压缩的图像?

如果它不适用于gzip / xz,是否有任何适用的压缩方法?


注意重复的Q

目前建议的副本

不使用压缩也不是重复的

mount 不会自行装载压缩的映像。

Xen2050

我能够获得NBD服务器来“提供” .gz或.xz文件的未压缩版本。我不确定它是否必须非常频繁地读取整个压缩文件(到目前为止,仅使用ram中的小文件进行了测试),但是至少它可以工作而不必提取整个未压缩的副本。

即时查看gz / xz压缩的dd图像

  1. 安装nbdkit和客户端

    apt install nbdkit nbd-client
    
  2. 创建演示“ dd”样式文件-具有ext文件系统的空50M文件并压缩(仅用于测试)

    fallocate -l 50M 50m
    mkfs.ext3 -v 50m
    

    然后使用gzip或xz压缩

    gzip -vk9 50m
    xz -v9k 50m
    

    注意:的xz选项--block-size=16MiB应该可以提供更好的随机访问性能,但是要以减少压缩(可能为1%?)为代价。请参阅nbdkit的xz插件说明

  3. 在压缩映像上运行服务器

    nbdkit -v --no-fork -i 127.0.0.1 /usr/lib/i386-linux-gnu/nbdkit/plugins/nbdkit-gzip-plugin.so file=~/Downloads/50m.gz
    

    或对于xz

    nbdkit -v --no-fork -i 127.0.0.1 /usr/lib/i386-linux-gnu/nbdkit/plugins/nbdkit-xz-plugin.so file=~/Downloads/50m.xz
    

    该命令--no-fork告诉服务器“不要在后台派生”,因此查看可能的错误消息并使用CTRL-C杀死它要容易一些。

    -v 可能/将显示太多状态消息,尤其是在阅读时。

  4. 运行客户端(在另一个终端/窗口中)

    sudo nbd-client -nofork 127.0.0.1 10809 /dev/nbd0
    

    -nofork类似于-no-fork以上,但我可以使用CTRL-C杀掉客户端,kill <pid>sudo kill <pid>使用CTRL-C结束服务器将同时停止服务器和客户端。

  5. 观察到/dev/nbd0现在与UN-COMPRESSED图像相同

    $ sudo diff -s /dev/nbd0 ~/Downloads/50m
    Files /dev/nbd0 and /home/user/Downloads/50m are identical
    

    /dev/nbd0现在可以像未压缩的图像一样使用;安装,读/复制dd或使用kpartxpartprobevgscan/ vgchange,等等!

多亏了Unix&Linux上的Cristian Ciupitu,尽管花了更多的时间才能找到该插件并将所有内容组合在一起。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何挂载压缩磁盘映像?

来自分类Dev

如何挂载该磁盘映像?

来自分类Dev

如何同时从磁盘映像挂载多个分区?

来自分类Dev

如何从磁盘映像挂载Veracrypt卷

来自分类Dev

如何挂载qcow2磁盘映像?

来自分类Dev

如何在 USB 上挂载磁盘映像

来自分类Dev

无法挂载磁盘映像

来自分类Dev

如何挂载具有复杂分区结构的原始磁盘映像?

来自分类Dev

以原始格式挂载磁盘映像

来自分类Dev

以原始格式挂载磁盘映像

来自分类Dev

Linux上的压缩磁盘映像

来自分类Dev

GUI在Xubuntu中挂载磁盘映像(ISO等)?

来自分类Dev

从整个磁盘(设备)的映像挂载单个分区

来自分类Dev

从整个磁盘(设备)的映像挂载单个分区

来自分类Dev

GUI在Xubuntu中挂载磁盘映像(ISO等)?

来自分类Dev

挂载由ddrescue拯救的完整磁盘映像

来自分类Dev

以原始格式挂载拆分磁盘映像

来自分类Dev

无法提取并挂载gzip压缩分区映像

来自分类Dev

如何从磁盘挂载分区

来自分类Dev

如何在Windows下创建加密的可挂载读/写磁盘映像?

来自分类Dev

如何在Windows 8.1或Ubuntu上挂载和编辑Android磁盘映像文件

来自分类Dev

如何挂载以UFS文件系统格式化的整个磁盘映像

来自分类Dev

如何检查磁盘映像

来自分类Dev

如何使用单个命令将磁盘映像解压缩并添加到SD卡?

来自分类Dev

通过网络挂载大磁盘映像,最终断开连接

来自分类Dev

在Windows或Linux上挂载Mac磁盘映像(和稀疏包)

来自分类Dev

动态磁盘映像如何工作?

来自分类Dev

是否可以即时挂载gzip压缩的dd映像?

来自分类Dev

在Linux上通过网络实时压缩制作磁盘映像