Назад | Перейти на главную страницу

Резервное копирование и восстановление с помощью dd и gzip

Я видел различные сообщения, в которых обсуждается использование dd для создания образа диска и хранения только «использованных данных». Прежде чем ставить проблему / вопрос, давайте предположим несколько вещей.

Предположения

  1. Диск для клонирования / образа - / dev / sda
  2. / dev / sda составляет 10 ТБ
  3. Используемое пространство на / dev / sda составляет 1 ТБ
  4. Хранение образа находится в каком-то удаленном месте, смонтированном CIFS

Вопрос / Проблема

Используя что-то вроде cp с --sparse=always вариант в сочетании с dd должен создать разреженный файл, чтобы он имел размер 1 ГБ:

cp --sparse=always <(dd if=/dev/sda bs=8M) /mnt/remote/location/disk.img

В качестве альтернативы что-то вроде ниже должно сжать все обнуленное пространство:

dd if=/dev/sda1 | gzip -c > /mnt/remote/location/disk.img.gz

Так, каково влияние разреженного файла образа на восстановление? Будут ли переданные данные иметь размер 1 ГБ или 10 ГБ, включая воспринимаемое пустое / обнуленное пространство? Очевидно, это необходимо для оценки потенциальной сетевой нагрузки и времени восстановления.

P.S. Я понимаю, что есть и другие варианты, такие как Clonezilla и что-то вроде ddrescue, которое позволит возобновить работу, но вопрос конкретно об использовании dd в контексте выше.

Спасибо.

Ты можешь использовать ddrescue с этими -S вариант:

-S --sparse Use sparse writes for outfile. (The blocks of zeros are not actually allocated on disc). May save a lot of disc space in some cases. Not all systems support this. Only regular files can be sparse.

Вы можете оформить что-то похожее на ddrescue /dev/sda1 /path/to/outfile

Запись в общий ресурс Windows CIFS SMB1

В слово от Microsoft это: «В файловых системах Windows NTFS файлы не делаются разреженными по умолчанию. Приложение или пользователь должны явно пометить файл разреженным с помощью управляющего кода FSCTL_SET_SPARSE». К сожалению, Linux не отмечает эти файлы через SMB1. По сообщениям если вы сначала сделаете файл разреженным на стороне Windows (с помощью Cygwin dd if=/dev/zero of=BigFile bs=1M count=1 seek=150000), то вы можете продолжать писать его как разреженное от Linux. Я считаю, что чтение будет неоптимизированным.

Эксперименты

С RHEL6 coreutils-8.4 cp --sparse=always local_file /mnt/cifs/file_on_cifs не записывает разреженный файл. При чтении файла CIFS он считывает обнуленные области (нет карта оптимизация). В RHEL6 и резервное копирование, и восстановление передают весь файл по сети; лучше сжать его.

Такая же ситуация с coreutils-8.25 в Ubuntu 14x.

Запись в общий ресурс Windows CIFS SMB2 / SMB3

Eсть Патч 2014 г. «Добавить поддержку разреженных файлов для SMB2 / SMB3», поэтому есть надежда, что разреженные файлы будут поддерживаться на подключенных общих папках Windows 8.1 и других платформ.

Запись в общую папку Linux CIFS

Когда вы монтируете на клиенте Linux общий ресурс Samba с некоторого сервера Linux, вы можете сделать запись разреженных файлов даже на SMB1. Оптимизации чтения нет.