Делаем резервную копию системы FreeBSD

Август, 17th 2011Рубрика: *NIX 25048
Подписаться на комментарии по RSS

клонирование HDD FreeBSD

Удивительно, аномально жаркое лето прошлого года, сервера организаций, с которыми сотрудничаю, пережили спокойно. В этом году техника решила испытать моё терпение - за не полных 2 месяца (июль и август) посыпалось три винта в разных серверах. Для любителей искать закономерности замечу, что все винты разных производителей. Два их них удалось поднять средствами FreeBSD. Для реанимации было достаточно запуска команды fsck в однопользовательском режиме для каждого раздела диска.

К третьему винту судьба была менее благосклонна, ему пришлось хуже остальных и помогла только полная переустановка и настройка системы на новый хард. Благо это был всего-навсего роутер.

Нет худа без добра, в результате на этих серверах теперь по новому жесткому диску с полной копией системы на случай войны. Кроме того были заменены BAD-ные (ну кто в здравом уме оставит их в постоянную работу).

Итак, имеем не вполне надежные винты, но с удачно стартовавшей системой. Задача состоит в создании полной копии всех разделов с данными и настройками системы на новых HDD такой же ёмкости. Использвать команду dd в данном случе нельзя, да посекторное копирование диска в полтерабайта, мягко говоря не самая быстрая операция.

FreeBSD предоставляет нам более изящное и правильное решение - утилиты dump|restore. В хендбуке описано как ими пользоваться. Но есть ещё более удобное решение, не требующее ручного разбиения нового винчестера на разделы - утилита clonehdd.

C её помощью можно буквально одной командой сделать резервую копию всего диска, причем, не обязательно, чтобы новый винт был такой-же емкости. Утилита автоматически создаст разделы на новом диске пропорциально изменив разделы. Правда такой подход не всегда удобен, если вам, к примеру, необходимо увеличить только один раздел. В этом случае придется использовать, ранее упомянутые dump|restore, предварительно создав неоходимые слайсы и партиции на новом винте.

Я отвлекся от главного... для начала необходимо установить утилиту из портов:

# cd /usr/ports/sysutils/clonehdd/
# make install

Синтаксис утилиты имеет следующий, интуитивно понятный вид:

# clonehdd -src=device -dst=device -swap=size [-safe] [-freespace=size] [-fstab=device] [-force]

Команда df выведет нам список партиций работающей системы, примерно так:

# df
Filesystem  1K-blocks    Used    Avail Capacity  Mounted on
/dev/ad8s1a    507630   53002   414018    11%    /
devfs               1       1        0   100%    /dev
/dev/ad8s1d   1012974  163980   767958    18%    /tmp
/dev/ad8s1e   5077038 1961624  2709252    42%    /usr
/dev/ad8s1f  67056618  188536 61503554     0%    /var

Как видите, в моем случае диском-источником будет ad8, т.е. парметр -src=ad8.

Имя нового диска, на который будет делаться копия системы, можно узнать, выполнив команду dmesg и посмотрев каким устройством он стал (в моём примере /dev/ad9)

Параметр -swap=size задает размер файла-подкачки swap на новом HDD (указывается в Mb).

Параметр -safe можно не указывать. Он нужен для безопасного переноса данных. Т.е. при резервном копировании, образ партиции сначала создается на том же разделе, откуда происходит копирование и только после этого идет запись на новый жесткий диск в соответствующий раздел. Таким образом, на копируемом разделе должно быть минимум 50% свободного пространства. Если параметр не указан, clonehdd сам анализирует своболное место на разделе и если его не хватает, то копирование производится "на лету", без создания образа. На разделах, где сос вободным местом всё в порядке, копирование производится в безопасном режиме.

Вот как выглядел процесс создания клона диска FreeBSD у меня:

# clonehdd -src=ad8 -dst=ad9 -swap=4096
Clone parameters:
Source partition: /dev/ad8
Dest partition: /dev/ad9
Swap size: 4096 MB
Safe dumping: Disabled
Free space on DST: 100 MB
Fstab device name: ad8
---
[OK] Found devices for clone procedure
[OK] DST partitions are not in use
---
Source partition
/usr size: 29748MB, used: 3654MB
/var size: 49586MB, used: 2357MB
/ size: 495MB, used: 239MB
/tmp size: 11167MB, used: MB
/home size: 366958MB, used: 93178MB
Total: 457957 MB, used: 99430 MB
---
[OK] Device ad9 has enough free space
DATA ON DEVICE ad9 WILL BE DESTROYED NOW!
Continue? [yes/no]: yes
Wait 10 seconds before start: 10 9 8 7 6 5 4 3 2 1
[OK] Device /dev/ad9 made clean
[OK] New slice created
---
Destination device partitions:
SWAP size: 4096 MB
/ size 511 MB
/tmp size 11530 MB
/var size 51198 MB
/usr size 30715 MB
/home size 378887 MB
---
[INF] Last partition were increased for 2 blocks
[OK] Partitions were created successfully
---
[OK] Partition /tmp was formatted successfully
Starting dump/restore procedure...      [OK]
[OK] Partition /var was formatted successfully
Starting dump/restore procedure...
Подписывайтесь на канал Яндекс.Дзен и узнавайте первыми о новых материалах, опубликованных на сайте.

Если считаете статью полезной,
не ленитесь ставить лайки и делиться с друзьями.

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