Проект переехал на новый домен!  [[ перейти ]]

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  обычно приводит к уничтожению 
ранее содержавшихся на нем данных. Всё! И читаем маны, маны, маны... до просветления ;))))))