From: В. Кравчук <valera@openxs.kiev.ua>
Newsgroups: http://ln.ua/~openxs/
Date: Mon, 23 Feb 2004 14:31:37 +0000 (UTC)
Subject: Организация программных RAID-массивов в FreeBSD используя ccd
Сегодняшний выпуск посвящен странице справочного руководства
ccdconfig(8) ОС FreeBSD. Продолжаем тему организации программных
RAID-массивов в этой ОС.
_________________________________________________________________
НАЗВАНИЕ
ccdconfig - утилита конфигурирования для драйвера конкатенированных
("склееных") дисков
Утилита ccdconfig используется для динамического конфигурирования и
удаления конкатенированных дисковых устройств или устройств ccd.
Подробнее о драйвере ccd см. на странице справочного руководства
[2]ccd(4).
Поддерживаются следующие опции:
-c
Конфигурировать устройство ccd. Это - стандартное поведение
утилиты ccdconfig.
-C
Конфигурирует все устройства ccd, перечисленные в файле
конфигурации ccd.
-f файл_конфигурации
При конфигурировании или удалении всех устройств читать
указанный файл_конфигурации вместо стандартного /etc/ccd.conf.
-g
Вывести текущую конфигурацию устройства ccd в формате,
подходящем для файла конфигурации ccd. Если аргументы не
указаны, выводится информация о каждом сконфигурированном
устройстве ccd. В противном случае выводится только
конфигурация указанных устройств ccd.
-u
Удалить (деконфигурировать) устройство ccd.
-U
Удалить (деконфигурировать) все устройства ccd, указанные в
файле конфигурации ccd.
-v
Выдавать детальную информацию по ходу работы.
Устройство ccd описывается в командной строке и в файле конфигурации
ccd путем задания имени устройства ccd, коэффициента чередования
(interleave factor), флагов конфигурации ccd и списка из одного или
нескольких устройств. Флаги можно задавать как десятичное число,
шестнадцатеричное число, список строк через запятую или как слово
"none". Поддерживаются следующие флаги:
CCDF_UNIFORM 0x02 Использовать равномерное чередование
CCDF_MIRROR 0x04 Поддерживать зеркалирование
Формат файла конфигурации соответствует порядку аргументов в командной
строке. Учтите, что и в команжной строке, и в файле конфигурации
аргумент флаги является необязательным.
#
# /etc/ccd.conf
# Файл конфигурации для конкатенированных дисковых устройств
#
# ccd коэффициент_чередования флаги составляющие устройства
ccd0 16 none /dev/da2e /dev/da3e
Составляющие устройства должны указывать на разделы типа FS_BSDFFS
(или, как показывает disklabel(8), "4.2BSD").
ПРИМЕРЫ
Ниже представлено несколько примеров использования утилиты ccdconfig.
Аргументы, передаваемые команде ccdconfig, в точности совпадают с
теми, колторые можно указывать в файле конфигурации /etc/ccd.conf.
Первая команда создает четырехдисковый набор полос из четырех разделов
scsi-диска. Полоса занимает 64 сектора (как задает коэффициент
чередования). Вторая команда - пример сложного сочетания
зеркалирования и разбиения на полосы. Она создает двухдисковый набор
полос из устройств da2e и da3e, который зеркалируется двухдисковым
набором полос на устройствах da4e и da5e. Последний пример создает
простое зеркало. Устройство /dev/da2e зеркалируется с устройством
/dev/da4e и получает имя ccd0.
При создании нового ccd-диска обычно перед дальнейшей работой его
необходимо разметить с помощью disklabel(8). После создания исходной
метки ее можно будет редактировать, добавляя дополнительные разделы.
Сама метка занимает первые 16 секторов ccd-диска. Если на диске будут
создаваться новые файловые системы с помощью утилиты newfs, об этом
можно не беспокоиться, поскольку утилита newfs пропустит область
метки. Однако, если предполагается использовать команду [3]dd(1) для
копирования с или на раздел ccd, имеет смысл создать раздел, не
перекрывающийся с областью метки диска. Например, если имеется
ccd-диск размером 10000 секторов, можно создать раздел 'd' со
смещением 16 и размером 9984.
Разметка ccd-диска с помощью disklabel обычно выполняется один раз. В
отличие от других устройств, ccd в настоящее время требует указания
при разметке раздела 'c'. Если вы перегрузите машину и
переконфигурируете ccd-диск, созданная на нем ранее метка диска
отсанется и переинициализировать ее не придется. Помните, что
изменение любых параметров ccd (коэффициента чередования, флагов или
списка устройств, составляющих ccd-диск) обычно приводит к уничтожению
всех ранее записанных на ccd-диске данных. Если это произошло, обычно
имеет смысл переинициализировать метку перед (вос)созданием ccd-диска.
ВОССТАНОВЛЕНИЕ
Ошибка на ccd-диске обычно невосстановима, если только не используется
зеркалирование. Но зеркалирование имеет свои недостатки: при этом
предполагается, что обе копии данных в любом секторе идентичны. Так и
будет, пока не произойдет ошибка записи или вы не замените любую
составляющую зеркальной пары. Это - реализация зеркалирования для
бедных. Оно работает достаточно хорошо для того, чтобы при
возникновении ошибок диска можно было скопировать ccd-диск, заменить
сбойное оборудование и затем пересоздать ccd-диск. Если нужно что-то
большее, имеет смысл задуматься об использовании внешних аппаратных
RAID-массивов с интерфейсом SCSI, RAID-контроллеров типа контроллера
dpt(4) или программных реализаций RAID-систем вроде vinum(8).
Исходная метка диска, возвращаемая [6]ccd(4) содержит всего 3 раздела.
Необходимо увеличить количество разделов до 8 с помощью команды
"disklabel -e", чтобы привести метку к типичному для BSD виду.
ИСТОРИЯ
Утилита ccdconfig впервые появилась в NetBSD 1.0A.
FreeBSD 4.9, 17 июля 1995 года
Copyleft (no c) - Fuck copyright! 2003 В. Кравчук <valera@openxs.kiev.ua>,
OpenXS (http://ln.com.ua/~openxs) Initiative, перевод на русский язык
man ccd(4)
Сегодняшний выпуск посвящен странице справочного руководства ccd(4) ОС
FreeBSD. Займемся проблемами программных и аппаратных RAID-массивов в
этой ОС.
_________________________________________________________________
НАЗВАНИЕ
ccd - драйвер "склееных" дисков (Concatenated Disk driver)
СИНТАКСИС
device ccd
ОПИСАНИЕ
Драйвер ccd позволяет комбинировать несколько дисков/разделов в один
виртуальный диск.
В этом документе предполагается, что читатель знает, как создавать
ядра, как правильно конфигурировать диски и устройства в файле
конфигурации ядра, и как разбивать диски на разделы.
Учтите, что "неформатированные" (raw) разделы дисков нельзя объединять
в виртуальный диск. Ядро работает только с компонентами-разделами типа
FS_BSDFFS (утилита disklabel(8) показывает их тип как "4.2BSD").
Чтобы включить поддержку драйвера ccd в ядро, необходимо добавить в
файл конфигурации ядра строку, аналогичную следующей:
device ccd # concatenated disk devices
Начиная с версии FreeBSD 3.0, не обязательно конфигурировать поддержку
драйвера ccd в ядре - можно использовать его как загружаемый модуль
ядра. Простой запуск утилиты ccdconfig(8) загрузит соответствующий
модуль в ядро.
Разделы в ccd могут либо соединяться последовательно, либо
чередоваться. Для последовательного соединения разделов укажите
коэффициент чередования (interleave factor) 0. Учтите, что при
указании коэффициента чередования 0 зеркалирование (mirroring)
использовать нельзя.
Для конфигурирования устройств ccd имеется отдельная утилита.
Подробнее о ней см. на странице справчоного руководства ccdconfig(8).
Коэффициент чередования
Если для устройства ccd чередование задано корректно, достигается
эффект "разбиения на полосы" ("striping"), что может повысить
производительность последовательного чтения/записи. Коэффициент
чередования задается в единицах DEV_BSIZE (обычно - 512 байтов). Для
записей большого объема, оптимальный коэффициент чередования обычно
совпадает с размером дорожки, а для чтения большого объема он должен
составлять около четверти дорожки. (Учтите, что это в большой степени
зависит от количества и скорости вращения дисков.) Например, при
наличии восьми дисков со скоростью вращения 7200 об/мин. на двух шинах
Fast-Wide SCSI получаем значение 128 для записей и 32 для чтений.
Больший коэффициент чередования дает лучшие результаты при
многозадачной работе за счет локализации файлового ввода-вывода
данного процесса на одном диске. Производительность при
последовательном чтении при этом снижается, но при работе большого
количества задач производительность последователного чтения обычно не
столь существенна.
Коэффициент чередования необходимо задавать при использовании
зеркалирования, даже если имеется всего два диска (т.е. организация
работы с ними будет одной и той же, независимо от коэффициента
чередования). Коэффициент чередования будет определять, однако, как
распределяются операции ввода-вывода, и рекомендуется задавать
значение от 128 и больше.
Драйвер ccd предлагает опцию для организации диска четности, но в
настоящее время она не реализована.
Максимальная производительность достигается, если все составляющие
диски имеют одинаковую геометрию и размер. Оптимальное разбиение на
полосы невозможно при использовании дисков различных типов.
Для задач, требующих случайного доступа, например, для серверов
дискуссионных групп, желательно использовать коэффициенты чередования
побольше (например, 65,536). Учтите, что драйвер ccd не сможет
существенно ускорить работу приложений, для которых критичным является
время поиска нужной позиции в файле (seek-time). Большие значения
коэффициента чередования, по крайней мере, уменьшат вероятность того,
что для чтения одного каталога или файла придется позиционировать
головки двух дисков.
Зеркалирование дисков
Можно сконфигурировать ccd для "зеркалирования" любого четного
количества дисков. О том, какие для этого необходимо задать флаги, см.
на странице справочного руководства ccdconfig(8). Например, при
наличии конфигурации ccd с четырьмя дисками, первые два диска будут
завязаны в зеркальную пару со вторыми двумя. Запись будет выполняться
на оба компонента зеркальной пары. Чтение будет выполняться с любого
из зеркальных компонентов, в зависимости от того, какой из них драйвер
сочтет более оптимальным использовать. Если при чтении произойдет
сбой, драйвер автоматически попытается прочитать тот же сектор с
зеркального компонента. В настоящее время ccd использует модель
сдвоенной зоны поиска (dual seek zone model) для оптимизации чтений в
многозадачной среде по сравнению с последовательным чтением.
В случае сбоя диска его можно восстановить с помощью утилиты dd(1).
Учтите, что однодисковое устройство ccd отличается от исходного
раздела. В частности, это означает, что при наличии файловой системы
на двухдисковом зеркале ccd и сбое одного из диско, нельзя
смонтировать и использовать оставшийся раздел сам по себе; его надо
будет сконфигурировать как однодисковое устройство ccd. Нельзя
заменить диск, содержащий зеркальный раздел ccd, не создав
предварительно резервную копию раздела. Потом можно будет заменить
диск и восстановить раздел.
ПРЕДУПРЕЖДЕНИЯ
Если один (или несколько) дисков, составляющих виртуальный диск ccd,
перестанет работать, потеряна будет вся файловая система, если только
не используется зеркалирование дисков.
Если теряется один из дисков в зеркальной паре, создать резервную
копию данных будет можно. Если происходит ошибка записи, однако,
чтение данных из соответствующего сектора может давать непредсказуемые
результаты. Могут быть выданы данные до записи, а могут - и записанные
данные. При возникновении ошибки записи необходимо как можно скорее
восстановить и перегенерировать данные.
Изменение коэффициента чередования или других параметров для диска ccd
обычно приводит к уничтожению ранее содержавшихся на нем данных.
ФАЙЛЫ
/dev/ccd*
Специальные файлы устройств ccd
ИСТОРИЯ
Драйвер "склееных" дисков был первоначально написан в университете
штата Юта (University of Utah).