Документация по ОС FreeBSD Пятница, 26.04.2024, 17:03
Приветствую Вас Гость | RSS
Меню сайта

Категории каталога
Мои статьи [0]
Установка и настройка [281]
X Window [25]
Man pages [30]
Ports & Packages [26]
cvs [18]
Multimedia [20]
Нововсти в мире Unix [0]
RFC [4]
RFC (Request for Comments, Запрос на комментарии) - серия документов, публикуемая сообществом исследователей и разработчиков, руководствующихся практическими интересами, в которой описывается набор протоколов и обобщается опыт функционирования Интернет.
Безопасность [52]
Работа с железом [58]
Книги по FreeBSD [17]
Сеть [505]
Программирование [40]
FireWall [58]
Темы экзамена BSDA [14]
Официальные темы экзамена BSDA, включая подробноые описания и советы по обучению.

Главная » Статьи » Man pages

vinum(8) (Часть 2)

  Том с зеркалированием из двух сплетений с чередованием

В качестве альтернативы, используйте опцию -s для создания зеркалированного тома из двух сплетений с чередованием:

vinum -> mirror -v -n raid10 -s /dev/da1h /dev/da2h /dev/da3h /dev/da4h
drive vinumdrive0 device /dev/da1h
drive vinumdrive1 device /dev/da2h
drive vinumdrive2 device /dev/da3h
drive vinumdrive3 device /dev/da4h
volume raid10 setupstate
 plex name raid10.p0 org striped 279k
 sd name raid10.p0.s0 drive vinumdrive0 size 849825b
 sd name raid10.p0.s1 drive vinumdrive2 size 849825b
 plex name raid10.p1 org striped 279k
 sd name raid10.p1.s0 drive vinumdrive1 size 1173665b
 sd name raid10.p1.s1 drive vinumdrive3 size 1173665b
V raid10 State: up Plexes: 2 Size: 1146 MB
P raid10.p0 S State: up Subdisks: 2 Size: 829 MB
P raid10.p1 S State: up Subdisks: 2 Size: 1146 MB
S raid10.p0.s0 State: up PO: 0 B Size: 414 MB
S raid10.p0.s1 State: up PO: 279 kB Size: 414 MB
S raid10.p1.s0 State: up PO: 0 B Size: 573 MB
S raid10.p1.s1 State: up PO: 279 kB Size: 573 MB

В этом случае полезная часть тома - еще меньше, поскольку первое сплетение было уменьшено до размера самого маленького диска.

ФАЙЛ КОНФИГУРАЦИИ

Утилита vinum требует, чтобы все параметры команд create были в файле конфигурации. Записи в файле конфигурации определяют тома, сплетения и поддиски, и могут быть в произвольном формате, но каждая запись должна быть в отдельной строке.

  Единицы измерения

Некоторые параметры файла конфигурации задают размер (длины, размеры полос). Эти значения можно задавать в байтах или с указанием одной из следующих единиц измерения:

s Указывает, что значение задано в секторах по 512 байтов.
k Указывает, что значение задано в килобайтах (1024 байта).
m Указывает, что значение задано в мегабайтах (1048576 байтов).
g Указывает, что значение задано в гигабайтах (1073741824 байта).
b Используется для совместимости с VERITAS. Указывает, что значение задано в блоках по 512 байтов. Это сокращение необнозначно, поскольку слово "блок" используется в разных смыслах, и его использование не рекомендуется. Используйте единицу измерения 's'.

Например, значение 16777216 байтов можно также записать как 16m, 16384k или 32768s.

Файл конфигурации может содержать следующие записи:

drive имя имя_устройства [опции]
Определяет диск. Поддерживаются следующие опции:
device имя_устройства
Задает устройство, на котором находится диск. Имя_устройства должно быть именем раздела диска, например, /dev/da1e или /dev/ad3s2h, это устройство должно быть типа vinum. Не испольуйте раздел "c", который зарезервирован для представления всего диска.

hotspare
Определяет диск как диск "горячей замены" ("hot spare" drive), который предназначен для автоматической замены сбойного диска. Утилита vinum не позволяет использовать этот диск для любых других целей. В частности, на нем нельзя создавать поддиски. Эта возможность еще не полностью реализована.
volume имя [опции]
Определяет том с указанным именем. Поддерживаются следующие опции:
plex имя_сплетения
Добавляет указанное сплетение к тому. Если имя сплетения указано как *, утилита vinum будет искать определение сплетения в следующей записи файла конфигурации после определения тома.

readpol правило
Задает правило чтения (read policy) для тома. В качестве правила можно указывать значение round или prefer имя_предпочтительного_сплетения. Утилита vinum удовлетворяет запросы на чтение только с одного из сплетений. Правило чтения round означает, что каждое последующее чтение должно выполняться с другого сплетения, циклически. Правило чтения prefer требует выполнять чтение каждый раз с явно указанного сплетения.

