ccd (Concatenated Disk driver)
"Драйвер склееных дисков" позволяет комбинировать
несколько дисков/разделов в один виртуальный диск.
ccd не понимает разделов raw, только FS_BSDFFS...
Чтобы это дело работало в ядро:
#######################################
device ccd # concatenated disk devices
#######################################
У меня есть в системе SCSI-контроллер с двумя дисками:
sh# dmesg | grep SCSI
-----------------------------------------------------------------------------------------------------------------------
ahc0: port 0x2800-0x28ff mem 0xfc700000-0xfc700fff irq 16 at device 4.0 on pci2
ahc1: port 0x2c00-0x2cff mem 0xfc701000-0xfc701fff irq 17 at device 4.1 on pci2
da0: Fixed Direct Access SCSI-3 device
da1: Fixed Direct Access SCSI-3 device
-----------------------------------------------------------------------------------------------------------------------
С этим добром и будем работать ;)
Смотрим на наше добро:
sh# ls /dev | grep da
---------------------
da0
da1
---------------------
Убиваем прежнюю инфу на диске (на всякий случай):
sh# dd if=/dev/zero of=/dev/da0 bs=512 count=32
sh# dd if=/dev/zero of=/dev/da1 bs=512 count=32
sh# bsdlabel -w da0 ;Размечаем наш диск
sh# ls /dev | grep da ;лицезреем
---------------------
da0
da0a
da0c
da1
---------------------
sh# bsdlabel da0 > /tmp/lbl ;Копируем метку в файл
sh# ee /tmp/lbl ;Редактируем как душе угодно:
До редактирвования:
---------------------------------------------------------------------------------
# /dev/da0:
8 partitions:
# size offset fstype [fsize bsize bps/cpg]
a: 71687356 16 unused 0 0
c: 71687372 0 unused 0 0 # "raw" part, don't edit
---------------------------------------------------------------------------------
После редактирвования:
---------------------------------------------------------------------------------
# /dev/da0:
8 partitions:
# size offset fstype [fsize bsize bps/cpg]
d: 71687356 0 4.2BSD 0 0
c: 71687372 0 unused 0 0 # "raw" part, don't edit
---------------------------------------------------------------------------------
sh# bsdlabel -R da0 /tmp/lbl ;Восстанавливаем метку из файла
sh# ls /dev | grep da
---------------------
da0
da0c
da0d
da1
---------------------
Тоже самое делаем с диском da1
sh# bsdlabel -w da1
sh# bsdlabel da1 > /tmp/lbl
sh# bsdlabel -R da1 /tmp/lbl
Результат:
sh# ls /dev | grep da
---------------------
da0
da0c
da0d
da1
da1c
da1d
---------------------
Теперь берём в руки ccdconfig!
sh# ccdconfig -v ccd0 128 CCDF_MIRROR /dev/da0d /dev/da1d
--------------------------------------------------------------------------
ccd0: 2 components (da0d, da1d), 71687296 blocks interleaved at 128 blocks
--------------------------------------------------------------------------
Разделы в ccd могут либо соединяться последовательно, либо чередоваться.
Для последовательного соединения указывается коэффициент чередования (interleave factor) 0.
Но при указании коэффициента чередования 0 зеркалирование (mirroring) использовать нельзя.
Для зеркала коэффициент чередования рекомендуется 128 и больше.
Максимальная производительность достигается, если все составляющие диски имеют одинаковую
геометрию и размер. Оптимальное разбиение на полосы невозможно при использовании дисков
различных типов.
Форматируем сразу или кому нужно разметить - размечайте:
sh# bsdlabel -w ccd0
sh# newfs -U -O2 /dev/ccd0a
newfs -U -O2 /dev/ccd0a
-----------------------------------------------------------------------------
/dev/ccd0a: 35003.6MB (71687280 sectors) block size 16384, fragment size 2048
using 191 cylinder groups of 183.77MB, 11761 blks, 23552 inodes.
with soft updates
-----------------------------------------------------------------------------
Если что не так наделали то:
sh# dd if=/dev/zero of=/dev/ccd0 bs=512 count=32
И размечайте или форматируйте по новой!
sh# mkdir /work && chmod 600
sh# mount /dev/ccd0a /work
Далее создаём конфиг:
sh# ccdconfig -g > /etc/ccd.conf
Теперь, когда создали конфиг, то автоматом /etc/rc
будет стартовать /etc/rc.d/ccd при запуске системы
Для автомонтирования в /etc/fstab незабываем...
-------------------------------------------------
/dev/ccd0a /work ufs rw 2 2
-------------------------------------------------
PS:
Убить созданый девайс можно так:
(Мало ли что у вас не так пошло)
sh# ccdconfig -u /dev/ccd0
Если теряется один из дисков в зеркальной паре, создать резервную копию данных будет можно.
При возникновении ошибки записи необходимо как можно скорее восстановить и перегенерировать данные.
Изменение коэффициента чередования или других параметров для диска ccd обычно приводит к уничтожению
ранее содержавшихся на нем данных. Всё! И читаем маны, маны, маны... до просветления ;))))))