OpenBSD: Зеркалирование данных с помощью ccd


Мини-руководство "шаг за шагом"

OpenBSD установлена на sd0. Требуется подключить sd1 и производить автоматическое копирование данных с sd0. Для этих целей будем использовать ccd(4). На разделы ccd(4) следует перенести /home, /var и /usr. Перенести корневую файловую систему нельзя, поскольку ядро не поддерживает загрузку с этого типа устройств. Рекомендуется остановить запущенные процессы и при наличии локального доступа к машине выполнять все операции в однопользовательском режиме.

Текущая система:

# df -h
Filesystem     Size    Used   Avail Capacity  Mounted on
/dev/sd0a      490M    27.6M   438M     6%    /
/dev/sd0d      38.4G   4.0M    36.5G    0%    /home
/dev/sd0e      982M    6.0K    933M     0%    /tmp
/dev/sd0f      17.5G   821M    15.9G    5%    /usr
/dev/sd0g      9.6G    7.1M    9.1G     0%    /var

Уже сейчас можно составить конфиг для создания устройств ccd(4) при загрузке системы:

# vi /etc/ccd.conf
ccd0    16      CCDF_MIRROR     /dev/sd0d /dev/sd1d
ccd1    16      CCDF_MIRROR     /dev/sd0g /dev/sd1g
ccd2    16      CCDF_MIRROR     /dev/sd0f /dev/sd1f

Предварительно делаем бэкап /home и /var в /usr/dump, иначе данные на дисках будут утеряны:

# mkdir /usr/dump
# dump -a -f /usr/dump/var.dump /var
# dump -a -f /usr/dump/home.dump /home
# umount -f /var
# umount -f /home

После размонтирования необходимо внести соответствующие изменения в /etc/fstab (старые записи больше не понадобятся):

# vi /etc/fstab
/dev/sd0a / ffs rw 1 1
/dev/ccd1e /home ffs rw,nodev,nosuid 1 2
/dev/sd0e /tmp ffs rw,nodev,nosuid 1 2
/dev/ccd2e /usr ffs rw,nodev 1 2
/dev/ccd0e /var ffs rw,nodev,nosuid 1 2

Создаем два устройства ccd(4) (для /home и /var):

# ccdconfig ccd0 16 CCDF_MIRROR /dev/sd0d /dev/sd1d
# ccdconfig ccd1 16 CCDF_MIRROR /dev/sd0g /dev/sd1g

Для каждого из созданных устройств меняем тип раздела "с" на unused и создаем одну большую партицию "e" с типом 4.2BSD на весь диск:

# disklabel -E ccd0
> m c
> [4.2BSD] unused
> a e 

И для ccd1:

# disklabel -E ccd1
> m c
> [4.2BSD] unused
> a e

Создаем файловые системы:

# newfs ccd0e
# newfs ccd1e

Снова монтируем /var и /home, но уже как устройства ccd(4). Восстанавливаем данные из резервной копии:

# mount /var
# cd /var && restore -r -f /usr/dump/var.dump
# mount /home
# cd /home && restore -r -f /usr/dump/home.dump

Подготавливаем бэкап /usr:

# mkdir /home/dump
# dump -a -f /home/dump/usr.dump /usr

Перегружаемся в single user mode (удаленно размонтировать /usr нельзя). Делаем с ccd2 то же самое, что делали ранее с ccd0 и ccd1:

# ccdconfig ccd2 16 CCDF_MIRROR /dev/sd0f /dev/sd1f
# disklabel -E ccd2
> m c
> [4.2BSD] unused
> a e

# newfs ccd2e
# mount /usr

Создаем ccd0 и монтируем /home:

# ccdconfig ccd0 16 CCDF_MIRROR /dev/sd0d /dev/sd1d
# mount /home

Возвращаем данные на /usr:

# cd /usr && restore -r -f /home/dump/usr.dump

Перезагружаемся:

# reboot

В итоге получаем:

# df -h
Filesystem     Size    Used   Avail Capacity  Mounted on
/dev/sd0a      490M   27.6M    438M     6%    /
/dev/ccd1e    38.4G    4.0M   36.5G     0%    /home
/dev/sd0e      982M    6.0K    933M     0%    /tmp
/dev/ccd2e    17.5G    815M   15.9G     5%    /usr
/dev/ccd0e     9.6G    7.1M    9.1G     0%    /var

Статья основана на материалах, предоставленных Антоном Карповым www.toxahost.ru.


OpenBSD.ru www@openbsd.ru
$RuOBSD: ccd.html,v 1.11 2010/11/01 10:57:48 dinar Exp $