setupstate
При создания тома из нескольких сплетений предполагать, что содержимое всех сплетений согласовано. Обычно это не так, поэтому стандартно утилита vinum устанавливает для всех сплетений, кроме первого, состояние faulty. Используйте команду start, чтобы сначала привести их в согласованное состояние. В случае конкатенированных сплетений и сплетений с чередованием, однако, оставление сплетений в несогласованном состоянии обычно не вызывает проблем: при использовании тома для создания файловой системы или раздела подкачки прежнее содержимое дисков обычно не представляет интереса, поэтому исходную согласованность можно проигнорировать. Если вы готовы пойти на этот риск, используйте ключево слово setupstate. Оно применяется только к сплетениям, определенным непосредственно после соответствующего тома в файле конфигурации. При добавлении сплетений к тому в дальнейшем, их необходимо интегрировать вручную с помощью команды start.

Учтите, что для сплетений типа RAID-5 надо обязательно использовать команду init: иначе при сбое одного из поддисков произойдет существенное повреждение данных.

plex [опции]
Определяет сплетение. В отличие от тома, имя сплетения задавать не обязательно. Поддерживаются следующие опции:
name имя_сплетения
Задает имя сплетения. Учтите, что ключевое слово name надо обязательно использовать при именовании сплетения или поддиска.

org организация [размер_полосы]
Задает организацию сплетения. В качестве организации может быть задано одно из значений concat, striped или raid5. Для сплетений типа striped и raid5 необходимо указывать параметр размер_полосы, а вот для сплетения типа concat его указывать нельзя. Для сплетения типа striped значение размер_полосы задает ширину каждой полосы. Для сплетения типа raid5 оно задает размер группы. Группа - это часть сплетения, хранящая биты четности на одном и том же поддиске. Размер сплетения должен быть кратен размеру группы (другими словами, результат деления размера сплетения на размер полосы должен быть целым числом), а размер группы должен быть кратен размеру сектора диска (512 байтов).

Для оптимальной производительности полосы должны быть размером минимум 128 Кбайт: меньший размер приведет к существенному увеличению количества операций ввода/вывода из-за распределения отдельных запросов по нескольким дискам. Повышение производительности из-за увеличения количества одновременных передач, вызванное таким распределением, не скомпенсирует падение производительности в связи с дополнительными задержками. Хорошей рекомендацией будет выбирать размер полосы в диапазоне от 256 Кбайт до 512 Кбайт. Степеней двойки при этом, однако, лучше избегать: обычно они приводят к размещению всех суперблоков на первом поддиске. Упрощенные команды используют размер полосы 279 Кбайт, что дает разумное распределение суперблоков.

Сплетение с чередованием должно иметь минимум два поддиска (иначе это просто конкатенированное сплетение), причем, одинакового размера. Сплетение типа RAID-5 должно иметь как минимум три поддиска, причем, одинакового размера. Практически сплетение типа RAID-5 должно включать не менее 5 поддисков.

volume имя_тома
Добавляет сплетение к указанному тому. Если ключевое слово volume не указано, сплетение будет добавлено к последнему тому, упоминавшемуся в файле конфигурации.

sd имя_поддиска смещение
Добавляет указанный поддиск к сплетению с указанного смещения.
subdisk [опции]
Определяет поддиск. Поддерживаются следующие опции:
name имя
Задает имя поддиска. Задавать имя для поддиска не обязательно - см. раздел "ИМЕНОВАНИЕ ОБЪЕКТОВ" выше. Учтите, что если необходимо задать имя поддиска, ключевое слово name указывать обязательно.

plexoffset смещение
Задает начальное смещение поддиска в сплетении. Если смещение не указано, утилита vinum выделяет место сразу после предыдущего поддиска, если он уже был определен, или с начала сплетения в противном случае.

driveoffset смещение
Задает начальное смещение поддиска на диске. Если смещение не задано, vinum выделяет первый же фрагмент свободного места достаточного размера (см. length) на диске.

length длина
Задает "длину" (размер) поддиска. Это ключевое слово указывать обязательно. Стандартного значения нет, но можно указать значение 0 - оно означает "использовать самый большой фрагмент свободного места на диске". Если диск пустой, это означает, что для поддиска будет использован весь диск. Ключевое слово length можно сокращать до len.

plex сплетение
Задает сплетение, которому принадлежит поддиск. По умолчанию, поддиск принадлежит последнему определенному сплетению.

drive диск
Задает диск, на котором находится поддиск. По умолчанию, поддиск находится на последнем указанном диске.

retryerrors
Указывает, что поддиск не должен отключаться в случае невосстановимых ошибок. Обычно vinum при возникновении таких ошибок делает весь поддиск недоступным.

ПРИМЕР ФАЙЛА КОНФИГУРАЦИИ

# Пример файла конфигурации vinum
#
# Наши диски
drive drive1 device /dev/da1h
drive drive2 device /dev/da2h
drive drive3 device /dev/da3h
drive drive4 device /dev/da4h
drive drive5 device /dev/da5h
drive drive6 device /dev/da6h
# Том из одного сплетения с чередованием
volume tinyvol
 plex org striped 279k
 sd length 64m drive drive2
 sd length 64m drive drive4
volume stripe
 plex org striped 279k
 sd length 512m drive drive2
 sd length 512m drive drive4
