Pull to refresh

Клонирование системного диска штатными средствами Linux за 30 секунд

Reading time2 min
Views42K

Принесли мне намедни винчестер прямо в упаковке и озадачили оперативным клонированием системного диска одного из серверов. Задача, в целом довольно тривиальная, и легко выполнимая. У каждого наверняка есть методика подобного рода действиям, не знаю лучше или хуже мой подход, но поделиться, думаю, им стоит.
Вводная:
* сервер с linux
* все разделы на XFS
* загрузчик GRUB 0.97
* оригинальный диск /dev/sda, клонируем на /dev/sdb
* разделы /dev/sda[1,5-7] (общая полезная информация ~1GB)


В сущности, задача раскладывается на составляющие:
— разметить новый диск также как и оригинал
— скопировать данные на новый диск
— сделать новый диск загрузочным
И вот как это делается:
sfdisk -d /dev/sda | sfdisk /dev/sdb
xfs_copy /dev/sda1 /dev/sdb1
xfs_copy /dev/sda5 /dev/sdb5
xfs_copy /dev/sda6 /dev/sdb6
xfs_copy /dev/sda7 /dev/sdb7
grub
> root (hd1,0)
> setup (hd1)

Готово! По времени ~30 секунд.

Теперь в деталях с пояснениями:
1. Копирование таблицы разделов на /dev/sdb осуществляем при помощи sfdisk
2. xfs_copy копирует полезные данные и, при необходимости, автоматически форматирует разделы, желающие могут перемонтировать разделы в readonly или воспользоваться xfs_freeze на время копирования для сохранения целостности данных.
3. Конфигурация grub (версия 0.97!) в /boot/grub/menu.lst должна выглядеть примерно так:
default   0
timeout   5
color     cyan/blue white/blue
title     Debian GNU/Linux, kernel 2.6.30-2-686
root      (hd0,0)
kernel    /boot/vmlinuz-2.6.30-2-686 root=/dev/sda1 ro
initrd    /boot/initrd.img-2.6.30-2-686
Командами grub — root,setup мы делаем второй диск загрузочным.
4. Когда работают два диска, то второй диск идентифицируется как /dev/sdb, если оригинальный диск высунуть, то второй диск будет /dev/sda. Отсюда следует вывод, что менять /etc/fstab не нужно. Однако, на некоторых Linux в /etc/fstab вместо /dev/sdXN может стоять идентификация разделов по UUID. В этом случае возможны два варианта:
— копируем xfs_copy с ключом -d (делаем полное клонирование, включая UUID)
— меняем в /etc/fstab все UUID на соответствующие /dev/sdaN (где N — номер партиции, в этом вам поможет команда blkid)

P.S. grub2 не ставил, если у кого-то есть аналогичный опыт репликации загрузчика на второй диск, поделитесь.
Tags:
Hubs:
+36
Comments49

Articles

Change theme settings