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

Материал из OpenBSD-Wiki
Перейти к навигации Перейти к поиску
Данная статья 100 % копипаст с www.openbsd.ru

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

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.