nlothik (nlothik) wrote,
nlothik
nlothik

Categories:

Клонирование разделов

Начальство всё никак не выделит средства для покупки нормального программного обеспечения для клонирования дисков.

Ну, а мы и сами с усами.

Основная проблема клонирования диска при помощи команды dd заключается в том, что размер дисков или разделов не совпадает. В результате конечный диск получается или недозаписанным (данные кончились до того, как кончился диск), или же данных слишком много, чтобы записать их полностью. Вторая проблема клонирования дисков программой dd -- это то, что при переносе этой программой диск копируется посекторно. То-есть, копируются и уже удалённые файлы и просто пустые кластеры. На кой чорт, спрашивается?

Проблема решается просто. Не надо переносить с диска на диск. Надо переносить только нужный раздел или разделы. Переносимый раздел нужно сначала штатными средствами Windows ужать -- Disk Management, Parition -> Shrink. Ужимать рекомендую до минимальных размеров -- меньше электронов гонять :)

Потом загружаемся в любимый дистрибутив Фрюникса -- хучь BSD, хучь Линупс. Я использовал CentOS.

Предположим, что переносимый диск у нас определится как /dev/sda, с разделом /dev/sda1, а диск, на который нужно перенести (блин, как по-русски правильно сказать target disk?) -- /dev/sdb.

Далее делаем финт ушами -- копируем MBR (и ТОЛЬКО MBR!) с sda на sdb:

dd if=/dev/sda of=/dev/sdb bs=512 count=1

Размер MBR -- 512 байт, из которых первые 446 -- загрузчик, следующие 64 -- таблица разделов, и последние 2 байта -- подпись.

Таким образом, перенеся первые 512 байт с диска на диск мы воссоздадим на конечном диске таблицу разделов с переносимого диска.

Проверяем:

fdisk -u -l /dev/sda
fdisk -u -l /dev/sdb

Размеры разделов и начальные и конечные секторы должны совпадать!

На всякий случай запишем ещё разик таблицу разделов на конечный диск:

fdisk /dev/sdb
Жмём w и ввод.

А теперь можно переносить раздел.

dd bs=64M if=/dev/sda1 of=/dev/sdb1

bs=64M -- какими кусками читать и записывать диски. Правильный размер определяется индивидуально для каждого компьютера, так как зависит от размера кеш-памяти, её организации, и размера кеша на дисках. Иногда у меня получалась высокая производительность при выставлении этого параметра в 64 мегабайта, а иногда скорость росла при снижении до 16 мегабайт. Попробовать нужно с разными, а скорость записи можно определить командой iostat. На Линупсе -- iostat -m 1.

И уходим пить кофе.

После окончания переноса -- вытаскиваем старый диск, грузимся с нового, и расширяем перенесённый раздел до нужных размеров! И никаких тебе вылезаний за рамки разделов, и недозаписанных кластеров.

Разумеется, все описанные команды работают также для создания образов дисков в файлах, а также для клонирования дисков по сети.

Пока открытым остаётся вопрос клонирования разделов дисков с GPT вместо MBR. Ещё не приходилось сталкиваться. Предполагаю, что процесс тот же самый, вот бы только размер GPT записи узнать бы. Ведь наверняка больше 512 байт.
Tags: рекомендую, сисадминское
Subscribe

  • Хочу эту гитару

    Очень интересный продукт. Ультракомпактная гитара, которую легко брать с собой в дорогу, и при этом гриф у неё полноразмерный: на неё можно ставить…

  • Deutschland’83

    Не побоюсь таких слов, офигительный сериал. Если кто смотрел сериал The Americans про русских разведчиков-нелегалов в США, тому однозначно…

  • Умейте жаловаться

    Недавно “на нашем раёне” поселился мудак, какой-то ультрарелигиозный католик. По моему опыту, католики вообще-то обычно более вменяемы,…

  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 1 comment