Главная > Программы vinum - диспетчер логических томов (Logical Volume Manager)2004 г
vinum(8)Грег Лихи (Greg Lehey)перевод В. Кравчук, OpenXS Initiative НАЗВАНИЕvinum - программа управления диспетчером логических томов (Logical Volume Manager)СИНТАКСИСvinum [команда] [-опции]КОМАНДЫattach сплетение том [rename]attach поддиск сплетение [смещение] [rename] Подключает сплетение (plex) к тому (volume) или поддиск (subdisk) к сплетению. checkparity сплетение [-f] [-v] concat [-f] [-n имя] [-v] диски create [-f] файл_описания debug debug флаги detach [-f] [сплетение | поддиск] dumpconfig [диск ...] info [-v] [-V] init [-S размер] [-w] сплетение | поддиск label том l | list [-r] [-s] [-v] [-V] [том | сплетение | поддиск] ld [-r] [-s] [-v] [-V] [том] ls [-r] [-s] [-v] [-V] [поддиск] lp [-r] [-s] [-v] [-V] [сплетение] lv [-r] [-s] [-v] [-V] [том] makedev mirror [-f] [-n имя] [-s] [-v] диски move | mv -f диск объект ... printconfig [файл] quit read диск ... rename [-r] [диск | поддиск | сплетение | том] новое_имя rebuildparity сплетение [-f] [-v] [-V] resetconfig resetstats [-r] [том | сплетение | поддиск] rm [-f] [-r] том | сплетение | поддиск saveconfig setdaemon [значение] setstate состояние [том | сплетение | поддиск | диск] start start [-i интервал [-S размер] [-w] том | сплетение | поддиск stop [-f] [том | сплетение | поддиск] stripe [-f] [-n имя] [-v] диски ОПИСАНИЕУтилита vinum взаимодействует с компонентом ядра диспетчерра логических томов Vinum. Утилита предназначена либо для интерактивного использования, если запущена без аргументов командной строки, либо для выполнения одной переданной в командной строке команды. В интерактивном режиме утилита vinum сохрраняет хронологию выполнения команд. ОПЦИИПосле команд vinum могут указываться необязательные опции. Любую из следующих опций можно указывать для любой команды, но в некоторых случаях опции игнорируются. Например, команда stop игнорирует опции -v и -V. -f -i миллисекунд -n имя -r -s -S размер -v -V -w ДЕТАЛЬНОЕ ОПИСАНИЕ КОМАНДКоманды vinum выполняют следующие функции:attach сплетение том [rename] При подключении поддисков следует учитывать несколько соображений: Поддиски обычно можно подключать только к конкатенированным сплетениям. concat [-f] [-n имя] [-v] диски Для дисков имена задавать нельзя. Если диски были проинициализированы как диски vinum, имя остается. В противном случае, диски получают имена, состоящие из слова "vinumdrive" и небольшого целого числа, например, "vinumdrive7". Как и для команды create, опцию -f можно использовать для переопределения ранее данного имени. Опция -v используется для получения подробных результатов. Примеры использования этой команды см. в разделе "УПРОЩЕННОЕ КОНФИГУРИРОВАНИЕ" ниже. create [-f] файл_описания Обычно команда create не будет изменять имена существующих дисков vinum, чтобы случайно не стереть их. Корректный способ удалить не нужные более диски vinum - сбросить конфигурацию с помощью команды resetconfig. В некоторых случаях, однако, может потребоваться создать новые данные на дисках vinum, которые не удается запустить. В этом случае используйте команду create -f. debug debug флаги DEBUG_RESID (4) DEBUG_LASTREQS (8) DEBUG_REVIVECONFLICT (16) DEBUG_EOFINFO (32) DEBUG_MEMFREE (64) DEBUG_REMOTEGDB (256) DEBUG_WARNINGS (512) dumpconfig [диск ...] info
Flags: 0x200 1 opens Total of 38 blocks malloced, total memory: 16460 Maximum allocs: 56, malloc table at 0xf0f72dbc Time Event Buf Dev Offset Bytes SD SDoff Doffset Goffset 14:40:00.637758 1VS Write 0xf2361f40 91.3 0x10 16384 14:40:00.639280 2LR Write 0xf2361f40 91.3 0x10 16384 14:40:00.639294 3RQ Read 0xf2361f40 4.39 0x104109 8192 19 0 0 0 14:40:00.639455 3RQ Read 0xf2361f40 4.23 0xd2109 8192 17 0 0 0 14:40:00.639529 3RQ Read 0xf2361f40 4.15 0x6e109 8192 16 0 0 0 14:40:00.652978 4DN Read 0xf2361f40 4.39 0x104109 8192 19 0 0 0 14:40:00.667040 4DN Read 0xf2361f40 4.15 0x6e109 8192 16 0 0 0 14:40:00.668556 4DN Read 0xf2361f40 4.23 0xd2109 8192 17 0 0 0 14:40:00.669777 6RP Write 0xf2361f40 4.39 0x104109 8192 19 0 0 0 14:40:00.685547 4DN Write 0xf2361f40 4.39 0x104109 8192 19 0 0 0 11:11:14.975184 Lock 0xc2374210 2 0x1f8001 11:11:15.018400 7VS Write 0xc2374210 0x7c0 32768 10 11:11:15.018456 8LR Write 0xc2374210 13.39 0xcc0c9 32768 11:11:15.046229 Unlock 0xc2374210 2 0x1f8001 Поле Buf всегда содержит адрес заголовка пользовательского буфера. Его можно использовать для идентификации запроса, связанного с пользовательским запросом, хотя это и не на 100% надежно: теоретически, два последовательных запроса могут использовать один и тот же заголовок буфера, хотя это и нетипично. Начало запроса идентифицируется значениями 1VS или 7VS в поле Event. Первый представленный выше пример показывает запросы драйвера, связанные с выполнением запроса пользователя. Второй пример - запрос ввода-вывода поддиска с блокировкой. Поле Event содержит информацию, связанную с последовательностью событий в цепочке выполнения запроса (request chain). Цифры от 1 до 6 показывают приблизительную последовательность событий, а двухбуквенное сокращение описывает действие: 1VS 2LR 3RQ 4DN 5RD 6RP 7VS 8LR Lockwait Lock Unlock label том list [-r] [-V] [том | сплетение | поддиск] Опция -s вызывает выдачу утилитой vinum статистической информации по устройствам, опция -v (verbose) приводит к выдаче определенной дополнительной информации, а опция -V обеспечивает выдачу существенного объема дополнительной информации. makedev mirror [-f] [-n имя] [-s] [-v] диски Обычно команда mirror автоматически создает имя для тома и его компонентов. Это имя состоит из слова "vinum" и небольшого целого числа, например, "vinum3". Это можно изменить с помощью опции -n имя, которая присваивает указанное имя тому. Имена сплетений и поддисков строятся на основе имени тома стандартным образом. Имена дисков выбирать нельзя. Если диски уже были проинициализированы как диски vinum, их имена неизменны. В противном случае, диски получают имена, состоящие из слова "vinumdrive" и небольшого целого числа, например, "vinumdrive7". Как и в случае команды create, опция -f может использоваться для указания того, что прежнее имя надо изменить. Опция -v используется для выдачи более детальной информации. Ряд примеров использования этой команды представлен в разделе "УПРОЩЕННОЕ КОНФИГУРИРОВАНИЕ" ниже. mv -f диск объект ... printconfig [файл] quit read диск ... Если по ходу выполнения этой команды утилитой vinum возникают любые ошибки, она отключает автоматическое обновление конфигурации, чтобы предотвратить повреждение копий на диске. Это также происходит, если в конфигурации на диске обнаруживается ошибка (например, поддиски с недопустимой спецификацией занимаемого места). Изменения можно возобновить с помощью команд setdaemon и saveconfig. Сбросьте бит 2 (числовое значение - 4) в маске опций демона, чтобы снова можно было сохранять изменения конфигурации. rebuildparity сплетение [-f] [-v] [-V] rename [-r] [диск | поддиск | сплетение | том] новое_имя resetconfig # vinum resetconfig WARNING! This command will completely wipe out your vinum configuration. All data will be lost. If you really want to do this, enter the text NO FUTURE Enter text -> NO FUTURE Vinum configuration obliterated Как и сказано в сообщении, эта команда - жест отчаяния. Используйте ее, только если хотите никогда больше не видеть существующую конфигурацию. resetstats [-r] [том | сплетение | поддиск] rm [-f] [-r] том | сплетение | поддиск saveconfig setdaemon [значение] setstate состояние [том | сплетение | поддиск | диск] start [-i интервал] [-S размер] [-w] [сплетение | поддиск] Если по ходу выполнения этой команды утилитой vinum будут обнаружены ошибки, она отключит автоматическое обновление конфигурации, чтобы избежать повреждения копий на диске. То же самое произойдет, если конфигурация на диске содержит ошибку (например, поддиски с недопустимой спецификацией занимаемого места). Изменения можно возобновить с помощью команд setdaemon и saveconfig. Сбросьте бит 2 (числовое значение - 4) в маске опций демона, чтобы снова можно было сохранять изменения конфигурации. Если имена объектов указаны, утилита vinum запускает их. Обычно эту операцию имеет смысл выполнять только для поддисков. Действие зависит от текущего состояния объекта: Если объект уже работает, утилита vinum ничего не делает. Если объект является сплетением, команда start проверяет состояние подчиненных поддисков (и сплетений, в случае тома) и запускает все поддиски, которые можно запустить. Для запуска сплетения в томе из нескольких сплетений данные должны быть скопированы с другого сплетения в томе. Поскольку зачастую для этого требуется много времени, это обычно делается в фоновом режиме. Если необходимо дождаться завершения этой операции (например, если она выполняется в сценарии), используйте опцию -w. Копирование данных не только требует много времени, но и может существенно нагружать систему. Можно указать размер передаваемого блока в байтах или секторах с помощью опции -S, и интервал (в миллисекундах) ожидания между копированиями каждого блока с помощью опции -i. Обе эти опции позволяют снизить нагрузку на систему. stop [-f] [том | сплетение | поддиск] Если имена объектов указаны, команда stop отключает доступ к объектам. Если объекты имеют подчиненные объекты, эти подчиненные объекты должны быть либо не активны (остановлены или в состоянии ошибки), либо надо указывать опции -r и -f. Эта команда не удаляет объекты из конфигурации. К ним можно будет снова получить доступ после команды start. По умолчанию утилита vinum не останавливает активные объекты. Например, нельзя остановить сплетение, подключенное к активному тому, и нельзя отключить открытый том. Опция -f требует от vinum пропустить эту проверку и удалить объект в любом случае. Используйте эту опцию максимально осторожно, и только помня о последствиях: при некорректном использовании она может привести к серьезному повреждению данных. stripe [-f] [-n имя] [-v] диски Имена для дисков задавать нельзя. Если диски уже были проинициализированы как диски vinum, имя остается. В противном случае, диски получают имена, начинающиеся со слова "vinumdrive", и заканчивающееся небольшим целым числом, например, "vinumdrive7". Как и в случае команды create, можно использовать опцию -f для изменения прежнего имени. Опция -v используется для получения детальных результатов. Несколько примеров использования этой команды см. в разделе "УПРОЩЕННОЕ КОНФИГУРИРОВАНИЕ" ниже. УПРОЩЕННОЕ КОНФИГУРИРОВАНИЕВ этом разделе описан упрощенный интерфейс для конфигурирования vinum с помощью команд concat, mirror и stripe. Эти команды создают удобные конфигурации для ряда стандартных ситуаций, но не обеспечивают такую гибкость, как команда create.Описание этих команд было представлено выше. Вот ряд примеров, построенных на одном и том же наборе дисков. Учтите, что первый диск, /dev/da1h, - меньше других. Это влияет на размеры поддисков каждого вида. Во всех следующих примерах используется -v, чтобы показать команды, передаваемые в систему, а также для получения информации о структуре тома. Без опции -v эти команды ничего не выдают. Том с одним конкатенированным сплетением vinum -> concat -v /dev/da1h /dev/da2h /dev/da3h /dev/da4h volume vinum0 plex name vinum0.p0 org concat drive vinumdrive0 device /dev/da1h sd name vinum0.p0.s0 drive vinumdrive0 size 0 drive vinumdrive1 device /dev/da2h sd name vinum0.p0.s1 drive vinumdrive1 size 0 drive vinumdrive2 device /dev/da3h sd name vinum0.p0.s2 drive vinumdrive2 size 0 drive vinumdrive3 device /dev/da4h sd name vinum0.p0.s3 drive vinumdrive3 size 0 V vinum0 State: up Plexes: 1 Size: 2134 MB P vinum0.p0 C State: up Subdisks: 4 Size: 2134 MB S vinum0.p0.s0 State: up D: vinumdrive0 Size: 414 MB S vinum0.p0.s1 State: up D: vinumdrive1 Size: 573 MB S vinum0.p0.s2 State: up D: vinumdrive2 Size: 573 MB S vinum0.p0.s3 State: up D: vinumdrive3 Size: 573 MB В нашем случае использовано все место на всех четырех дисках, что дало нам в итоге 2134 Мбайта. Том с одним сплетением с чередованием vinum -> stripe -v /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 vinum0 plex name vinum0.p0 org striped 279k sd name vinum0.p0.s0 drive vinumdrive0 size 849825b sd name vinum0.p0.s1 drive vinumdrive1 size 849825b sd name vinum0.p0.s2 drive vinumdrive2 size 849825b sd name vinum0.p0.s3 drive vinumdrive3 size 849825b V vinum0 State: up Plexes: 1 Size: 1659 MB P vinum0.p0 S State: up Subdisks: 4 Size: 1659 MB S vinum0.p0.s0 State: up D: vinumdrive0 Size: 414 MB S vinum0.p0.s1 State: up D: vinumdrive1 Size: 414 MB S vinum0.p0.s2 State: up D: vinumdrive2 Size: 414 MB S vinum0.p0.s3 State: up D: vinumdrive3 Size: 414 MB В этом случае размер поддисков ограничен наименьшим доступным диском, так что, получившийся в результате том имеет размер всего 1659 Мбайт. Том с зеркалированием из двух конкатенированных сплетений vinum -> mirror -v -n mirror /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 mirror setupstate plex name mirror.p0 org concat sd name mirror.p0.s0 drive vinumdrive0 size 0b sd name mirror.p0.s1 drive vinumdrive2 size 0b plex name mirror.p1 org concat sd name mirror.p1.s0 drive vinumdrive1 size 0b sd name mirror.p1.s1 drive vinumdrive3 size 0b V mirror State: up Plexes: 2 Size: 1146 MB P mirror.p0 C State: up Subdisks: 2 Size: 988 MB P mirror.p1 C State: up Subdisks: 2 Size: 1146 MB S vinum0.p0.s0 State: up D: vinumdrive0 Size: 414 MB S vinum0.p0.s2 State: up D: vinumdrive2 Size: 414 MB S vinum0.p0.s1 State: up D: vinumdrive1 Size: 414 MB S vinum0.p0.s3 State: up D: vinumdrive3 Size: 414 MB В этом примере явно указано имя тома, mirror. Поскольку один диск меньше других, два сплетения имеют разный размер, и последние 158 Мбайт тома не защищены от сбоев. Чтобы гарантировать полную надежность в такой ситуации, используйте команду create для создания тома размером 988 Мбайт. Том с зеркалированием из двух сплетений с чередованием 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 были в файле конфигурации. Записи в файле конфигурации определяют тома, сплетения и поддиски, и могут быть в произвольном формате, но каждая запись должна быть в отдельной строке. Единицы измеренияНекоторые параметры файла конфигурации задают размер (длины, размеры полос). Эти значения можно задавать в байтах или с указанием одной из следующих единиц измерения:
Например, значение 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 зависит от поставленных целей. Есть несколько вариантов:
Создание томовПосле создания необходимых файлов конфигурации запустите 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 будут созданы дополнительные объекты: 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 O: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 - размер файла в блоках файловой системы.
Похоже, что у некоторых аппаратных RAID-систем есть проблемы с большими полосами: они, по-видимому, передают на диск и с диска только всю полосу, так что увеличение размера полосы может отрицательно влиять на производительность. Утилита vinum от этой проблемы не страдает: все обмены данными оптимизируются и ненужные данные не передаются. Учтите, что ни одна из широко известных программ оценки производительности не реализует условия действительно множественного доступа (более 100 одновременно работающих пользователей), так что правильность представленных утверждений проверить трудно. С учетом представленных соображений, на производительность тома vinum влияют следующие факторы:
Создание файловых систем на томах VinumПеред созданием файловой системы на томе vinum запускать утилиту disklabel(8) не нужно. Просто выполните команду newfs(8) . Используйте опцию -v , чтобы указать, что устройство не разбито на разделы. Например, чтобы создать файловую систему на томе mirror , выполните следующую команду: # newfs -v /dev/vinum/mirror
При конфигурировании vinum следует учитывать также следующее:
УПРАВЛЕНИЕ СОСТОЯНИЕМДля объектов vinum существует понятие состояния. Подробнее см. на странице справочного руководства vinum(4) . Объекты полностью доступны тольк в запущеном ( up ) состоянии. Чтобы изменить состояние объекта на up , используйте команду start . Для перевода объекта в состояние down используйте команду stop . Обычно переход в другие состояния осуществляется автоматически с учетом взаимосвязей объектов. Например, при добавлении сплетения к тому поддиски сплетения оказываются в состоянии empty , показывая, что хотя фактически диск доступен, данные на поддиске некорректны. В результате установки такого состояния, соответствующее сплетение будет установлено в состояние сбоя ( faulty ). Состояние "reviving"Во многих случаях при запуске поддиска система должна скопировать данные на поддиск. В зависимости от размера поддиска, это может потребовать много времени. На это время поддиск устанавливается в состояние reviving ("оживляется"). После успешного завершения операции копирования он автоматически запускается (устанавливается в состояние up ). Можно останавливать и перезапускать процесс, выполняющий "оживление". Система отслеживает, насколько диск уже "оживлен" и, при повторном выполнении команды start , копирование продолжается с этой позиции. Для поддержки согласованности тома пока одно или несколько его сплетений "оживляется", драйвер vinum записывает на поддиски, уже восстановленные до места записи. Он может также читать из сплетения, если считываемая область уже была восстановлена. ОСОБЕННОСТИСледующие особенности работы не связаны с ошибками, и у них есть весьма существенные причины, но, оказалось, что они вызывают непонимание. Каждая из этих особенностей уже была описана в соответствующем разделе выше.
ФАЙЛЫ/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 года Главная > Программы |