Если я создаю образ диска и сжимаю его с помощью 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
флагом должны создать цикл для каждого раздела.
Но есть ли способ смонтировать / losttup / прочитать сжатый образ?
Если это не сработает для gzip / xz, есть ли какой-нибудь метод сжатия, который бы сработал?
Обратите внимание на дубликат Q
В настоящее время предлагается дубликат
- Монтировать один раздел из образа всего диска (устройства) , оставаясь при этом очень полезным Q
НЕ ИСПОЛЬЗУЕТ СЖАТИЕ и НЕ ДУБЛИРУЕТ .
mount
не будет монтировать сжатый образ сам по себе.
partitioning
mount
backup
dd
disk-image
Xen2050
источник
источник
Ответы:
Вы можете использовать
squashfs
для сжатия образов дисков, а затем смонтировать их.Создать образ диска
Если у вас еще нет образа диска, используйте его
dd
для создания:Сожмите изображение с помощью squashfs
Установить
squashfs
:Сожмите изображение:
Или потоковое сжатие (не нужен временный файл dd)
Дополнения к terminator14 на UbuntuForums.org . Определения / Пояснение:
empty-dir
- «источник» реж. В основном, в нашем случае, просто пустой каталог, чтобы удовлетворить формат входного аргумента mksquashfssquash.img
- назначение и имя файла выходного файла squashfssda_backup.img
- имя резервной копии dd ВНУТРИ файла squashfsf
- указывает, что sda_backup.img является обычным файлом (в отличие от каталога, блочного устройства или устройства char)444
- права доступа к файлу sda_backup.img внутри образа squashfsroot root
- UID и GID для файла sda_backup.img внутри образа squashfs. Может быть указан десятичными числами или по имениdd if=/dev/sda bs=4M
- команда dd, используемая для чтения устройства, для которого мы хотим создать резервную копиюСмонтировать изображение
Сначала смонтируйте
squashfs
образ:Это предоставит несжатый образ диска для монтирования:
Или, если это полный образ диска (разделен), вы можете использовать его
losetup
для присоединения образа dd к устройству цикла (возможно, дополнительно), а затемkpartx -a
илиpartprobe
для поиска и разделения разделов на отдельные устройства, или дажеvgscan
/vgchange -ay
если есть LVM.источник
ro,noload
варианты, например:mount -o ro,noload /mnt/squash/sda1.img /mnt/sda1
Мне удалось заставить NBD-сервер «обслуживать» несжатую версию файла .gz или .xz. Я не уверен, должен ли он читать весь сжатый файл очень часто (проверено только с небольшими файлами в оперативной памяти), но, по крайней мере, он работает без необходимости извлечения всей несжатой копии.
Просмотр сжатого изображения в формате gz / xz "на лету"
Установите nbdkit & client
Создайте демонстрационный файл в стиле "dd" - пустой 50M файл с файловой системой ext и заархивируйте его (необязательно только для тестирования)
Затем сожмите с помощью gzip или xz
Примечание.
xz
Опция--block-size=16MiB
должна обеспечивать лучшую производительность произвольного доступа, но за счет меньшего сжатия (возможно, 1%?). Смотрите описание плагина nz для nbdkit .Запустить сервер на Сжатом образе
или для хз
Сервер
--no-fork
сообщает серверу «Не переходить в фоновый режим», поэтому просматривать возможные сообщения об ошибках и убивать их с помощью CTRL-C немного проще.-v
может / покажет слишком много сообщений о состоянии, особенно при чтении.Запустить клиент (в другом терминале / окне)
Это
-nofork
похоже на-no-fork
выше, но я не мог убить клиента с помощью CTRL-Ckill <pid>
, илиsudo kill <pid>
. Завершение работы сервера с помощью CTRL-C остановило и сервер, и клиент.Заметьте, что
/dev/nbd0
теперь идентично несжатому изображению/dev/nbd0
теперь может использоваться как несжатый образ; установлен, чтение / копирование сdd
, или использованиеkpartx
,partprobe
,vgscan
/vgchange
и т.д.!Спасибо Cristian Ciupitu на Unix & Linux , хотя, чтобы найти плагин и собрать все вместе, потребовалось немного больше усилий .
источник
nbdkit -v --no-fork -i 127.0.0.1 --filter=xz file ~/Downloads/50m.xz
отлично работал с той же клиентской командойnbdkit 1.1.11
использует старый протокол NBD, который отличается от нового протокола NBD, используемого вnbd-client 3.13
, но вы можете использовать версию nbd-client до 3.10, например,nbd-client 3.8 from Ubuntu precise 12.04 old LTS
[использовать старые версии только локально для безопасности!]Вот мой способ сделать это, не знаю консольный эквивалент этого, хотя,
.iso
файл с помощьюDisk Image Mounter
.источник
dd if=/dev/zero
и файлового ролика), и он на самом деле добавляет 362 КБ данных (я полагаю, что это накладные расходы ISO). Спасибо, хотя, идея находится на правильном пути