# Два сплетения
volume concat
 plex org concat
 sd length 100m drive drive2
 sd length 50m drive drive4
 plex org concat
 sd length 150m drive drive4
# Том из одного сплетения с чередованием и одного конкатенированного
volume strcon
 plex org striped 279k
 sd length 100m drive drive2
 sd length 100m drive drive4
 plex org concat
 sd length 150m drive drive2
 sd length 50m drive drive4
# Том из сплетения типа RAID-5 и сплетения с чередованием
# Обратите внимание, что сплетение RAID-5 длинее на 
# один поддиск
volume vol5
 plex org striped 491k
 sd length 1000m drive drive2
 sd length 1000m drive drive4
 plex org raid5 273k
 sd length 500m drive drive1
 sd length 500m drive drive2
 sd length 500m drive drive3
 sd length 500m drive drive4
 sd length 500m drive drive5

ПРИНЦИПЫ РАЗМЕЩЕНИЯ ДИСКОВ

Диски vinum в настоящее время являются разделами дисков BSD. Они должны быть типа vinum, чтобы предотвратить перезапись данных, используемых для других целей. Для изменения определения типа раздела используйте команду disklabel -e. Ниже представлено типичное разбиение диска на разделы, выдаваемое disklabel(8):

8 partitions:
# size offset fstype [fsize bsize bps/cpg]
 a: 81920 344064 4.2BSD 0 0 0 # (Cyl. 240*- 297*)
 b: 262144 81920 swap # (Cyl. 57*- 240*)
 c: 4226725 0 unused 0 0 # (Cyl.0 - 2955*)
 e: 81920 0 4.2BSD 0 0 0 # (Cyl.0 - 57*)
 f: 1900000 425984 4.2BSD 0 0 0 # (Cyl. 297*- 1626*)
 g: 1900741 2325984 vinum 0 0 0 # (Cyl. 1626*- 2955*)

В этом примере, раздел "g" может использоваться как раздел vinum. Разделы "a", "e" и "f" могут использоваться для создания файловых систем UFS или как разделы ccd. Раздел "b" является разделом подкачки, а раздел "c" представляет весь диск в целом и не должен использоваться для любых других целей.

Утилита vinum использует первые 265 секторов каждого раздела для информации о конфигурации, поэтому максимальный размер поддиска будет на 265 секторов меньше, чем объем диска.

ЖУРНАЛЬНЫЙ ФАЙЛ

Утилита vinum поддерживает журнальный файл, по умолчанию - /var/log/vinum_history, в который она записывает выполненные команды vinum. Имя этого файла можно изменить путем установки соответствующего значения переменной среды VINUM_HISTORY.

Перед каждым сообщением в журнальном файле указывается дата и время. Стандартный формат - "%e %b %Y %H:%M:%S". Подробнее о строке формата см. на странице справочного руководства strftime(3). Нестандартный формат можно задать в переменной среды VINUM_DATEFORMAT.

КАК НАСТРОИТЬ VINUM

В этом разделе представлены практические советы по использованию vinum в системе.

  Где размещать данные

Прежде всего, надо решить, где размещать данные. Необходимо выделить разделы диска специально для vinum. Это должны быть именно разделы, а не устройства в целом; нельзя использовать также раздел "c". Например, прекрасно подходят имена устройств /dev/da0e или /dev/ad3s4a. Не подходят устройства /dev/da0 и /dev/da0s1, поскольку представляют диск в целом, а не раздел, а также раздел /dev/ad1c, представляющий диск в целом - он должен быть типа unused. Примеры см. выше в разделе ПРИНЦИПЫ РАЗМЕЩЕНИЯ ДИСКОВ.

  Проектирование томов

