Оригинальный текст предоставил
Christopher Shumway. Изменения
внёс Jim Brown.
При выборе решения для организации хранилища самыми важными характеристиками являются
скорость, надежность и стоимость. Редко все эти характеристики наличествуют одновременно;
обычно быстрое и надёжное устройство хранения стоит дорого, а при уменьшении стоимости в
жертву приносятся скорость работы или надёжность.
При проектировании описываемой далее системы в качестве самого важного фактора была
выбрана её стоимость, затем быстродействие и надёжность. Скорость передачи данных для
этой системы ограничивалась только пропускной способностью сети. И, хотя надёжность очень
важна, CCD-диск, описываемый ниже, обслуживал работу с данными, полные копии которых уже
хранились на дисках CD-R, так они могли быть с лёгкостью обновлены.
При выборе решения для массового хранения данных первым шагом является определение
ваших требований к нему. Если в ваших требованиях главными являются скорость или
надёжность, а не стоимость, то ваш выбор будет отличаться от описываемой в этом разделе
системы.
Кроме системного IDE-диска, основу описываемого далее CCD-диска общим объёмом примерно
в 90 Гбайт составили три IDE-диска Western Digital 30GB, 5400 RPM. В идеальном случае
каждый диск IDE имеет собственный контроллер и кабель, но для минимизации стоимости
дополнительные контроллеры IDE не использовались. Вместо этого диски были настроены при
помощи переключателей так, что на каждом IDE-контроллере находилось по одному ведущему и
одному ведомому диску.
До перезагрузки BIOS системы была настроена на автоматическое распознавание
подключенных дисков. Более важно то, что при перезагрузке их распознала FreeBSD:
ad0: 19574MB <WDC WD205BA> [39770/16/63] at ata0-master UDMA33
ad1: 29333MB <WDC WD307AA> [59598/16/63] at ata0-slave UDMA33
ad2: 29333MB <WDC WD307AA> [59598/16/63] at ata1-master UDMA33
ad3: 29333MB <WDC WD307AA> [59598/16/63] at ata1-slave UDMA33
Замечание: Если FreeBSD не распознала все диски, проверьте корректность
положения переключателей на них. На большинстве IDE-дисков имеется также переключатель
``Cable Select''. Он не имеет
отношения к выбору ведущего и ведомого устройств. Для получения помощи по правильному
положению переключателей обратитесь к документации по устройствам.
Затем определите, как сделать их частью файловой системы. Изучите справку по vinum(8) (Гл. 17) и ccd(4). В нашем
конкретном случае была выбрана технология ccd(4).
Драйвер ccd(4) позволяет вам
взять несколько идентичных дисков и объединить их в одну логическую файловую систему. Для
использования ccd(4) нужно ядро со
встроенной поддержкой ccd(4). Добавьте такую
строку в файл конфигурации ядра, перестройте и установите новое ядро:
pseudo-device ccd 4
В системах 5.X вместо этого вам нужно использовать такую строку:
device ccd
Замечание: Во FreeBSD 5.X нет нужды указывать количество устройств ccd(4) так как драйвер
устройства ccd(4) теперь
клонируется сам -- новые экземпляры устройств будут создаваться автоматически по
необходимости.
Во FreeBSD 3.0 и последующих версиях поддержка ccd(4) также может
быть обеспечена загрузкой подгружаемого модуля ядра.
Для настройки ccd(4) сначала вам
нужно воспользоваться утилитой disklabel(8) для
разметки дисков:
disklabel -r -w ad1 auto
disklabel -r -w ad2 auto
disklabel -r -w ad3 auto
При этом создаются метки для ad1c, ad2c и ad3c, которые занимают диск
полностью.
Замечание: Начиная с FreeBSD 5.1-RELEASE, на смену старой программе disklabel(8) пришла
утилита bsdlabel(8). У bsdlabel(8)
отсутствуют некоторые устаревшие опции и параметры; в примере выше параметр -r не может использоваться с bsdlabel(8). Для
получения дополнительной информации обратитесь к справочной странице п о bsdlabel(8).
Следующим шагом является изменение типа метки диска. Для редактирования дисков можно
использовать утилиту disklabel(8):
disklabel -e ad1
disklabel -e ad2
disklabel -e ad3
При этом в редакторе, задаваемом переменной окружения EDITOR
(обычно это vi(1)), открывается
текущая метка каждого диска.
Немодифицированная метка диска будет выглядеть примерно следующим образом:
8 partitions:
# size offset fstype [fsize bsize bps/cpg]
c: 60074784 0 unused 0 0 0 # (Cyl. 0 - 59597)
Добавьте новый раздел e для использования драйвером ccd(4). Как правило,
он может быть скопирован с раздела c, но поле fstype должно
иметь значение 4.2BSD. Теперь метка диска должна выглядеть
примерно так:
8 partitions:
# size offset fstype [fsize bsize bps/cpg]
c: 60074784 0 unused 0 0 0 # (Cyl. 0 - 59597)
e: 60074784 0 4.2BSD 0 0 0 # (Cyl. 0 - 59597)
Файл устройства для ccd0c может ещё не существовать, так
что для его создания предварительно выполните такие команды:
cd /dev
sh MAKEDEV ccd0
Замечание: Во FreeBSD 5.0
devfs(5) будет
управлять файлами устройств в каталоге /dev автоматически, так
что в использовании MAKEDEV необходимости нет.
Теперь, когда все диски размечены, вы должны построить ccd(4). Для этого
используйте утилиту ccdconfig(8) с
параметрами, подобными следующим:
ccdconfig ccd0 32 0 /dev/ad1e /dev/ad2e /dev/ad3e
Использование и значение каждого параметра описывается ниже:
- Первым аргументом является конфигурируемое устройство, в нашем случае /dev/ccd0c. Часть /dev/ является
необязательной.
- Чередование для файловой системы. Оно определяет размер единицы блока данных в
количестве дисковых блоков, каждый из которых обычно имеет объём в 512 байт. Таким
образом, при чередовании в 32 это будет составлять 16384 байт.
- Опции для ccdconfig(8). Если вы
хотите включить зеркалирование диска, то можете задать это здесь. В нашей конфигурации
зеркалирование для ccd(4) не
предусмотрено, поэтому здесь задан 0 (ноль).
- Последним параметром для ccdconfig(8) является
список устройств для объединения в массив. Для каждого устройства нужно задавать полное
имя.
После запуска ccdconfig(8)
устройство ccd(4) будет
отконфигурировано. Может будет построить файловую систему. Обратитесь к справке по
команде newfs(8) для выяснения
требуемых параметров, или просто запустите:
newfs /dev/ccd0c
Вообще говоря, вам потребуется монтировать ccd(4) при каждой
перезагрузке. Для этого сначала вы должны отконфигурировать это устройство. Запишите вашу
текущую конфигурацию в файл /etc/ccd.conf при помощи такой
команды:
ccdconfig -g > /etc/ccd.conf
При перезагрузке скрипт /etc/rc запускает команду ccdconfig -C, если существует файл /etc/ccd.conf. При этом ccd(4) автоматически
конфигурируется так, чтобы он мог быть смонтирован.
Замечание: Если при загрузке вы входите в однопользовательский режим, то перед
тем, как выполнять монтирование ccd(4) по команде mount(8), вам нужно
для конфигурации массива запустить следующую команду:
ccdconfig -C
Для автоматического монтирования ccd(4) поместите
запись о ccd(4) в файл /etc/fstab, чтобы он мог быть смонтирован во время загрузки
системы:
/dev/ccd0c /media ufs rw 2 2
Менеджер томов Vinum является драйвером блочного устройства, который реализует
виртуальные диски. Он отделяет дисковое оборудование от интерфейса блочного устройства и
работает с данными таким образом, что в результате повышается гибкость,
производительность и надёжность по сравнению с традиционным взглядом на дисковое
хранилище как на кусок дискового пространства. vinum(8) реализует
модели RAID-0, RAID-1 и RAID-5, как по отдельности, так и в комбинациях.
Обратитесь к Гл. 17 для получения более полной
информации о vinum(8).