Размер изображения 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 ГБ. Так:
dd
делает побайтную копию, поэтому имеет значение общий размер раздела, а не его размер.- Да. Он вырастет до 220 ГБ.
Вы можете сжать полученное изображение, используя
gzip
или жеxz
:sudo dd if=/dev/sda1 | xz > /tmp/ubuntu.image
- Зависит от того, что вы называете лучшим инструментом. Для некоторых задач требуется побайтная копия (например, восстановление данных с неисправного диска). В таких случаях,
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
раздел в файловой системе на том же разделе --- что приведет к:
заполнить раздел до того, как команда получит возможность закончить (подумать об этом), если не сжимать на лету и быть удачливым, но
записать файл с полностью несовместимой копией этого раздела; смонтированные разделы постоянно меняются в многозадачной операционной системе.
Как правило, вы dd
раздел только тогда, когда он не смонтирован.
Более того, учитывая, что раздел является /
раздел вашей системы, и что вы выполняете команду от имени пользователя root, вы полностью заполните свой корневой раздел (будет зарезервировано корневое пространство), и вы рискуете загрузить загрузочный диск для восстановления беспорядка...
Я так понимаю dd
делает точный клон диска, включая пустое пространство. Если ваш диск 220 ГБ, dd
создаст копию размером 220 ГБ, независимо от того, сколько места используется.
Этот ответ на ServerFault рекомендует провести через gzip
что должно быть довольно эффективным способом сжатия неиспользуемого пространства.
dd if=/dev/sda1 | gzip -c > /tmp/ubuntu.image
Вы также можете сначала выполнить дефрагментацию и записать нули в пустое пространство, что теоретически может сделать сжатие более эффективным.