Настройка томов vinum зависит от поставленных целей. Есть несколько вариантов:

  1. Может потребоваться объединить несколько небольших дисков для получения файловой системы достаточного размера. Например, при наличии пяти небольших дисков, если необходимо использовать все дисковое пространство как один том, можно создать конфигурационный файл следующего вида:
    drive d1 device /dev/da2e
    drive d2 device /dev/da3e
    drive d3 device /dev/da4e
    drive d4 device /dev/da5e
    drive d5 device /dev/da6e
    volume bigger
     plex org concat
     sd length 0 drive d1
     sd length 0 drive d2
     sd length 0 drive d3
     sd length 0 drive d4
     sd length 0 drive d5
    

    В данном случае длина поддисков задается как 0, что означает "использоваться самый большой фрагмент свободного места, который удастся найти на диске". Если поддиск - единственный на диске, под него будет использоваться все свободное место.

  2. Можно настраивать vinum для получения дополнительной защиты от сбоев дисков. Для этого можно использовать либо конфигурацию RAID-1, которую также называют "зеркалирование", либо конфигурацию RAID-5, с битами четности.

    Для настройки зеркалирования создайте несколько сплетений в томе. Например, для создания зеркалированного тома размером 2 Гбайта можно использовать следующий файл конфигурации:

    drive d1 device /dev/da2e
    drive d2 device /dev/da3e
    volume mirror
     plex org concat
     sd length 2g drive d1
     plex org concat
     sd length 2g drive d2
    

    При создании дисков с зеркалированием важно убедиться, что данные каждого сплетения находятся на другом физическом диске, чтобы драйвер vinum мог обращаться ко всему адресному пространству тома даже при сбое одного диска. Учтите, что для каждого сплетения потребуется столько же места, сколько и для всего тома: в нашем примере том имеет размер 2 Гбайта, поэтому каждое сплетение (и каждый поддиск) должны быть размером 2 Гбайта, так что всего на дисках будет использовано 4 Гбайта.

    Для настройки массива RAID-5 создайте одно сплетение типа raid5. Например, для создания эквивалентного тома размером 2 Гбайта, остающегося работоспособным при сбое одного диска, можно использовать следующий файл конфигурации:

    drive d1 device /dev/da2e
    drive d2 device /dev/da3e
    drive d3 device /dev/da4e
    drive d4 device /dev/da5e
    drive d5 device /dev/da6e
    volume raid
     plex org raid5 433k
     sd length 512m drive d1
     sd length 512m drive d2
     sd length 512m drive d3
     sd length 512m drive d4
     sd length 512m drive d5
    

    Сплетения типа RAID-5 требуют минимум трех поддисков, один из которых используется для хранения информации о четности и дла хранения данных не доступен. Чем больше дисков используется, тем большая доля дискового прострнаства может использоваться для хранения собственно данных. В нашем примере суммарно используется 2,5 Гбайта по сравнению с 4 Гбайтами в конфигурации с зеркалированием. Если придется использовать всего три диска, для хранения той же информации потребуется 3 Гбайта, например:

    drive d1 device /dev/da2e
    drive d2 device /dev/da3e
    drive d3 device /dev/da4e
    volume raid
     plex org raid5 433k
     sd length 1g drive d1
     sd length 1g drive d2
     sd length 1g drive d3
    

    Как и при создании дисков с зеркалированием, важно проверить, что данные каждого поддиска находятся на другом физическом диске, чтобы драйвер vinum мог получить доступ ко всему адресонму пространству тома даже при сбое одного диска.

  3. Можно настроить vinum для обеспечения одновременного доступа к файловой системе большего количества пользователей. Во многих случаях, доступ к файловой системе ограничивается скоростью диска. Распределяя том по нескольким дискам, можно увеличить пропускную способность при многопользовательском доступе. Этот метод дает минимальные преимущества или вообще не дает преимуществ, если процессы обращаются к дискам по одному. Утилита vinum использует метод под названием "чередование" (иногда соответствующий массив называют RAID-0) для увеличения одновременности при доступе. Имя RAID-0 сбивает с толку: чередование не обеспечивает ни избыточности, ни повышенной надежности. Фактически, оно снижает надежность, поскольку сбой единственного диска делает бесполезным весь том, и чем больше дисков входит в том, тем больше вероятность, что на одном из них произойдет сбой.

    Для реализации чередования используйте сплетение с чередованием:

    drive d1 device /dev/da2e
    drive d2 device /dev/da3e
    drive d3 device /dev/da4e
    drive d4 device /dev/da5e
    volume raid
     plex org striped 433k
     sd length 512m drive d1
     sd length 512m drive d2
     sd length 512m drive d3
     sd length 512m drive d4
    

    Сплетение с чередованием должно состоять, как минимум, из двух поддисков, но повышение производительности будет больше при увеличении количества дисков.

  4. Можно попытаться получить лучшее из двух миров и обеспечить как защиту от сбоев, так и высокую производительность. Соответствующий массив иногда называют RAID-10 (комбинация RAID-1 и RAID-0), хотя и это имя сбивает с толку. Можно реализовать такой массив vinum с помощью следующего файла конфигурации:
    drive d1 device /dev/da2e
    drive d2 device /dev/da3e
    drive d3 device /dev/da4e
    drive d4 device /dev/da5e
    volume raid setupstate
     plex org striped 433k
     sd length 512m drive d1
     sd length 512m drive d2
     sd length 512m drive d3
     sd length 512m drive d4
     plex org striped 433k
     sd length 512m drive d4
     sd length 512m drive d3
     sd length 512m drive d2
     sd length 512m drive d1
    

    В данном случае сплетения сосданы с чередованием, что повышает производительность, а то, что их два, повышает надежность. Обратите внимание, что в этом примере поддиски второго сплетения идут в порядке, противоположном первому сплетению. Это сделано из соображений производительности, которые обсуждаются далее. Кроме того, определение тома включает ключевое слово setupstate, что гарантирует запуск всех сплетений сразу после создания.

  Создание томов

После создания необходимых файлов конфигурации запустите vinum и создайте тома. В следующем примере конфигурация задана в файле configfile:

# vinum create -v configfile
 1: drive d1 device /dev/da2e
 2: drive d2 device /dev/da3e
 3: volume mirror
 4: plex org concat
 5: sd length 2g drive d1
 6: plex org concat
 7: sd length 2g drive d2
Configuration summary

Drives: 2 (4 configured)
Volumes: 1 (4 configured)
Plexes: 2 (8 configured)
Subdisks: 2 (16 configured)

