Делаем резервную копию системы 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...
Если считаете статью полезной,
не ленитесь ставить лайки и делиться с друзьями.