Размер изображения dd - он равен размеру раздела?

Я использую dd создать образ моего загрузочного раздела на Ubuntu 14.04. Я делаю это впервые.

При проверке использования на моем диске, я использовал df -h, Вы увидите, что мой /dev/sda1 размер раздела 5.8G...

bash$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1       220G  5.8G  203G   3% /
none            4.0K     0  4.0K   0% /sys/fs/cgroup
udev            3.9G  4.0K  3.9G   1% /dev
tmpfs           797M  976K  796M   1% /run
none            5.0M     0  5.0M   0% /run/lock
none            3.9G   30M  3.9G   1% /run/shm
none            100M   28K  100M   1% /run/user
/dev/sda5       239G   32K  239G   1% /windows

Я пытался создать изображение и сохранить его в /tmp с помощью следующей команды:

bash$ sudo dd if=/dev/sda1 of=/tmp/ubuntu.image

Это начало создавать изображение в моем /tmp Дир, но когда я проверил его прогресс, изображение продолжало расти более 30G, прежде чем я отменил его.

Это вызывает у меня несколько вопросов:

  • Почему образ диска будет таким большим?
  • Будет ли он равен размеру раздела?
  • Есть ли способ сохранить образ диска в размере фактически используемого пространства?
  • Есть ли лучший инструмент для использования?

3 ответа

Решение
/dev/sda1       220G  5.8G  203G   3% /

/dev/sda1 имеет размер 220 ГБ и использует 5,8 ГБ. Так:

  1. dd делает побайтную копию, поэтому имеет значение общий размер раздела, а не его размер.
  2. Да. Он вырастет до 220 ГБ.
  3. Вы можете сжать полученное изображение, используя gzip или же xz:

    sudo dd if=/dev/sda1 | xz > /tmp/ubuntu.image
    
  4. Зависит от того, что вы называете лучшим инструментом. Для некоторых задач требуется побайтная копия (например, восстановление данных с неисправного диска). В таких случаях, dd + сжатие это самый простой способ. Если нет, рассмотрите что-то вроде partimage,

Ну... у вас есть хорошие ответы о размере dd файл (который в несжатом виде имеет тот же размер раздела).

Но я вижу здесь еще одну проблему: у вас есть:

bash$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1       220G  5.8G  203G   3% /
[...]

... а также /tmp не установлен в другом месте, поэтому он включен /dev/sda1, а также /dev/sda1 установлен.

Так что если вы делаете:

 sudo dd if=/dev/sda1 of=/tmp/ubuntu.image 

вы копируете изображение /dev/sda1 раздел в файловой системе на том же разделе --- что приведет к:

  1. заполнить раздел до того, как команда получит возможность закончить (подумать об этом), если не сжимать на лету и быть удачливым, но

  2. записать файл с полностью несовместимой копией этого раздела; смонтированные разделы постоянно меняются в многозадачной операционной системе.

Как правило, вы dd раздел только тогда, когда он не смонтирован.

Более того, учитывая, что раздел является / раздел вашей системы, и что вы выполняете команду от имени пользователя root, вы полностью заполните свой корневой раздел (будет зарезервировано корневое пространство), и вы рискуете загрузить загрузочный диск для восстановления беспорядка...

Я так понимаю dd делает точный клон диска, включая пустое пространство. Если ваш диск 220 ГБ, dd создаст копию размером 220 ГБ, независимо от того, сколько места используется.

Этот ответ на ServerFault рекомендует провести через gzip что должно быть довольно эффективным способом сжатия неиспользуемого пространства.

dd if=/dev/sda1 | gzip -c  > /tmp/ubuntu.image

Вы также можете сначала выполнить дефрагментацию и записать нули в пустое пространство, что теоретически может сделать сжатие более эффективным.

Другие вопросы по тегам