Drive d1: Device /dev/da2e
 Created on vinum.lemis.com at Tue Mar 23 12:30:31 1999
 Config last updated Tue Mar 23 14:30:32 1999
 Size: 60105216000 bytes (57320 MB)
 Used: 2147619328 bytes (2048 MB)
 Available: 57957596672 bytes (55272 MB)
 State: up
 Last error: none
Drive d2: Device /dev/da3e
 Created on vinum.lemis.com at Tue Mar 23 12:30:32 1999
 Config last updated Tue Mar 23 14:30:33 1999
 Size: 60105216000 bytes (57320 MB)
 Used: 2147619328 bytes (2048 MB)
 Available: 57957596672 bytes (55272 MB)
 State: up
 Last error: none

Volume mirror: Size: 2147483648 bytes (2048 MB)
 State: up
 Flags:
 2 plexes
 Read policy: round robin

Plex mirror.p0: Size: 2147483648 bytes (2048 MB)
 Subdisks:1
 State: up
 Organization: concat
 Part of volume mirror
Plex mirror.p1: Size: 2147483648 bytes (2048 MB)
 Subdisks:1
 State: up
 Organization: concat
 Part of volume mirror

Subdisk mirror.p0.s0:
 Size: 2147483648 bytes (2048 MB)
 State: up
 Plex mirror.p0 at offset 0
Subdisk mirror.p1.s0:
 Size: 2147483648 bytes (2048 MB)
 State: up
 Plex mirror.p1 at offset 0

Опция -v требует от утилиты vinum выдавать содержимое файла по ходу конфигурирования. Далее она выдает информацию о текущей конфигурации в том же формате, что и команда list -v.

  Создание дополнительных томов

После создания томов vinum, драйвер vinum отслеживает их состояние в своих внутренних файлах конфигурации. Снова создавать их не придется. В частности, при повторном выполнении команды create будут созданы дополнительные объекты:

# vinum create sampleconfig
Configuration summary

Drives: 2 (4 configured)
Volumes: 1 (4 configured)
Plexes: 4 (8 configured)
Subdisks: 4 (16 configured)

D d1 State: up Device /dev/da2e Avail: 53224/57320 MB (92%)
D d2 State: up Device /dev/da3e Avail: 53224/57320 MB (92%)

V mirror State: up Plexes: 4 Size: 2048 MB

P mirror.p0 C State: up Subdisks: 1 Size: 2048 MB
P mirror.p1 C State: up Subdisks: 1 Size: 2048 MB
P mirror.p2 C State: up Subdisks: 1 Size: 2048 MB
P mirror.p3 C State: up Subdisks: 1 Size: 2048 MB

S mirror.p0.s0 State: up PO:0 B Size: 2048 MB
S mirror.p1.s0 State: up PO:0 B Size: 2048 MB
S mirror.p2.s0 State: up PO:0 B Size: 2048 MB
S mirror.p3.s0 State: up PO:0 B Size: 2048 MB

Как показывает этот пример (на этот раз добавлена опция -f), повторное выполнение команды create привело к созданию четырех новых сплетений, каждое - с новым поддиском. Если необходиом создать другие тома, создайте для них новые файлы конфигуации. В них не обязательно задавать диски, о которых драйвер vinum уже знает. Например, для создания тома raid на четырех дисках, /dev/da1e, /dev/da2e, /dev/da3e и /dev/da4e, достаточно упомянуть два оставшихся:

drive d3 device /dev/da1e
drive d4 device /dev/da4e
volume raid
 plex org raid5 433k
 sd size 2g drive d1
 sd size 2g drive d2
 sd size 2g drive d3
 sd size 2g drive d4

С помощью этого файла конфигурации мы получим:

# vinum create newconfig
Configuration summary

Drives: 4 (4 configured)
Volumes: 2 (4 configured)
Plexes: 5 (8 configured)
Subdisks: 8 (16 configured)

D d1 State: up Device /dev/da2e Avail: 51176/57320 MB (89%)
D d2 State: up Device /dev/da3e Avail: 53220/57320 MB (89%)
D d3 State: up Device /dev/da1e Avail: 53224/57320 MB (92%)
D d4 State: up Device /dev/da4e Avail: 53224/57320 MB (92%)

V mirror State: down Plexes: 4 Size: 2048 MB
V raid State: down Plexes: 1 Size: 6144 MB

P mirror.p0 C State: init Subdisks: 1 Size: 2048 MB
P mirror.p1 C State: init Subdisks: 1 Size: 2048 MB
P mirror.p2 C State: init Subdisks: 1 Size: 2048 MB
P mirror.p3 C State: init Subdisks: 1 Size: 2048 MB
P raid.p0 R5 State: init Subdisks: 4 Size: 6144 MB

S mirror.p0.s0 State: up PO: 0 B Size: 2048 MB
S mirror.p1.s0 State: up PO: 0 B Size: 2048 MB
S mirror.p2.s0 State: up PO: 0 B Size: 2048 MB
S mirror.p3.s0 State: up PO: 0 B Size: 2048 MB
S raid.p0.s0 State: empty PO: 0 B Size: 2048 MB
S raid.p0.s1 State: empty PO: 433 kB Size: 2048 MB
S raid.p0.s2 State: empty PO: 866 kB Size: 2048 MB
S raid.p0.s3 State: empty PO: 1299 kB Size: 2048 MB

