Как смонтировать образ сжатого диска?

10

Если я создаю образ диска и сжимаю , то с помощью gzip / xz / etc есть способ его непосредственного монтирования без предварительного разжатия?

Скажем, я использовал

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

как смонтировать исходное изображение, не создавая сначала несжатую копию?

Или я использовал

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

и диск имеет несколько разделов, это сделает его сложнее?

С несжатым изображением целого диска, используя kpartx или более новые версии losetup с флагом -P , должен создать цикл для каждого раздела.

Но есть ли способ монтировать / losetup / читать сжатое изображение?

Если это не будет работать для gzip / xz, существует ли какой-либо метод сжатия, для которого это могло бы работать?

Примечание по дублированию Q

Предлагаемый дубликат

  • Установите отдельный раздел из образа всего диска (устройства) , будучи отличным полезным Q

НЕ ИСПОЛЬЗУЕТ СЖАТИЕ , а НЕ ДУБЛИРОВАТЬ .

mount не будет монтировать сжатый образ сам по себе.

    
задан Xen2050 12.10.2016 в 19:41
источник

3 ответа

1

Мне удалось заставить NBD-сервер «обслуживать» несжатую версию файла .gz или .xz. Я не уверен, что он очень часто читает весь сжатый файл (до сих пор тестировался только с небольшими файлами в ram), но, по крайней мере, он работает без необходимости извлекать всю несжатую копию.

Просмотр gz / xz сжатого dd-изображения «на лету»

  1. Установить nbdkit & amp; клиент

    apt install nbdkit nbd-client
    
  2. Создать демонстрационный файл стиля «dd» - пустой файл 50M с файловой системой ext & amp; zip it (необязательно только для тестирования)

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

    Затем сжимайте либо gzip, либо xz

    gzip -vk9 50m
    xz -v9k 50m
    

    Примечание. Опция xz --block-size=16MiB должна обеспечивать лучшую производительность произвольного доступа, но за счет меньшего сжатия (возможно, 1%?). См. описание плагина nbdkit xz .

  3. Запустить сервер на COMPRESSED изображении

    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 сообщает серверу «Не форкировать в фоновом режиме» , чтобы видеть возможные сообщения об ошибках и amp; убить его с помощью CTRL-C немного проще.

    -v может / будет отображать слишком много сообщений о состоянии, особенно при чтении.

  4. Запустить клиент (в другом терминале / окне)

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

    -nofork похоже на -no-fork выше, но я мог not убить клиента с помощью CTRL-C, kill <pid> или sudo kill <pid> . Завершение работы сервера с помощью CTRL-C остановило сервер и amp; клиент.

  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 или используйте kpartx , partprobe , vgscan / vgchange и т. д.

Cristian Ciupitu on Unix & amp; Linux , хотя для получения плагина и amp; все вместе.

    
ответ дан Xen2050 11.12.2016 в 11:50
источник
5

Вы можете использовать squashfs для сжатия образов дисков, а затем смонтировать их.

Создание образа диска

Если у вас еще нет образа диска, используйте dd , чтобы создать его:

dd if=/dev/sda1 of=/tmp/sda1.img bs=4M

Сжатие изображения с помощью squashfs

Установите squashfs :

apt-get install squashfs-tools

Сжатие изображения:

mksquashfs /tmp/sda1.img /tmp/sda1.squash.img

Или Поток сжатия (не требуется временный файл dd)

mkdir empty-dir
mksquashfs empty-dir squash.img -p 'sda_backup.img f 444 root root dd if=/dev/sda bs=4M'

Комплименты terminator14 на UbuntuForums.org . Определения / Пояснение:

  • empty-dir - директория "source". В основном, в нашем случае, просто пустой каталог, удовлетворяющий формату входного файла mksquashfs
  • squash.img - назначение и имя файла выходных файлов squashfs
  • sda_backup.img - имя резервной копии dd Вставить файл squashfs
  • f - указывает, что sda_backup.img является обычным файлом (в отличие от каталога, блочного устройства или устройства char).
  • 444 - разрешения файла sda_backup.img внутри изображения squashfs
  • root root - UID и GID для файла sda_backup.img внутри изображения squashfs. Может указываться десятичными числами или по имени
  • dd if=/dev/sda bs=4M - команда dd, используемая для чтения устройства, которое мы хотим скопировать.

Смонтируйте изображение

Сначала установите изображение squashfs :

mkdir /mnt/squash
mount /tmp/sda1.squash.img /mnt/squash

Здесь будет показано изображение без сжатого диска для установки:

mkdir /mnt/sda1
mount /mnt/squash/sda1.img /mnt/sda1

Или, если это образ полного диска (секционированный), вы можете использовать losetup для присоединения dd-изображения к устройству loop (возможно, необязательно), а затем kpartx -a или partprobe , чтобы найти & amp; разделяйте разделы на отдельные устройства или даже vgscan / vgchange -ay , если есть LVM.

    
ответ дан Eborbob 09.11.2016 в 13:05
0

Вот мой способ сделать это, не знаю консольный эквивалент этого, но

  • Сжатие папки в iso.
  • Установите файл .iso с Disk Image Mounter .
  • Tada Я открываю сжатый iso без его распаковки.
ответ дан Kuntal Majumder 22.10.2016 в 06:07