Обратите внимание на рразмер сплетения RAID-5: он составляет всего 6 Гбайт, хотя совместно все его компоненты занимают 8 Гбайт дискового пространства. Причина в том, что пространство объемом с один поддиск используется для хранения данных о четности.

  Перезапуск Vinum

После перрезагрузки системы запустите vinum с помощью команды start:

 # vinum start

Эта команда запустит все диски vinum в системе. Если, по любой причине, необходимо запустить только некоторые из них, используйте команду read .

  Сообрражения производительности

Есть рряд ошибочных представлений о том, как настраивать RAID-массив для достижения наилучшей производительности. В частности, в большинстве систем используется слишком маленький размер полосы. Следующее обсуждение применимо ко всем RAID-системам, а не только к vinum.

Система блочного ввода/вывода ОС FreeBSD выдает запросы на чтение от 0,5 Кбайта до 128 Кбайт; в среднем - около 8 Кбайт. Ни в одной системе чередования нельзя предотвратить разбиение запроса на два физических запроса, и если сделать размер полосы слишком маленьким, он может быть разбит и на нескольк запросов. Это приведет к существенному падению производительности: уменьшение времени передачи для каждого диска с лихвой компенсиуется на порядок увеличивающимся ожиданием доступа.

При современных размерах дисков и состоянии системы ввода/вывода FreeBSD, следует ожидать достаточно небольшой доли фрагментированных запросов при использовании полос размером от 256 до 512 Кбайт; хотя при обоснованном применении RAID-массивов нет очевидных причин не увеличить размер до 2-4 Мбайт для больших дисков.

При выборе размера полосы учитывайте, что большинство современных файловых систем UFS использует группы цилиндров размером 32 Мбайта. Если размер полосы и количество дисков - степени двойки, вероятно, что все суперблоки и индексные дескрипторы будут помещены на один и тот же поддиск, что существенно повлияет на производительность. Выбирайте лучше нечетное число, например, 479 Кбайт.

Самый простой способ учесть влияние любой передачи данных в системе с множественным доступом - рассматривать ее с точки зрения потенциального узкого места, дисковой подсистемы: сколько всего времени работы диска потребует эта передача? Поскольку практически все кэшируется, время от выдачи запроса до его выполнения не так важно: важно, сколько всего времени запрос активно использует диски, время, в течение которого диски недоступны для выполнения передач других данных. В результате, не так уж важно, выполняются ли передачи одновременно или в разное врремя. Практически, время, которое нас интересует - это сумма общей задержки (времени на позиционирование и ожидания при вращении пластин, или времени, за которое требуемые данные окажутся под головками диска) и общего времени передачи. Для передачи данных по одному и тому же адресу на диски с той же скоростью вращения, время передачи зависит только от объема пеедаваемых данных.

Рассмотрим типичную статью дискуссионной группы или web-страницу размером 24 Кбайта, которая, вероятно, будети прочитана одной операцией ввода/вывода. Пусть диски обеспечивают скорость передачи 6 Мбайт/сек, среднее время позиционирования составляет 8 миллисекунд, а файловая система имеет размер блока 4 Кбайта. Поскольку прочитать надо 24 Кбайта, фрагменты можнео не учитывать, так что, считаем, что файл начинается на границе очердных 4 Кбайт. Количество необходимых передач зависит от того, где начинается блок: в данном случае, оно вычисляется по формуле (S + F - 1) / S, где S - размер полосы в блоках файловой системы, а F - размер файла в блоках файловой системы.

  1. При размере полосы 4 Кбайта потребуется 6 передач. Общая нагрузка на дисковую подсистему: задержка - 48 миллисекунд, передача - 2 миллисекунды, всего - 50 миллисекунд.
  2. При размере полосы 8 Кбайт в среднем потребуется 3,5 передачи. Общая нагрузка на дисковую подсистему: задержка - 28 миллисекунд, передача - 2 миллисекунды, всего - 30 миллисекунд.
  3. При размере полосы 16 Кбайт в среднем потребуется 2,25 передачи. Общая нагрузка на дисковую подсистему: задержка - 18 миллисекунд, передача - 2 миллисекунды, всего - 20 миллисекунд.
  4. При размере полосы 256 Кбайт в среднем потребуется 1,08 передачи. Общая нагрузка на дисковую подсистему: задержка - 8,6 миллисекунд, передача - 2 миллисекунды, всего - 10,6 миллисекунды.
  5. При размере полосы 4 Мбайта в среднем потребуется 1,0009 передачи. Общая нагрузка на дисковую подсистему: задержка - 8,01 миллисекунды, передача - 2 миллисекунды, всего - 10,01 миллисекунды.

Похоже, что у некоторых аппаратных RAID-систем есть проблемы с большими полосами: они, по-видимому, передают на диск и с диска только всю полосу, так что увеличение размера полосы может отрицательно влиять на производительность. Утилита vinum от этой проблемы не страдает: все обмены данными оптимизируются и ненужные данные не передаются.

Учтите, что ни одна из широко известных программ оценки производительности не реализует условия действительно множественного доступа (более 100 одновременно работающих пользователей), так что правильность представленных утверждений проверить трудно.

С учетом представленных соображений, на производительность тома vinum влияют следующие факторы:

  1. Чередование повышает производительность только при множественном доступе, поскольку повышает вероятность того, что отдельные запросы будут переадресованы на разные диски.
  2. Конкатенированные файловые системы UFS из нескольких дисков тоже могут повысить производительность при доступе к множеству файлов, поскольку UFS делит файловую систему на группы цилиндров и пытается поддерживать файлы в одной группе цилиндров. В общем случае, В общем случае, это не так эффективно, как чередование.
  3. Зеркалирование может повысить производительность множественного доступа при чтении, поскольку по умолчанию каждое следующее чтение vinum выполняет со следующего сплетения.
  4. Зеркалирование снижает производительность для всех видов записи, будь-то множественные или отдельные, поскольку данные надо записать на все сплетения. Это объясняет выбранное размещение дисков в представленном ранее примере конфигурации с зеркалированием: если соответствующий поддиск в каждом сплетении располагается на другом физическом диске, команды записи могут выполняться параллельно, а при размещении на одном физическом диске они будут выполняться строго последовательно.
  5. Чтения с массива RAID-5 имеют, по сути, те же особенности, что и чтения с массива с чередованием, если только сплетение с чередованием не входит в том с зеркалированием, - в этом случае производительность тома с зеркалированием будет выше.
  6. Скорость записи на массив RAID-5 составляет примерно 25% от скорости записи на массив с чередованием: для выполнения записи утилита vinum должна сначала прочитать блок данных и соответствующий блок четности, выполнить ряд вычислений и записать блок четности и блок данных, что требует в четыре раза больше передач, чем при записи на сплетение с чередованием. С другой стороны, это компенсируется отсутствием затрат на зеркалирование, поэтому запись на том с единственным сплетением типа RAID-5 выполняется примерно вдвое медленнее, чем на правильно сконфигурированный том из двух сплетений с чередованием.
  7. При изменении конфигурации vinum (например, при добавлении или удалении объектов, или при изменении состояния одного из объектов), vinum записывает до 128 Кбайт обновленной информации о конфигурации на каждый диск. Чем больше дисков задействовано, тем больше времени это займет.

  Создание файловых систем на томах Vinum

Перед созданием файловой системы на томе vinum запускать утилиту disklabel(8) не нужно. Просто выполните команду newfs(8). Используйте опцию -v, чтобы указать, что устройство не разбито на разделы. Например, чтобы создать файловую систему на томе mirror, выполните следующую команду:

# newfs -v /dev/vinum/mirror

При конфигурировании vinum следует учитывать также следующее:

  • Создание нескольких дисков vimun на одном физическом диске не дает никаких преимуществ. На каждом диске 131,5 Кбайта используется для метки и хранения информации о конфигурации, а изменение конфигурации вызывает снижение производительности. Используйте лучше поддиски соответствующего размера.
  • Можно увеличить размер конкатенированного сплетения vinum, но вот размер спелетений с чередованием и сплетений типа RAID-5 в настоящее время увеличить нельзя. В настоящее время размер существующей файловой системы UFS увеличить тоже нельзя, но планируется сделать сплетения и файловые системы расширяемыми.

УПРАВЛЕНИЕ СОСТОЯНИЕМ

Для объектов vinum существует понятие состояния. Подробнее см. на странице справочного руководства vinum(4). Объекты полностью доступны тольк в запущеном (up) состоянии. Чтобы изменить состояние объекта на up, используйте команду start. Для перевода объекта в состояние down используйте команду stop. Обычно переход в другие состояния осуществляется автоматически с учетом взаимосвязей объектов. Например, при добавлении сплетения к тому поддиски сплетения оказываются в состоянии empty, показывая, что хотя фактически диск доступен, данные на поддиске некорректны. В результате установки такого состояния, соответствующее сплетение будет установлено в состояние сбоя (faulty).

  Состояние "reviving"

Во многих случаях при запуске поддиска система должна скопировать данные на поддиск. В зависимости от размера поддиска, это может потребовать много времени. На это время поддиск устанавливается в состояние reviving ("оживляется"). После успешного завершения операции копирования он автоматически запускается (устанавливается в состояние up). Можно останавливать и перезапускать процесс, выполняющий "оживление". Система отслеживает, насколько диск уже "оживлен" и, при повторном выполнении команды start, копирование продолжается с этой позиции.

Для поддержки согласованности тома пока одно или несколько его сплетений "оживляется", драйвер vinum записывает на поддиски, уже восстановленные до места записи. Он может также читать из сплетения, если считываемая область уже была восстановлена.

ОСОБЕННОСТИ

Следующие особенности работы не связаны с ошибками, и у них есть весьма существенные причины, но, оказалось, что они вызывают непонимание. Каждая из этих особенностей уже была описана в соответствующем разделе выше.

  1. Диски vinum являются разделами диска UNIX, и должны быть разделами типа vinum. Это отличается от драйвера ccd, которому необходимы разделы типа 4.2BSD. Такое поведение драйвера ccd провоцирует опасные ошибки (в оригинале - is an invitation to shoot yourself in the foot. Тому, кто придумает адекватный перевод - приз. Прим. В.К.): при использовании ccd можно легко перезаписать файловую систему. Утилита vinum этого не допустит.

    По аналогичным причинам команда vinum start не позволят создать диск на разделе "c". Раздел "c" используется системой для представления всего диска, и должен быть типа unused. Тут есть явный конфликт, который утилита vinum решает, просто не используя раздел "c".

  2. При создании тома с несколькими сплетениями утилита vinum не инициализирует сплетения автоматически. Это означает, что содержимое их неизвестно, но определенно не согласовано. В результате, по умолчанию vinum устанавливает для всех вновь созданных сплетений, кроме первого, состояние faulty. Чтобы синхронизировать их с первым сплетением, необходимо их запустить, что приводит к копированию данных со сплетения, находящегося в состоянии up. В зависимости от размера задействованных поддисков, это может потребовать много времени.

    На практике пользователей не часто интересует, что было в сплетении при создании, и другие диспетчеры томов жульничают, просто устанавливая всем сплетениям состояние up. Утилита vinum предлагает два способа обеспечить перевод вновь созданных сплетений в состояние up:

    • Создать сплетения, а затем синхронизировать их с помощью команды vinum start.
    • Создать том (не сплетение) с ключевым словом setupstate, которое требует от утилиты vinum игнорировать любые несогласованности и сразу переводить сплетения в состояние up.
  3. Некоторые из команд, поддерживаемых в настоящее время утилитой vinum, фактически не нужны. По непонятным мне причинам оказывается, что пользователи часто пытаются использовать команды label и resetconfig, хотя, в частности, resetconfig выдает всевозможные страшные предупреждения. Не используйте эти команды без веских на то причин.
  4. Некоторые переходы из одного состояния в другое интуитивно непонятны. Фактчиески, не ясно, ошибка это или особенность. Если оказывается, что вы не можете запустить объект, находящийся в некотором странном состоянии, например, reborn subdisk, сначала попытайтесь перевести его в состояние stopped с помощью команд stop или stop -f. Если это сработает, вы затем сможете его запустить. Если окажется, что это единственный способ выйти из ситуации, и более простые методы не срабатывают, сообщите, пожалуйста, об этой ситуации.
  5. Если вы собираете модуль ядра с опцией -DVINUMDEBUG, надо утилиту vinum тоже собирать с опцией -DVINUMDEBUG, поскольку размер некоторых объектов данных, используемых обоими компонентами, зависит от этой опции. Если этого не сделать, команды будут завершаться с выдачей соответствующего сообщения об ошибке.
  6. Команда vinum read имеет особенно противный синтаксис. Когда-то она была единственным способом запуска vinum, но сейчас предпочтительнее использовать для этого команду vinum start. Команда vinum read должна использоваться только в целях сопровождения. Обратите внимание, что ее синтаксис изменился, а аргументами должны быть секции диска (slices), например, /dev/da0, а не разделы (partitions) вроде /dev/da0e.

ФАЙЛЫ

/dev/vinum
каталог с файлами устройств для объектов vinum
/dev/vinum/control
управляющее устройство для vinum
/dev/vinum/plex
коталог, содержащий файлы устройств для сплетений vinum
/dev/vinum/sd
каталог, содержащий файлы устройств для поддисков vinum

СРЕДА

VINUM_HISTORY
Имя журнального файла, по умолчанию, - /var/log/vinum_history.
VINUM_DATEFORMAT
Формат дат в журнальном файле, по умолчанию,  - "%e %b %Y %H:%M:%S".
EDITOR
Имя редактора, который будет использоваться для редактирования файлов конфигурации, по умолчанию - vi.

ССЫЛКИ

strftime(3), vinum(4), disklabel(8), newfs(8)
http://www.vinumvm.org/vinum/,
http://www.vinumvm.org/vinum/how-to-debug.html.

АВТОРЫ

Грег Лихи (Greg Lehey) <grog@lemis.com>

ИСТОРИЯ

Утилита vinum впервые появилась в ОС FreeBSD 3.0. Компонент RAID-5 системы vinum был разработан для корпорации Cybernet Inc. (www.cybernet.com), для ее продукта NetMAX.

ОШИБКИ

Драйвер vinum(4) не использует подсистему geom(4), поэтому тома vinum(4) нельзя использовать для средств, использующих GEOM, например, gbde(8).

FreeBSD 4.9 5 мая 2003 года

Copyleft (no c) - Fuck copyright! 2003-2004 В. Кравчук, OpenXS Initiative, перевод на русский язык

Категория: Man pages | Добавил: oleg (10.12.2007)
Просмотров: 1617 | Рейтинг: 0.0/0 |
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа

Beastie

Друзья сайта

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
links

Copyright MyCorp © 2024