diff options
Diffstat (limited to 'documentation/content/ru')
-rw-r--r-- | documentation/content/ru/articles/vinum/_index.adoc | 601 | ||||
-rw-r--r-- | documentation/content/ru/articles/vinum/_index.po | 2260 |
2 files changed, 2861 insertions, 0 deletions
diff --git a/documentation/content/ru/articles/vinum/_index.adoc b/documentation/content/ru/articles/vinum/_index.adoc new file mode 100644 index 0000000000..1b4f934531 --- /dev/null +++ b/documentation/content/ru/articles/vinum/_index.adoc @@ -0,0 +1,601 @@ +--- +authors: + - + author: 'Greg Lehey' +description: 'Менеджер томов vinum в FreeBSD' +tags: ["vinum", "Volume Manager", "FreeBSD"] +title: 'Менеджер томов vinum' +--- + +//// +The Vinum Volume Manager +By Greg Lehey (grog at lemis dot com) + +Added to the Handbook by Hiten Pandya <hmp@FreeBSD.org> +and Tom Rhodes <trhodes@FreeBSD.org> + +For the FreeBSD Documentation Project +//// + += Менеджер томов vinum +:doctype: article +:toc: macro +:toclevels: 1 +:icons: font +:sectnums: +:sectnumlevels: 6 +:source-highlighter: rouge +:experimental: +:images-path: articles/vinum/ + +ifdef::env-beastie[] +ifdef::backend-html5[] +include::shared/authors.adoc[] +include::shared/mirrors.adoc[] +include::shared/releases.adoc[] +include::shared/attributes/attributes-{{% lang %}}.adoc[] +include::shared/{{% lang %}}/teams.adoc[] +include::shared/{{% lang %}}/mailing-lists.adoc[] +include::shared/{{% lang %}}/urls.adoc[] +:imagesdir: ../../../images/{images-path} +endif::[] +ifdef::backend-pdf,backend-epub3[] +include::../../../../shared/asciidoctor.adoc[] +endif::[] +endif::[] + +ifndef::env-beastie[] +include::../../../../../shared/asciidoctor.adoc[] +endif::[] + +''' + +toc::[] + +[[vinum-synopsis]] +== Обзор + +Независимо от типа дисков, всегда существуют потенциальные проблемы. Диски могут быть слишком малы, слишком медленны или недостаточно надежны для соответствия требованиям системы. Хотя диски становятся больше, требования к хранению данных также растут. Часто требуется файловая система, размер которой превышает емкость одного диска. Были предложены и реализованы различные решения этих проблем. + +Один из методов заключается в использовании нескольких, а иногда и избыточных дисков. Помимо поддержки различных карт и контроллеров для аппаратных систем RAID (Redundant Array of Independent Disks), базовая система FreeBSD включает менеджер томов [.filename]#vinum#, драйвер блочных устройств, который реализует виртуальные диски и решает эти три проблемы. [.filename]#vinum# обеспечивает большую гибкость, производительность и надежность по сравнению с традиционными системами хранения данных, а также реализует модели `RAID`-0, `RAID`-1 и `RAID`-5 как по отдельности, так и в комбинации. + +Эта глава предоставляет обзор потенциальных проблем с традиционным дисковым хранилищем и введение в менеджер томов [.filename]#vinum#. + +[WARNING] +==== +vinum устарел и отсутствует в FreeBSD 15.0 и более поздних версиях. Пользователям рекомендуется перейти на man:gconcat[8], man:gmirror[8], man:gstripe[8], man:graid[8] или man:zfs[8]. +==== + +[NOTE] +==== +Начиная с FreeBSD 5, [.filename]#vinum# был переписан для интеграции в extref:{handbook}geom/[архитектуру GEOM, geom-synopsis], сохраняя при этом оригинальные идеи, терминологию и метаданные на диске. Эта переработанная версия называется _gvinum_ (от _GEOM vinum_). Хотя в этой главе используется термин [.filename]#vinum#, все команды должны выполняться с помощью `gvinum`. Имя модуля ядра изменилось с оригинального [.filename]#vinum.ko# на [.filename]#geom_vinum.ko#, а все узлы устройств находятся в [.filename]#/dev/gvinum# вместо [.filename]#/dev/vinum#. Начиная с FreeBSD 6, оригинальная реализация [.filename]#vinum# больше не доступна в кодовой базе. +==== + +[[vinum-access-bottlenecks]] +== Узкие места доступа + +Современные системы часто нуждаются в доступе к данным в условиях высокой параллельности. Например, крупные FTP- или HTTP-серверы могут поддерживать тысячи одновременных сеансов и иметь несколько 100 Мбит/с соединений с внешним миром, что значительно превышает устойчивую скорость передачи большинства дисков. + +Современные дисковые накопители могут передавать данные последовательно со скоростью до 70 МБ/с, но это значение имеет мало значения в среде, где множество независимых процессов обращаются к накопителю и могут достичь лишь доли этих значений. В таких случаях более интересно рассмотреть проблему с точки зрения дисковой подсистемы. Важным параметром является нагрузка, которую передача данных создаёт на подсистему, или время, в течение которого передача занимает задействованные накопители. + +При любом переносе данных на диск сначала необходимо позиционировать головки, дождаться, пока первый сектор окажется под считывающей головкой, а затем выполнить перенос. Эти действия можно считать атомарными, так как их прерывание не имеет смысла. + +[[vinum-latency]] Рассмотрим типичную передачу около 10 КБ: современные высокопроизводительные диски могут позиционировать головки в среднем за 3,5 мс. Самые быстрые диски вращаются со скоростью 15 000 об/мин, поэтому средняя задержка вращения (половина оборота) составляет 2 мс. При скорости 70 МБ/с сама передача занимает около 150 мкс, что почти ничто по сравнению с временем позиционирования. В таком случае эффективная скорость передачи падает до чуть более 1 МБ/с и явно сильно зависит от размера передачи. + +Традиционное и очевидное решение этой проблемы — «больше дисков»: вместо одного большого диска использовать несколько дисков меньшего размера с тем же общим объёмом хранилища. Каждый диск способен позиционироваться и передавать данные независимо, поэтому эффективная пропускная способность увеличивается почти пропорционально количеству используемых дисков. + +Фактическое увеличение пропускной способности меньше, чем количество задействованных дисков. Хотя каждый диск способен передавать данные параллельно, нет возможности гарантировать равномерное распределение запросов между дисками. Неизбежно нагрузка на один диск будет выше, чем на другой. + +Равномерность нагрузки на диски сильно зависит от способа распределения данных по накопителям. В дальнейшем обсуждении удобно представлять дисковое хранилище как большое количество секторов данных, адресуемых по номерам, подобно страницам в книге. Наиболее очевидный метод — разделить виртуальный диск на группы последовательных секторов размером с отдельные физические диски и хранить их таким образом, как если бы большую книгу разорвали на меньшие разделы. Этот метод называется _ объединением (конкатенацией)_ и имеет преимущество в том, что диски не требуют каких-либо определённых соотношений размеров. Он хорошо работает, когда доступ к виртуальному диску равномерно распределён по его адресному пространству. Если доступ сосредоточен на меньшей области, улучшение менее заметно. crossref:vinum[vinum-concat, Организация методом объединения] иллюстрирует последовательность выделения блоков хранения в организации методом объединения. + +[[vinum-concat]] +.Организация методом объединения +image::vinum-concat.png[] + +Альтернативный метод распределения заключается в разделении адресного пространства на меньшие равные по размеру компоненты и их последовательном хранении на разных устройствах. Например, первые 256 секторов могут храниться на первом диске, следующие 256 секторов — на следующем диске и так далее. После заполнения последнего диска процесс повторяется, пока все диски не будут заполнены. Такой метод называется _чередованием (striping)_ или RAID-0. + +`RAID` предлагает различные формы отказоустойчивости, хотя RAID-0 несколько вводит в заблуждение, так как не обеспечивает избыточности. Разделение данных требует несколько больше усилий для их поиска и может создавать дополнительную нагрузку ввода-вывода, когда передача распределяется по нескольким дискам, но также может обеспечить более равномерную нагрузку на диски. crossref:vinum[vinum-striped,Организация методом чередования] иллюстрирует последовательность, в которой организуется распределение блоков хранения с чередованием. + +[[vinum-striped]] +.Организация методом чередования +image::vinum-striped.png[] + +[[vinum-data-integrity]] +== Целостность данных + +Последняя проблема с дисками заключается в их ненадёжности. Хотя надёжность значительно повысилась за последние годы, дисковые накопители остаются наиболее вероятным компонентом сервера, который может выйти из строя. Когда это происходит, последствия могут быть катастрофическими, а замена вышедшего из строя диска и восстановление данных могут привести к простою сервера. + +Один из подходов к этой проблеме — _зеркалирование_, или `RAID-1`, при котором данные хранятся в двух экземплярах на разных физических носителях. Любая запись на том записывается на оба диска; чтение может выполняться с любого из них, поэтому при отказе одного диска данные остаются доступны на другом. + +Зеркалирование имеет две проблемы: + +* Требуется в два раза больше дискового пространства, чем для решения без избыточности. +* Запись должна выполняться на оба диска, поэтому она занимает в два раза больше пропускной способности, чем в незеркалированном томе. Чтение не страдает от потери производительности и может быть даже быстрее. + +Альтернативным решением является _четность_, реализованная в уровнях `RAID` 2, 3, 4 и 5. Из них `RAID-5` представляет наибольший интерес. В реализации [.filename]#vinum# это вариант организации с чередованием, где один блок каждой полосы выделяется под четность одного из других блоков. В реализации [.filename]#vinum# плекс `RAID-5` аналогичен плексу с чередованием, за исключением того, что он реализует `RAID-5`, включая блок четности в каждую полосу. Как требуется в `RAID-5`, расположение этого блока четности меняется от одной полосы к другой. Числа в блоках данных обозначают относительные номера блоков. + +[[vinum-raid5-org]] +.Организация `RAID`-5 +image::vinum-raid5-org.png[] + +По сравнению с зеркалированием, `RAID-5` имеет преимущество в виде значительно меньшего требуемого объема хранилища. Скорость чтения аналогична таковой при чередующейся организации, но скорость записи значительно ниже — примерно 25% от скорости чтения. Если один диск выходит из строя, массив может продолжать работу в деградировавшем режиме, при котором чтение с оставшихся доступных дисков продолжается в обычном режиме, а чтение с отказавшего диска пересчитывается из соответствующих блоков всех оставшихся дисков. + +[[vinum-objects]] +== Объекты [.filename]#vinum# + +Для решения этих проблем [.filename]#vinum# реализует четырёхуровневую иерархию объектов: + +* Наиболее заметным объектом является виртуальный диск, называемый _томом_. Том обладает практически теми же свойствами, что и UNIX(R) дисковый накопитель, хотя есть некоторые незначительные отличия. Например, у тома нет ограничений по размеру. +* Тома состоят из _плексов_, каждый из которых представляет полное адресное пространство тома. Этот уровень в иерархии обеспечивает избыточность. Можно представить плексы как отдельные диски в зеркальном массиве, каждый из которых содержит одинаковые данные. +* Поскольку [.filename]#vinum# существует в рамках системы хранения данных UNIX(R), можно было бы использовать разделы UNIX(R) в качестве строительных блоков для многодисковых plexes. Однако на практике это оказывается слишком негибким, так как диски UNIX(R) могут иметь только ограниченное количество разделов. Вместо этого [.filename]#vinum# разбивает единственный раздел UNIX(R), называемый _дисковый раздел (drive)_, на непрерывные области, называемые _поддисками (subdisk)_, которые используются как строительные блоки для плексов. +* Поддиски располагаются на _дисковых разделах_ [.filename]#vinum#, в настоящее время это разделы UNIX(R). Разделы [.filename]#vinum# могут содержать любое количество поддисков. За исключением небольшой области в начале раздела, которая используется для хранения конфигурации и состояния, весь раздел доступен для хранения данных. + +Следующие разделы статьи описывают, каким образом эти объекты обеспечивают функциональность, требуемую для [.filename]#vinum#. + +=== Учет размера томов + +Плексы могут включать несколько поддисков, распределенных по всем дискам в конфигурации [.filename]#vinum#. В результате, размер отдельного диска не ограничивает размер плекса или тома. + +=== Избыточное хранение данных + +[.filename]#vinum# реализует зеркалирование путем присоединения нескольких плекс к тому. Каждый плекс представляет данные в томе. Том может содержать от одного до восьми плексов. + +Хотя плекс представляет полные данные тома, возможно, что некоторые части представления физически отсутствуют — либо по замыслу (если поддиск для частей плекса не определён), либо случайно (в результате выхода диска из строя). До тех пор, пока хотя бы один плекс может предоставить данные для полного адресного пространства тома, том остаётся полностью работоспособным. + +=== Какую организацию плексов выбрать? + +[.filename]#vinum# реализует как объединение, так и чередование на уровне плекс: + +* _Плекс с объединением_ использует адресное пространство каждого поддиска по очереди. Объединённые плексы являются наиболее гибкими, так как могут содержать любое количество поддисков, а поддиски могут быть разной длины. Плекс может быть расширен путём добавления дополнительных поддисков. Они требуют меньше процессорного времени, чем чередующиеся плексы, хотя разница в нагрузке на процессор незначительна. С другой стороны, они наиболее подвержены "горячим точкам", когда один диск очень активен, а другие простаивают. +* _Плекс с чередованием_ распределяет данные по каждому поддиску. Поддиски должны быть одного размера, и их должно быть как минимум два, чтобы отличить такой плекс от объединенного. Главное преимущество чередующихся плексов в том, что они уменьшают вероятность появления "горячих точек". Выбрав оптимальный размер полосы (около 256 КБ), можно равномерно распределить нагрузку на диски – компоненты системы. Расширение плекса путем добавления новых поддисков настолько сложно, что [.filename]#vinum# не реализует эту возможность. + +crossref:vinum[vinum-comparison, Организации плексов в [.filename]#vinum#] обобщает преимущества и недостатки каждой организации плексов. + +[[vinum-comparison]] +.Организации плексов в [.filename]#vinum# +[cols="1,1,1,1,1", frame="none", options="header"] +|=== +| Тип плекса +| Минимальное количество поддисков +| Может добавлять поддиски +| Должен быть равного размера +| Приложение + +|объединённый +|1 +|да +|no +|Крупное хранилище данных с максимальной гибкостью размещения и умеренной производительностью + +|чередуемый +|2 +|no +|да +|Высокая производительность в сочетании с высокопараллельным доступом +|=== + +[[vinum-examples]] +== Некоторые примеры + +[.filename]#vinum# поддерживает _базу данных конфигурации_, которая описывает объекты, известные конкретной системе. Первоначально пользователь создает базу данных конфигурации из одного или нескольких конфигурационных файлов с помощью man:gvinum[8]. [.filename]#vinum# хранит копию своей базы данных конфигурации на каждом _устройстве_ диска, находящемся под его управлением. Эта база данных обновляется при каждом изменении состояния, так что перезапуск точно восстанавливает состояние каждого объекта [.filename]#vinum#. + +=== Файл конфигурации + +Файл конфигурации описывает отдельные объекты [.filename]#vinum#. Определение простого тома может выглядеть следующим образом: + +[.programlisting] +.... + drive a device /dev/da3h + volume myvol + plex org concat + sd length 512m drive a +.... + +Этот файл описывает четыре объекта [.filename]#vinum#: + +* Строка _drive_ описывает раздел диска (_drive_) и его расположение относительно оборудования, на котором он расположен. Ему присваивается символическое имя _a_. Такое разделение символических имён от имён устройств позволяет перемещать диски из одного места в другое без путаницы. +* Строка _volume_ описывает том. Единственный обязательный атрибут — это имя, в данном случае _myvol_. +* Строка _plex_ определяет плекс. Единственный обязательный параметр — это организация, в данном случае _concat_. Имя не требуется, так как система автоматически генерирует его из имени тома, добавляя суффикс _.px_, где _x_ — номер плекса в томе. Таким образом, этот плекс будет называться _myvol.p0_. +* Строка _sd_ описывает поддиск. Минимальные требования — это имя диска для его хранения и длина поддиска. Имя не обязательно, так как система автоматически назначает имена, производные от имени плекса, добавляя суффикс _.sx_, где _x_ — номер поддиска в плексе. Таким образом, [.filename]#vinum# присваивает этому поддиску имя _myvol.p0.s0_. + +После обработки этого файла команда man:gvinum[8] выводит следующий результат: + +[.programlisting] +.... + +# gvinum -> create config1 +Configuration summary +Drives: 1 (4 configured) +Volumes: 1 (4 configured) +Plexes: 1 (8 configured) +Subdisks: 1 (16 configured) + + D a State: up Device /dev/da3h Avail: 2061/2573 MB (80%) + + V myvol State: up Plexes: 1 Size: 512 MB + + P myvol.p0 C State: up Subdisks: 1 Size: 512 MB + + S myvol.p0.s0 State: up PO: 0 B Size: 512 MB +.... + +Этот вывод показывает краткий формат списка man:gvinum[8]. Он представлен графически в crossref:vinum[vinum-simple-vol, Простой том [.filename]#vinum#]. + +[[vinum-simple-vol]] +.Простой том [.filename]#vinum# +image::vinum-simple-vol.png[] + +Этот рисунок и следующие представляют том, который содержит плексы, которые, в свою очередь, содержат поддиски. В этом примере том содержит один плекс, а плекс содержит один поддиск. + +Этот конкретный том не имеет особых преимуществ по сравнению с обычным разделом диска. Он содержит один плекс, поэтому не является избыточным. Плекс содержит один поддиск, поэтому нет различий в распределении хранилища по сравнению с обычным разделом диска. В следующих разделах показаны различные более интересные методы конфигурации. + +=== Увеличенная отказоустойчивость: зеркалирование + +Устойчивость тома может быть повышена за счёт зеркалирования. При создании зеркального тома важно убедиться, что поддиски каждого плекса находятся на разных дисках, чтобы выход из строя одного диска не затронул оба плекса. Следующая конфигурация создаёт зеркальный том: + +[.programlisting] +.... + drive b device /dev/da4h + volume mirror + plex org concat + sd length 512m drive a + plex org concat + sd length 512m drive b +.... + +В этом примере не потребовалось снова указывать определение диска _a_, поскольку [.filename]#vinum# отслеживает все объекты в своей базе данных конфигурации. После обработки этого определения конфигурация выглядит следующим образом: + +[.programlisting] +.... + + Drives: 2 (4 configured) + Volumes: 2 (4 configured) + Plexes: 3 (8 configured) + Subdisks: 3 (16 configured) + + D a State: up Device /dev/da3h Avail: 1549/2573 MB (60%) + D b State: up Device /dev/da4h Avail: 2061/2573 MB (80%) + + V myvol State: up Plexes: 1 Size: 512 MB + V mirror State: up Plexes: 2 Size: 512 MB + + P myvol.p0 C State: up Subdisks: 1 Size: 512 MB + P mirror.p0 C State: up Subdisks: 1 Size: 512 MB + P mirror.p1 C State: initializing Subdisks: 1 Size: 512 MB + + S myvol.p0.s0 State: up PO: 0 B Size: 512 MB + S mirror.p0.s0 State: up PO: 0 B Size: 512 MB + S mirror.p1.s0 State: empty PO: 0 B Size: 512 MB +.... + +crossref:vinum[vinum-mirrored-vol, Зеркальный том [.filename]#vinum#] графически отображает структуру. + +[[vinum-mirrored-vol]] +.Зеркальный том [.filename]#vinum# +image::vinum-mirrored-vol.png[] + +В этом примере каждый плекс содержит полные 512 МБ адресного пространства. Как и в предыдущем примере, каждый плекс содержит только один поддиск. + +=== Оптимизация производительности + +Зеркальный том в предыдущем примере более устойчив к сбоям, чем незеркальный том, но его производительность ниже, так как каждая запись в том требует записи на оба диска, используя большую часть общей пропускной способности дисков. Соображения производительности требуют другого подхода: вместо зеркалирования данные распределяются по полосам на максимально возможное количество дисков. Следующая конфигурация показывает том с плексом, распределённым по полосам на четырёх дисках: + +[.programlisting] +.... + drive c device /dev/da5h + drive d device /dev/da6h + volume stripe + plex org striped 512k + sd length 128m drive a + sd length 128m drive b + sd length 128m drive c + sd length 128m drive d +.... + +Как и ранее, не нужно определять диски, которые уже известны [.filename]#vinum#. После обработки этого определения конфигурация выглядит следующим образом: + +[.programlisting] +.... + + Drives: 4 (4 configured) + Volumes: 3 (4 configured) + Plexes: 4 (8 configured) + Subdisks: 7 (16 configured) + + D a State: up Device /dev/da3h Avail: 1421/2573 MB (55%) + D b State: up Device /dev/da4h Avail: 1933/2573 MB (75%) + D c State: up Device /dev/da5h Avail: 2445/2573 MB (95%) + D d State: up Device /dev/da6h Avail: 2445/2573 MB (95%) + + V myvol State: up Plexes: 1 Size: 512 MB + V mirror State: up Plexes: 2 Size: 512 MB + V striped State: up Plexes: 1 Size: 512 MB + + P myvol.p0 C State: up Subdisks: 1 Size: 512 MB + P mirror.p0 C State: up Subdisks: 1 Size: 512 MB + P mirror.p1 C State: initializing Subdisks: 1 Size: 512 MB + P striped.p1 State: up Subdisks: 1 Size: 512 MB + + S myvol.p0.s0 State: up PO: 0 B Size: 512 MB + S mirror.p0.s0 State: up PO: 0 B Size: 512 MB + S mirror.p1.s0 State: empty PO: 0 B Size: 512 MB + S striped.p0.s0 State: up PO: 0 B Size: 128 MB + S striped.p0.s1 State: up PO: 512 kB Size: 128 MB + S striped.p0.s2 State: up PO: 1024 kB Size: 128 MB + S striped.p0.s3 State: up PO: 1536 kB Size: 128 MB +.... + +[[vinum-striped-vol]] +.Том [.filename]#vinum# с чередованием +image::vinum-striped-vol.png[] + +Этот том представлен на схеме crossref:vinum[vinum-striped-vol, Том [.filename]#vinum# с чередованием]. Темнота полос указывает на позицию в адресном пространстве плекса, где самые светлые полосы идут первыми, а самые темные — последними. + +=== Устойчивость и производительность + +[[vinum-resilience]]При достаточном аппаратном обеспечении можно создать тома, которые демонстрируют как повышенную отказоустойчивость, так и увеличенную производительность по сравнению со стандартными разделами UNIX(R). Типичный конфигурационный файл может выглядеть так: + +[.programlisting] +.... + volume raid10 + plex org striped 512k + sd length 102480k drive a + sd length 102480k drive b + sd length 102480k drive c + sd length 102480k drive d + sd length 102480k drive e + plex org striped 512k + sd length 102480k drive c + sd length 102480k drive d + sd length 102480k drive e + sd length 102480k drive a + sd length 102480k drive b +.... + +Поддиски второго плекса смещены на два диска относительно поддисков первого плекса. Это помогает гарантировать, что записи не будут направляться на одни и те же поддиски, даже если передача затронет два диска. + +crossref:vinum[vinum-raid10-vol, Том [.filename]#vinum# c зеркалированием и чередованием] представляет структуру этого тома. + +[[vinum-raid10-vol]] +.Том [.filename]#vinum# c зеркалированием и чередованием +image::vinum-raid10-vol.png[] + +[[vinum-object-naming]] +== Именование объектов + +[.filename]#vinum# назначает стандартные имена для плексов и поддисков, хотя их можно изменить. Не рекомендуется изменять стандартные имена, так как это не дает значительных преимуществ и может вызвать путаницу. + +Имена могут содержать любые непустые символы, но рекомендуется ограничиваться буквами, цифрами и символами подчёркивания. Имена томов, плексов и поддисков могут быть длиной до 64 символов, а имена дисков — до 32 символов. + +Объектам [.filename]#vinum# назначаются узлы устройств в иерархии [.filename]#/dev/gvinum#. Приведённая выше конфигурация приведёт к тому, что [.filename]#vinum# создаст следующие узлы устройств: + +* Записи устройств для каждого тома. Это основные устройства, используемые [.filename]#vinum#. Приведённая конфигурация включает устройства [.filename]#/dev/gvinum/myvol#, [.filename]#/dev/gvinum/mirror#, [.filename]#/dev/gvinum/striped#, [.filename]#/dev/gvinum/raid5# и [.filename]#/dev/gvinum/raid10#. +* Все тома получают собственные записи в [.filename]#/dev/gvinum/#. +* Каталоги [.filename]#/dev/gvinum/plex# и [.filename]#/dev/gvinum/sd#, которые содержат узлы устройств для каждого плекса и каждого субдиска соответственно. + +Например, рассмотрим следующий конфигурационный файл: + +[.programlisting] +.... + drive drive1 device /dev/sd1h + drive drive2 device /dev/sd2h + drive drive3 device /dev/sd3h + drive drive4 device /dev/sd4h + volume s64 setupstate + plex org striped 64k + sd length 100m drive drive1 + sd length 100m drive drive2 + sd length 100m drive drive3 + sd length 100m drive drive4 +.... + +После обработки этого файла man:gvinum[8] создает следующую структуру в [.filename]#/dev/gvinum#: + +[.programlisting] +.... + drwxr-xr-x 2 root wheel 512 Apr 13 +16:46 plex + crwxr-xr-- 1 root wheel 91, 2 Apr 13 16:46 s64 + drwxr-xr-x 2 root wheel 512 Apr 13 16:46 sd + + /dev/vinum/plex: + total 0 + crwxr-xr-- 1 root wheel 25, 0x10000002 Apr 13 16:46 s64.p0 + + /dev/vinum/sd: + total 0 + crwxr-xr-- 1 root wheel 91, 0x20000002 Apr 13 16:46 s64.p0.s0 + crwxr-xr-- 1 root wheel 91, 0x20100002 Apr 13 16:46 s64.p0.s1 + crwxr-xr-- 1 root wheel 91, 0x20200002 Apr 13 16:46 s64.p0.s2 + crwxr-xr-- 1 root wheel 91, 0x20300002 Apr 13 16:46 s64.p0.s3 +.... + +Хотя рекомендуется не назначать конкретные имена плексам и поддискам, диски [.filename]#vinum# должны быть именованными. Это позволяет переместить диск в другое место и по-прежнему автоматически его распознавать. Имена дисков могут быть длиной до 32 символов. + +=== Создание файловых систем + +Тома для системы выглядят идентично дискам, за одним исключением. В отличие от дисков UNIX(R), [.filename]#vinum# не разбивает тома на разделы, поэтому они не содержат таблицы разделов. Это потребовало внесения изменений в некоторые утилиты для работы с дисками, в частности, в man:newfs[8], чтобы они не пытались интерпретировать последнюю букву имени тома [.filename]#vinum# как идентификатор раздела. Например, имя диска может выглядеть как [.filename]#/dev/ad0a# или [.filename]#/dev/da2h#. Эти имена обозначают первый раздел ([.filename]#a#) на первом (0) IDE-диске ([.filename]#ad#) и восьмой раздел ([.filename]#h#) на третьем (2) SCSI-диске ([.filename]#da#) соответственно. В отличие от этого, том [.filename]#vinum# может называться [.filename]#/dev/gvinum/concat#, что не имеет отношения к имени раздела. + +Чтобы создать файловую систему на этом томе, используйте man:newfs[8]: + +[source, shell] +.... +# newfs /dev/gvinum/concat +.... + +[[vinum-config]] +== Настройка [.filename]#vinum# + +Ядро [.filename]#GENERIC# не содержит [.filename]#vinum#. Можно собрать пользовательское ядро с включённым [.filename]#vinum#, но это не рекомендуется. Стандартный способ запуска [.filename]#vinum# — в качестве модуля ядра. Команда man:kldload[8] не требуется, так как при запуске man:gvinum[8] проверяет, загружен ли модуль, и если нет, загружает его автоматически. + +=== Запуск + +[.filename]#vinum# хранит конфигурационную информацию на дисковых слайсах практически в той же форме, что и в конфигурационных файлах. При чтении из базы данных конфигурации [.filename]#vinum# распознаёт ряд ключевых слов, которые не допускаются в конфигурационных файлах. Например, конфигурация диска может содержать следующий текст: + +[.programlisting] +.... +volume myvol state up +volume bigraid state down +plex name myvol.p0 state up org concat vol myvol +plex name myvol.p1 state up org concat vol myvol +plex name myvol.p2 state init org striped 512b vol myvol +plex name bigraid.p0 state initializing org raid5 512b vol bigraid +sd name myvol.p0.s0 drive a plex myvol.p0 state up len 1048576b driveoffset 265b plexoffset 0b +sd name myvol.p0.s1 drive b plex myvol.p0 state up len 1048576b driveoffset 265b plexoffset 1048576b +sd name myvol.p1.s0 drive c plex myvol.p1 state up len 1048576b driveoffset 265b plexoffset 0b +sd name myvol.p1.s1 drive d plex myvol.p1 state up len 1048576b driveoffset 265b plexoffset 1048576b +sd name myvol.p2.s0 drive a plex myvol.p2 state init len 524288b driveoffset 1048841b plexoffset 0b +sd name myvol.p2.s1 drive b plex myvol.p2 state init len 524288b driveoffset 1048841b plexoffset 524288b +sd name myvol.p2.s2 drive c plex myvol.p2 state init len 524288b driveoffset 1048841b plexoffset 1048576b +sd name myvol.p2.s3 drive d plex myvol.p2 state init len 524288b driveoffset 1048841b plexoffset 1572864b +sd name bigraid.p0.s0 drive a plex bigraid.p0 state initializing len 4194304b driveoff set 1573129b plexoffset 0b +sd name bigraid.p0.s1 drive b plex bigraid.p0 state initializing len 4194304b driveoff set 1573129b plexoffset 4194304b +sd name bigraid.p0.s2 drive c plex bigraid.p0 state initializing len 4194304b driveoff set 1573129b plexoffset 8388608b +sd name bigraid.p0.s3 drive d plex bigraid.p0 state initializing len 4194304b driveoff set 1573129b plexoffset 12582912b +sd name bigraid.p0.s4 drive e plex bigraid.p0 state initializing len 4194304b driveoff set 1573129b plexoffset 16777216b +.... + +Очевидные различия здесь — наличие явной информации о местоположении и именования, что разрешено, но не рекомендуется, а также информация о состояниях. [.filename]#vinum# не хранит сведения о дисках в конфигурационной информации. Он находит диски, сканируя настроенные дисковые накопители на наличие разделов с меткой [.filename]#vinum#. Это позволяет [.filename]#vinum# корректно идентифицировать диски, даже если им были присвоены разные идентификаторы дисков UNIX(R). + +[[vinum-rc-startup]] +==== Автоматический запуск + +_Gvinum_ всегда запускается автоматически после загрузки модуля ядра через man:loader.conf[5]. Чтобы загрузить модуль _Gvinum_ при загрузке системы, добавьте `geom_vinum_load="YES"` в [.filename]#/boot/loader.conf#. + +Когда [.filename]#vinum# запускается командой `gvinum start`, [.filename]#vinum# читает конфигурационную базу данных с одного из дисков [.filename]#vinum#. В нормальных условиях каждый диск содержит идентичную копию конфигурационной базы данных, поэтому не имеет значения, с какого диска читать. Однако после сбоя [.filename]#vinum# должен определить, какой диск был обновлён последним, и прочитать конфигурацию с этого диска. Затем, если необходимо, он обновляет конфигурацию последовательно с более старых дисков. + +[[vinum-root]] +== Использование [.filename]#vinum# для корневой файловой системы + +Для машины с полностью зеркалированными файловыми системами с использованием [.filename]#vinum#, желательно также зеркалировать корневую файловую систему. Настройка такой конфигурации менее тривиальна, чем зеркалирование произвольной файловой системы, потому что: + +* Корневая файловая система должна быть доступна очень рано в процессе загрузки, поэтому инфраструктура [.filename]#vinum# должна быть уже доступна на этом этапе. +* Том, содержащий корневую файловую систему, также включает системный загрузчик и ядро. Они должны быть прочитаны с использованием родных утилит хостовой системы, таких как BIOS, который зачастую нельзя обучить работе с деталями [.filename]#vinum#. + +В следующих разделах термин "корневой том" обычно используется для описания тома [.filename]#vinum#, который содержит корневую файловую систему. + +=== Запуск [.filename]#vinum# на раннем этапе для обеспечения доступа к корневой файловой системе + +Файл `[.filename]#vinum#` должен быть доступен на раннем этапе загрузки системы, так как `man:loader[8]` должен загрузить модуль ядра `vinum` перед запуском ядра. Это можно сделать, добавив следующую строку в `[.filename]#/boot/loader.conf#`: + +[.programlisting] +.... +geom_vinum_load="YES" +.... + +=== Создание корневого тома на основе [.filename]#vinum#, доступного для загрузчика + +Текущая загрузочная запись FreeBSD занимает всего 7,5 КБ кода и не понимает внутренние структуры [.filename]#vinum#. Это означает, что она не может разобрать конфигурационные данные [.filename]#vinum# или определить элементы загрузочного тома. Таким образом, необходимы некоторые обходные решения, чтобы предоставить загрузочному коду иллюзию стандартного раздела `a`, содержащего корневую файловую систему. + +Для этого должны быть выполнены следующие требования к корневому тому: + +* Корневой том не должен быть чередующимся или `RAID`-5. +* Корневой том не должен содержать более одного объединённого поддиска на плекс. + +Обратите внимание, что желательно и возможно использовать несколько плексов, каждый из которых содержит одну реплику корневой файловой системы. Процесс начальной загрузки будет использовать только одну реплику для поиска загрузчика и всех загрузочных файлов, пока ядро не смонтирует корневую файловую систему. Каждый отдельный поддиск в этих плексах должен иметь свою собственную иллюзию раздела `a`, чтобы соответствующее устройство было загрузочным. Не строго необходимо, чтобы каждый из этих фальшивых разделов `a` находился на том же смещении внутри своего устройства по сравнению с другими устройствами, содержащими плекс корневого тома. Однако, вероятно, хорошей идеей будет создавать тома [.filename]#vinum# таким образом, чтобы результирующие зеркальные устройства были симметричными, чтобы избежать путаницы. + +Для настройки этих разделов `a` на каждом устройстве, содержащем часть корневого тома, требуется следующее: + +[.procedure] +==== +. Местоположение, смещение от начала устройства и размер подобласти этого устройства, которая является частью корневого тома, необходимо проверить с помощью команды: ++ +[source, shell] +.... +# gvinum l -rv root +.... ++ +Смещения и размеры в [.filename]#vinum# измеряются в байтах. Их необходимо разделить на 512, чтобы получить номера блоков, которые будут использоваться в `bsdlabel`. +. Выполните эту команду для каждого устройства, участвующего в корневом томе: ++ +[source, shell] +.... +# bsdlabel -e devname +.... ++ +`_devname_` должен быть либо именем диска, например, [.filename]#da0# для дисков без таблицы разделов, либо именем раздела, например, [.filename]#ad0s1#. ++ +Если на устройстве уже существует раздел `a` из корневой файловой системы до [.filename]#vinum#, его следует переименовать во что-то другое, чтобы он оставался доступным (на всякий случай), но больше не использовался по умолчанию для загрузки системы. Текущий смонтированный корневой файловой системы нельзя переименовать, поэтому это должно выполняться либо при загрузке с "Fixit" носителя, либо в два этапа, когда в зеркале сначала обрабатывается диск, с которого в данный момент не загружаются. ++ +Смещение раздела [.filename]#vinum# на этом устройстве (если есть) должно быть добавлено к смещению соответствующего поддиска корневого тома на этом устройстве. Полученное значение станет значением `offset` для нового раздела `a`. Значение `size` для этого раздела можно взять дословно из приведённых выше расчётов. Для `fstype` следует указать `4.2BSD`. Значения `fsize`, `bsize` и `cpg` должны быть выбраны в соответствии с реальной файловой системой, хотя в данном контексте они не слишком важны. ++ +Таким образом, будет создан новый раздел `a`, который перекрывает раздел [.filename]#vinum# на этом устройстве. `bsdlabel` разрешит это перекрытие только в том случае, если раздел [.filename]#vinum# был правильно помечен с использованием типа файловой системы `vinum`. +. Поддельный раздел `a` теперь существует на каждом устройстве, имеющем одну реплику корневого тома. Настоятельно рекомендуется проверить результат с помощью команды, например: ++ +[source, shell] +.... +# fsck -n /dev/devnamea +.... +==== + +Следует помнить, что все файлы, содержащие управляющую информацию, должны быть относительны к корневой файловой системе в томе [.filename]#vinum#, которая при настройке нового корневого тома [.filename]#vinum# может не совпадать с текущей активной корневой файловой системой. Поэтому, в частности, необходимо позаботиться о [.filename]#/etc/fstab# и [.filename]#/boot/loader.conf#. + +При следующей перезагрузке загрузчик должен определить соответствующую управляющую информацию из новой корневой файловой системы на основе [.filename]#vinum# и действовать соответствующим образом. В конце процесса инициализации ядра, после объявления всех устройств, явным признаком успешного завершения настройки будет сообщение вида: + +[source, shell] +.... +Mounting root from ufs:/dev/gvinum/root +.... + +=== Пример настройки корневой системы на основе [.filename]#vinum# + +После настройки корневого тома [.filename]#vinum#, вывод команды `gvinum l -rv root` может выглядеть следующим образом: + +[source, shell] +.... +... +Subdisk root.p0.s0: + Size: 125829120 bytes (120 MB) + State: up + Plex root.p0 at offset 0 (0 B) + Drive disk0 (/dev/da0h) at offset 135680 (132 kB) + +Subdisk root.p1.s0: + Size: 125829120 bytes (120 MB) + State: up + Plex root.p1 at offset 0 (0 B) + Drive disk1 (/dev/da1h) at offset 135680 (132 kB) +.... + +Значения, на которые следует обратить внимание: `135680` для смещения, относительного к разделу [.filename]#/dev/da0h#. Это соответствует 265 блокам диска по 512 байт в терминах `bsdlabel`. Аналогично, размер этого корневого тома составляет 245760 блоков по 512 байт. [.filename]#/dev/da1h#, содержащий вторую реплику этого корневого тома, имеет симметричную конфигурацию. + +Метка bsdlabel для этих устройств может выглядеть следующим образом: + +[source, shell] +.... +... +8 partitions: +# size offset fstype [fsize bsize bps/cpg] + a: 245760 281 4.2BSD 2048 16384 0 # (Cyl. 0*- 15*) + c: 71771688 0 unused 0 0 # (Cyl. 0 - 4467*) + h: 71771672 16 vinum # (Cyl. 0*- 4467*) +.... + +Можно заметить, что параметр `size` для поддельного раздела `a` совпадает с указанным выше значением, в то время как параметр `offset` представляет собой сумму смещения внутри раздела [.filename]#vinum# `h` и смещения этого раздела в устройстве или слайсе. Это стандартная настройка, необходимая для избежания проблемы, описанной в crossref:vinum[vinum-root-panic, Nothing Boots, the Bootstrap Panics]. Весь раздел `a` полностью находится внутри раздела `h`, содержащего все данные [.filename]#vinum# для этого устройства. + +В приведенном выше примере все устройство выделено под [.filename]#vinum#, и не осталось корневого раздела, существовавшего до [.filename]#vinum#. + +=== Устранение неполадок + +Следующий список содержит несколько известных подводных камней и их решения. + +==== Загрузчик системы загружается, но система не запускается + +Если по какой-либо причине система не продолжает загрузку, процесс можно прервать, нажав kbd:[space] при появлении 10-секундного предупреждения. Переменную загрузчика `vinum.autostart` можно проверить, введя команду `show`, и изменить с помощью `set` или `unset`. + +Если модуль ядра [.filename]#vinum# еще не был в списке модулей для автоматической загрузки, введите `load geom_vinum`. + +Когда всё готово, процесс загрузки можно продолжить, введя `boot -as`, где `-as` указывает ядру запросить корневую файловую систему для монтирования (`-a`) и остановить процесс загрузки в однопользовательском режиме (`-s`), при этом корневая файловая система монтируется в режиме только для чтения. Таким образом, даже если смонтирован только один слой многокомпонентного тома, не возникает риска несогласованности данных между слоями. + +На запрос о корневой файловой системе для монтирования можно ввести любое устройство, содержащее действительную корневую файловую систему. Если [.filename]#/etc/fstab# настроен правильно, по умолчанию должно быть что-то вроде `ufs:/dev/gvinum/root`. Типичным альтернативным выбором может быть что-то вроде `ufs:da0d`, что может быть гипотетическим разделом, содержащим корневую файловую систему до [.filename]#vinum#. Следует быть осторожным, если здесь вводится один из псевдонимов `a` разделов, чтобы он действительно ссылался на поддиски устройства [.filename]#vinum# root, потому что в зеркальной настройке это приведёт к монтированию только одной части зеркального корневого устройства. Если эта файловая система будет позже смонтирована в режиме чтения-записи, необходимо удалить другие плесксы тома [.filename]#vinum# root, так как в противном случае эти плесксы будут содержать несогласованные данные. + +==== Только первичная загрузка Bootstrap + +Если [.filename]#/boot/loader# не загружается, но первичная загрузка всё ещё работает (это видно по одному дефису в левой части экрана сразу после начала процесса загрузки), можно попытаться прервать первичную загрузку, нажав kbd:[space]. Это остановит загрузку на extref:{handbook}boot/[втором этапе, boot-boot1]. Здесь можно попытаться загрузиться с альтернативного раздела, например, с раздела, содержащего предыдущую корневую файловую систему, которая была перемещена из `a`. + +[[vinum-root-panic]] +==== Ничего не загружается, паника при загрузке + +Такая ситуация произойдет, если загрузчик был уничтожен при установке [.filename]#vinum#. К сожалению, [.filename]#vinum# случайно оставляет свободными только первые 4 КБ в начале своего раздела перед записью заголовочной информации [.filename]#vinum#. Однако, первая и вторая стадии загрузчика вместе с bsdlabel требуют 8 КБ. Поэтому, если раздел [.filename]#vinum# начинается со смещения 0 внутри слайса или диска, который должен быть загрузочным, установка [.filename]#vinum# повредит загрузчик. + +Аналогично, если описанная выше ситуация была исправлена загрузкой с "Fixit"-носителя, и загрузчик был переустановлен с помощью `bsdlabel -B`, как описано в extref:{handbook}boot/[этапе два, boot-boot1], загрузчик повредит заголовок [.filename]#vinum#, и [.filename]#vinum# больше не сможет найти свои диски. Хотя фактические данные конфигурации [.filename]#vinum# или данные в томах [.filename]#vinum# не будут повреждены, и можно восстановить все данные, введя точно такую же конфигурацию [.filename]#vinum# снова, исправить ситуацию сложно. Необходимо переместить весь раздел [.filename]#vinum# как минимум на 4 КБ, чтобы заголовок [.filename]#vinum# и системный загрузчик больше не конфликтовали. diff --git a/documentation/content/ru/articles/vinum/_index.po b/documentation/content/ru/articles/vinum/_index.po new file mode 100644 index 0000000000..93a1393713 --- /dev/null +++ b/documentation/content/ru/articles/vinum/_index.po @@ -0,0 +1,2260 @@ +# SOME DESCRIPTIVE TITLE +# Copyright (C) YEAR The FreeBSD Project +# This file is distributed under the same license as the FreeBSD Documentation package. +# Vladlen Popolitov <vladlenpopolitov@list.ru>, 2025. +msgid "" +msgstr "" +"Project-Id-Version: FreeBSD Documentation VERSION\n" +"POT-Creation-Date: 2025-10-04 00:14+0300\n" +"PO-Revision-Date: 2025-08-10 04:45+0000\n" +"Last-Translator: Vladlen Popolitov <vladlenpopolitov@list.ru>\n" +"Language-Team: Russian <https://translate-dev.freebsd.org/projects/" +"documentation/articlesvinum_index/ru/>\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 4.17\n" + +#. type: Yaml Front Matter Hash Value: description +#: documentation/content/en/articles/vinum/_index.adoc:1 +#, no-wrap +msgid "The vinum Volume Manager in FreeBSD" +msgstr "Менеджер томов vinum в FreeBSD" + +#. The Vinum Volume Manager +#. By Greg Lehey (grog at lemis dot com) +#. Added to the Handbook by Hiten Pandya <hmp@FreeBSD.org> +#. and Tom Rhodes <trhodes@FreeBSD.org> +#. For the FreeBSD Documentation Project +#. type: Title = +#: documentation/content/en/articles/vinum/_index.adoc:1 +#: documentation/content/en/articles/vinum/_index.adoc:19 +#, no-wrap +msgid "The vinum Volume Manager" +msgstr "Менеджер томов vinum" + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:51 +msgid "'''" +msgstr "'''" + +#. type: Title == +#: documentation/content/en/articles/vinum/_index.adoc:55 +#, no-wrap +msgid "Synopsis" +msgstr "Обзор" + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:62 +msgid "" +"No matter the type of disks, there are always potential problems. The disks " +"can be too small, too slow, or too unreliable to meet the system's " +"requirements. While disks are getting bigger, so are data storage " +"requirements. Often a file system is needed that is bigger than a disk's " +"capacity. Various solutions to these problems have been proposed and " +"implemented." +msgstr "" +"Независимо от типа дисков, всегда существуют потенциальные проблемы. Диски " +"могут быть слишком малы, слишком медленны или недостаточно надежны для " +"соответствия требованиям системы. Хотя диски становятся больше, требования " +"к хранению данных также растут. Часто требуется файловая система, размер " +"которой превышает емкость одного диска. Были предложены и реализованы " +"различные решения этих проблем." + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:66 +msgid "" +"One method is through the use of multiple, and sometimes redundant, disks. " +"In addition to supporting various cards and controllers for hardware " +"Redundant Array of Independent Disks RAID systems, the base FreeBSD system " +"includes the [.filename]#vinum# volume manager, a block device driver that " +"implements virtual disk drives and addresses these three problems. " +"[.filename]#vinum# provides more flexibility, performance, and reliability " +"than traditional disk storage and implements `RAID`-0, `RAID`-1, and " +"`RAID`-5 models, both individually and in combination." +msgstr "" +"Один из методов заключается в использовании нескольких, а иногда и " +"избыточных дисков. Помимо поддержки различных карт и контроллеров для " +"аппаратных систем RAID (Redundant Array of Independent Disks), базовая " +"система FreeBSD включает менеджер томов [.filename]#vinum#, драйвер блочных " +"устройств, который реализует виртуальные диски и решает эти три проблемы. " +"[.filename]#vinum# обеспечивает большую гибкость, производительность и " +"надежность по сравнению с традиционными системами хранения данных, а также " +"реализует модели `RAID`-0, `RAID`-1 и `RAID`-5 как по отдельности, так и в " +"комбинации." + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:68 +msgid "" +"This chapter provides an overview of potential problems with traditional " +"disk storage, and an introduction to the [.filename]#vinum# volume manager." +msgstr "" +"Эта глава предоставляет обзор потенциальных проблем с традиционным дисковым " +"хранилищем и введение в менеджер томов [.filename]#vinum#." + +#. type: delimited block = 4 +#: documentation/content/en/articles/vinum/_index.adoc:73 +msgid "" +"vinum is deprecated and is not present in FreeBSD 15.0 and later. Users are " +"advised to migrate to man:gconcat[8], man:gmirror[8], man:gstripe[8], " +"man:graid[8], or man:zfs[8]." +msgstr "" +"vinum устарел и отсутствует в FreeBSD 15.0 и более поздних версиях. " +"Пользователям рекомендуется перейти на man:gconcat[8], man:gmirror[8], " +"man:gstripe[8], man:graid[8] или man:zfs[8]." + +#. type: delimited block = 4 +#: documentation/content/en/articles/vinum/_index.adoc:82 +msgid "" +"Starting with FreeBSD 5, [.filename]#vinum# has been rewritten to fit into " +"the extref:{handbook}[GEOM architecture, geom], while retaining the original " +"ideas, terminology, and on-disk metadata. This rewrite is called _gvinum_ " +"(for _GEOM vinum_). While this chapter uses the term [.filename]#vinum#, " +"any command invocations should be performed with `gvinum`. The name of the " +"kernel module has changed from the original [.filename]#vinum.ko# to " +"[.filename]#geom_vinum.ko#, and all device nodes reside under [.filename]#/" +"dev/gvinum# instead of [.filename]#/dev/vinum#. As of FreeBSD 6, the " +"original [.filename]#vinum# implementation is no longer available in the " +"code base." +msgstr "" +"Начиная с FreeBSD 5, [.filename]#vinum# был переписан для интеграции в " +"extref:{handbook}geom/[архитектуру GEOM, geom-synopsis], сохраняя при этом " +"оригинальные идеи, терминологию и метаданные на диске. Эта переработанная " +"версия называется _gvinum_ (от _GEOM vinum_). Хотя в этой главе используется " +"термин [.filename]#vinum#, все команды должны выполняться с помощью " +"`gvinum`. Имя модуля ядра изменилось с оригинального [.filename]#vinum.ko# " +"на [.filename]#geom_vinum.ko#, а все узлы устройств находятся в [.filename]#/" +"dev/gvinum# вместо [.filename]#/dev/vinum#. Начиная с FreeBSD 6, " +"оригинальная реализация [.filename]#vinum# больше не доступна в кодовой базе." + +#. type: Title == +#: documentation/content/en/articles/vinum/_index.adoc:85 +#, no-wrap +msgid "Access Bottlenecks" +msgstr "Узкие места доступа" + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:89 +msgid "" +"Modern systems frequently need to access data in a highly concurrent " +"manner. For example, large FTP or HTTP servers can maintain thousands of " +"concurrent sessions and have multiple 100 Mbit/s connections to the outside " +"world, well beyond the sustained transfer rate of most disks." +msgstr "" +"Современные системы часто нуждаются в доступе к данным в условиях высокой " +"параллельности. Например, крупные FTP- или HTTP-серверы могут поддерживать " +"тысячи одновременных сеансов и иметь несколько 100 Мбит/с соединений с " +"внешним миром, что значительно превышает устойчивую скорость передачи " +"большинства дисков." + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:93 +msgid "" +"Current disk drives can transfer data sequentially at up to 70 MB/s, but " +"this value is of little importance in an environment where many independent " +"processes access a drive, and where they may achieve only a fraction of " +"these values. In such cases, it is more interesting to view the problem " +"from the viewpoint of the disk subsystem. The important parameter is the " +"load that a transfer places on the subsystem, or the time for which a " +"transfer occupies the drives involved in the transfer." +msgstr "" +"Современные дисковые накопители могут передавать данные последовательно со " +"скоростью до 70 МБ/с, но это значение имеет мало значения в среде, где " +"множество независимых процессов обращаются к накопителю и могут достичь лишь " +"доли этих значений. В таких случаях более интересно рассмотреть проблему с " +"точки зрения дисковой подсистемы. Важным параметром является нагрузка, " +"которую передача данных создаёт на подсистему, или время, в течение которого " +"передача занимает задействованные накопители." + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:96 +msgid "" +"In any disk transfer, the drive must first position the heads, wait for the " +"first sector to pass under the read head, and then perform the transfer. " +"These actions can be considered to be atomic as it does not make any sense " +"to interrupt them." +msgstr "" +"При любом переносе данных на диск сначала необходимо позиционировать " +"головки, дождаться, пока первый сектор окажется под считывающей головкой, а " +"затем выполнить перенос. Эти действия можно считать атомарными, так как их " +"прерывание не имеет смысла." + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:101 +msgid "" +"[[vinum-latency]] Consider a typical transfer of about 10 kB: the current " +"generation of high-performance disks can position the heads in an average of " +"3.5 ms. The fastest drives spin at 15,000 rpm, so the average rotational " +"latency (half a revolution) is 2 ms. At 70 MB/s, the transfer itself takes " +"about 150 μs, almost nothing compared to the positioning time. In such a " +"case, the effective transfer rate drops to a little over 1 MB/s and is " +"clearly highly dependent on the transfer size." +msgstr "" +"[[vinum-latency]] Рассмотрим типичную передачу около 10 КБ: современные " +"высокопроизводительные диски могут позиционировать головки в среднем за 3,5 " +"мс. Самые быстрые диски вращаются со скоростью 15 000 об/мин, поэтому " +"средняя задержка вращения (половина оборота) составляет 2 мс. При скорости " +"70 МБ/с сама передача занимает около 150 мкс, что почти ничто по сравнению с " +"временем позиционирования. В таком случае эффективная скорость передачи " +"падает до чуть более 1 МБ/с и явно сильно зависит от размера передачи." + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:104 +msgid "" +"The traditional and obvious solution to this bottleneck is \"more " +"spindles\": rather than using one large disk, use several smaller disks with " +"the same aggregate storage space. Each disk is capable of positioning and " +"transferring independently, so the effective throughput increases by a " +"factor close to the number of disks used." +msgstr "" +"Традиционное и очевидное решение этой проблемы — «больше дисков»: вместо " +"одного большого диска использовать несколько дисков меньшего размера с тем " +"же общим объёмом хранилища. Каждый диск способен позиционироваться и " +"передавать данные независимо, поэтому эффективная пропускная способность " +"увеличивается почти пропорционально количеству используемых дисков." + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:108 +msgid "" +"The actual throughput improvement is smaller than the number of disks " +"involved. Although each drive is capable of transferring in parallel, there " +"is no way to ensure that the requests are evenly distributed across the " +"drives. Inevitably the load on one drive will be higher than on another." +msgstr "" +"Фактическое увеличение пропускной способности меньше, чем количество " +"задействованных дисков. Хотя каждый диск способен передавать данные " +"параллельно, нет возможности гарантировать равномерное распределение " +"запросов между дисками. Неизбежно нагрузка на один диск будет выше, чем на " +"другой." + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:116 +msgid "" +"The evenness of the load on the disks is strongly dependent on the way the " +"data is shared across the drives. In the following discussion, it is " +"convenient to think of the disk storage as a large number of data sectors " +"which are addressable by number, rather like the pages in a book. The most " +"obvious method is to divide the virtual disk into groups of consecutive " +"sectors the size of the individual physical disks and store them in this " +"manner, rather like taking a large book and tearing it into smaller " +"sections. This method is called _concatenation_ and has the advantage that " +"the disks are not required to have any specific size relationships. It " +"works well when the access to the virtual disk is spread evenly about its " +"address space. When access is concentrated on a smaller area, the " +"improvement is less marked. crossref:vinum[vinum-concat, Concatenated " +"Organization] illustrates the sequence in which storage units are allocated " +"in a concatenated organization." +msgstr "" +"Равномерность нагрузки на диски сильно зависит от способа распределения " +"данных по накопителям. В дальнейшем обсуждении удобно представлять дисковое " +"хранилище как большое количество секторов данных, адресуемых по номерам, " +"подобно страницам в книге. Наиболее очевидный метод — разделить виртуальный " +"диск на группы последовательных секторов размером с отдельные физические " +"диски и хранить их таким образом, как если бы большую книгу разорвали на " +"меньшие разделы. Этот метод называется _ объединением (конкатенацией)_ и " +"имеет преимущество в том, что диски не требуют каких-либо определённых " +"соотношений размеров. Он хорошо работает, когда доступ к виртуальному диску " +"равномерно распределён по его адресному пространству. Если доступ " +"сосредоточен на меньшей области, улучшение менее заметно. " +"crossref:vinum[vinum-concat, Организация методом объединения] иллюстрирует " +"последовательность выделения блоков хранения в организации методом " +"объединения." + +#. type: Block title +#: documentation/content/en/articles/vinum/_index.adoc:118 +#, no-wrap +msgid "Concatenated Organization" +msgstr "Организация методом объединения" + +#. type: Target for macro image +#: documentation/content/en/articles/vinum/_index.adoc:119 +#, no-wrap +msgid "vinum-concat.png" +msgstr "vinum-concat.png" + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:125 +msgid "" +"An alternative mapping is to divide the address space into smaller, equal-" +"sized components and store them sequentially on different devices. For " +"example, the first 256 sectors may be stored on the first disk, the next 256 " +"sectors on the next disk and so on. After filling the last disk, the " +"process repeats until the disks are full. This mapping is called _striping_ " +"or RAID-0." +msgstr "" +"Альтернативный метод распределения заключается в разделении адресного " +"пространства на меньшие равные по размеру компоненты и их последовательном " +"хранении на разных устройствах. Например, первые 256 секторов могут " +"храниться на первом диске, следующие 256 секторов — на следующем диске и так " +"далее. После заполнения последнего диска процесс повторяется, пока все диски " +"не будут заполнены. Такой метод называется _чередованием (striping)_ или " +"RAID-0." + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:129 +msgid "" +"`RAID` offers various forms of fault tolerance, though RAID-0 is somewhat " +"misleading as it provides no redundancy. Striping requires somewhat more " +"effort to locate the data, and it can cause additional I/O load where a " +"transfer is spread over multiple disks, but it can also provide a more " +"constant load across the disks. crossref:vinum[vinum-striped, Striped " +"Organization] illustrates the sequence in which storage units are allocated " +"in a striped organization." +msgstr "" +"`RAID` предлагает различные формы отказоустойчивости, хотя RAID-0 несколько " +"вводит в заблуждение, так как не обеспечивает избыточности. Разделение " +"данных требует несколько больше усилий для их поиска и может создавать " +"дополнительную нагрузку ввода-вывода, когда передача распределяется по " +"нескольким дискам, но также может обеспечить более равномерную нагрузку на " +"диски. crossref:vinum[vinum-striped,Организация методом чередования] " +"иллюстрирует последовательность, в которой организуется распределение блоков " +"хранения с чередованием." + +#. type: Block title +#: documentation/content/en/articles/vinum/_index.adoc:131 +#, no-wrap +msgid "Striped Organization" +msgstr "Организация методом чередования" + +#. type: Target for macro image +#: documentation/content/en/articles/vinum/_index.adoc:132 +#, no-wrap +msgid "vinum-striped.png" +msgstr "vinum-striped.png" + +#. type: Title == +#: documentation/content/en/articles/vinum/_index.adoc:135 +#, no-wrap +msgid "Data Integrity" +msgstr "Целостность данных" + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:140 +msgid "" +"The final problem with disks is that they are unreliable. Although " +"reliability has increased tremendously over the last few years, disk drives " +"are still the most likely core component of a server to fail. When they do, " +"the results can be catastrophic and replacing a failed disk drive and " +"restoring data can result in server downtime." +msgstr "" +"Последняя проблема с дисками заключается в их ненадёжности. Хотя надёжность " +"значительно повысилась за последние годы, дисковые накопители остаются " +"наиболее вероятным компонентом сервера, который может выйти из строя. Когда " +"это происходит, последствия могут быть катастрофическими, а замена вышедшего " +"из строя диска и восстановление данных могут привести к простою сервера." + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:143 +msgid "" +"One approach to this problem is _mirroring_, or `RAID-1`, which keeps two " +"copies of the data on different physical hardware. Any write to the volume " +"writes to both disks; a read can be satisfied from either, so if one drive " +"fails, the data is still available on the other drive." +msgstr "" +"Один из подходов к этой проблеме — _зеркалирование_, или `RAID-1`, при " +"котором данные хранятся в двух экземплярах на разных физических носителях. " +"Любая запись на том записывается на оба диска; чтение может выполняться с " +"любого из них, поэтому при отказе одного диска данные остаются доступны на " +"другом." + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:145 +msgid "Mirroring has two problems:" +msgstr "Зеркалирование имеет две проблемы:" + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:147 +msgid "It requires twice as much disk storage as a non-redundant solution." +msgstr "" +"Требуется в два раза больше дискового пространства, чем для решения без " +"избыточности." + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:148 +msgid "" +"Writes must be performed to both drives, so they take up twice the bandwidth " +"of a non-mirrored volume. Reads do not suffer from a performance penalty and " +"can even be faster." +msgstr "" +"Запись должна выполняться на оба диска, поэтому она занимает в два раза " +"больше пропускной способности, чем в незеркалированном томе. Чтение не " +"страдает от потери производительности и может быть даже быстрее." + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:155 +msgid "" +"An alternative solution is _parity_, implemented in `RAID` levels 2, 3, 4 " +"and 5. Of these, `RAID-5` is the most interesting. As implemented in " +"[.filename]#vinum#, it is a variant on a striped organization which " +"dedicates one block of each stripe to parity one of the other blocks. As " +"implemented by [.filename]#vinum#, a `RAID-5` plex is similar to a striped " +"plex, except that it implements `RAID-5` by including a parity block in each " +"stripe. As required by `RAID-5`, the location of this parity block changes " +"from one stripe to the next. The numbers in the data blocks indicate the " +"relative block numbers." +msgstr "" +"Альтернативным решением является _четность_, реализованная в уровнях `RAID` " +"2, 3, 4 и 5. Из них `RAID-5` представляет наибольший интерес. В реализации " +"[.filename]#vinum# это вариант организации с чередованием, где один блок " +"каждой полосы выделяется под четность одного из других блоков. В реализации " +"[.filename]#vinum# плекс `RAID-5` аналогичен плексу с чередованием, за " +"исключением того, что он реализует `RAID-5`, включая блок четности в каждую " +"полосу. Как требуется в `RAID-5`, расположение этого блока четности меняется " +"от одной полосы к другой. Числа в блоках данных обозначают относительные " +"номера блоков." + +#. type: Block title +#: documentation/content/en/articles/vinum/_index.adoc:157 +#, no-wrap +msgid "`RAID`-5 Organization" +msgstr "Организация `RAID`-5" + +#. type: Target for macro image +#: documentation/content/en/articles/vinum/_index.adoc:158 +#, no-wrap +msgid "vinum-raid5-org.png" +msgstr "vinum-raid5-org.png" + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:163 +msgid "" +"Compared to mirroring, `RAID-5` has the advantage of requiring significantly " +"less storage space. Read access is similar to that of striped " +"organizations, but write access is significantly slower, approximately 25% " +"of the read performance. If one drive fails, the array can continue to " +"operate in degraded mode where a read from one of the remaining accessible " +"drives continues normally, but a read from the failed drive is recalculated " +"from the corresponding block from all the remaining drives." +msgstr "" +"По сравнению с зеркалированием, `RAID-5` имеет преимущество в виде " +"значительно меньшего требуемого объема хранилища. Скорость чтения аналогична " +"таковой при чередующейся организации, но скорость записи значительно ниже — " +"примерно 25% от скорости чтения. Если один диск выходит из строя, массив " +"может продолжать работу в деградировавшем режиме, при котором чтение с " +"оставшихся доступных дисков продолжается в обычном режиме, а чтение с " +"отказавшего диска пересчитывается из соответствующих блоков всех оставшихся " +"дисков." + +#. type: Title == +#: documentation/content/en/articles/vinum/_index.adoc:165 +#, no-wrap +msgid "[.filename]#vinum# Objects" +msgstr "Объекты [.filename]#vinum#" + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:168 +msgid "" +"To address these problems, [.filename]#vinum# implements a four-level " +"hierarchy of objects:" +msgstr "" +"Для решения этих проблем [.filename]#vinum# реализует четырёхуровневую " +"иерархию объектов:" + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:170 +msgid "" +"The most visible object is the virtual disk, called a _volume_. Volumes have " +"essentially the same properties as a UNIX(R) disk drive, though there are " +"some minor differences. For one, they have no size limitations." +msgstr "" +"Наиболее заметным объектом является виртуальный диск, называемый _томом_. " +"Том обладает практически теми же свойствами, что и UNIX(R) дисковый " +"накопитель, хотя есть некоторые незначительные отличия. Например, у тома нет " +"ограничений по размеру." + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:171 +msgid "" +"Volumes are composed of _plexes_, each of which represent the total address " +"space of a volume. This level in the hierarchy provides redundancy. Think of " +"plexes as individual disks in a mirrored array, each containing the same " +"data." +msgstr "" +"Тома состоят из _плексов_, каждый из которых представляет полное адресное " +"пространство тома. Этот уровень в иерархии обеспечивает избыточность. Можно " +"представить плексы как отдельные диски в зеркальном массиве, каждый из " +"которых содержит одинаковые данные." + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:172 +msgid "" +"Since [.filename]#vinum# exists within the UNIX(R) disk storage framework, " +"it would be possible to use UNIX(R) partitions as the building block for " +"multi-disk plexes. In fact, this turns out to be too inflexible as UNIX(R) " +"disks can have only a limited number of partitions. Instead, " +"[.filename]#vinum# subdivides a single UNIX(R) partition, the _drive_, into " +"contiguous areas called _subdisks_, which are used as building blocks for " +"plexes." +msgstr "" +"Поскольку [.filename]#vinum# существует в рамках системы хранения данных " +"UNIX(R), можно было бы использовать разделы UNIX(R) в качестве строительных " +"блоков для многодисковых plexes. Однако на практике это оказывается слишком " +"негибким, так как диски UNIX(R) могут иметь только ограниченное количество " +"разделов. Вместо этого [.filename]#vinum# разбивает единственный раздел " +"UNIX(R), называемый _дисковый раздел (drive)_, на непрерывные области, " +"называемые _поддисками (subdisk)_, которые используются как строительные " +"блоки для плексов." + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:173 +msgid "" +"Subdisks reside on [.filename]#vinum#_drives_, currently UNIX(R) partitions. " +"[.filename]#vinum# drives can contain any number of subdisks. With the " +"exception of a small area at the beginning of the drive, which is used for " +"storing configuration and state information, the entire drive is available " +"for data storage." +msgstr "" +"Поддиски располагаются на _дисковых разделах_ [.filename]#vinum#, в " +"настоящее время это разделы UNIX(R). Разделы [.filename]#vinum# могут " +"содержать любое количество поддисков. За исключением небольшой области в " +"начале раздела, которая используется для хранения конфигурации и состояния, " +"весь раздел доступен для хранения данных." + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:175 +msgid "" +"The following sections describe the way these objects provide the " +"functionality required of [.filename]#vinum#." +msgstr "" +"Следующие разделы статьи описывают, каким образом эти объекты обеспечивают " +"функциональность, требуемую для [.filename]#vinum#." + +#. type: Title === +#: documentation/content/en/articles/vinum/_index.adoc:176 +#, no-wrap +msgid "Volume Size Considerations" +msgstr "Учет размера томов" + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:180 +msgid "" +"Plexes can include multiple subdisks spread over all drives in the " +"[.filename]#vinum# configuration. As a result, the size of an individual " +"drive does not limit the size of a plex or a volume." +msgstr "" +"Плексы могут включать несколько поддисков, распределенных по всем дискам в " +"конфигурации [.filename]#vinum#. В результате, размер отдельного диска не " +"ограничивает размер плекса или тома." + +#. type: Title === +#: documentation/content/en/articles/vinum/_index.adoc:181 +#, no-wrap +msgid "Redundant Data Storage" +msgstr "Избыточное хранение данных" + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:186 +msgid "" +"[.filename]#vinum# implements mirroring by attaching multiple plexes to a " +"volume. Each plex is a representation of the data in a volume. A volume " +"may contain between one and eight plexes." +msgstr "" +"[.filename]#vinum# реализует зеркалирование путем присоединения нескольких " +"плекс к тому. Каждый плекс представляет данные в томе. Том может содержать " +"от одного до восьми плексов." + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:189 +msgid "" +"Although a plex represents the complete data of a volume, it is possible for " +"parts of the representation to be physically missing, either by design (by " +"not defining a subdisk for parts of the plex) or by accident (as a result of " +"the failure of a drive). As long as at least one plex can provide the data " +"for the complete address range of the volume, the volume is fully functional." +msgstr "" +"Хотя плекс представляет полные данные тома, возможно, что некоторые части " +"представления физически отсутствуют — либо по замыслу (если поддиск для " +"частей плекса не определён), либо случайно (в результате выхода диска из " +"строя). До тех пор, пока хотя бы один плекс может предоставить данные для " +"полного адресного пространства тома, том остаётся полностью работоспособным." + +#. type: Title === +#: documentation/content/en/articles/vinum/_index.adoc:190 +#, no-wrap +msgid "Which Plex Organization?" +msgstr "Какую организацию плексов выбрать?" + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:193 +msgid "" +"[.filename]#vinum# implements both concatenation and striping at the plex " +"level:" +msgstr "" +"[.filename]#vinum# реализует как объединение, так и чередование на уровне " +"плекс:" + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:195 +msgid "" +"A _concatenated plex_ uses the address space of each subdisk in turn. " +"Concatenated plexes are the most flexible as they can contain any number of " +"subdisks, and the subdisks may be of different length. The plex may be " +"extended by adding additional subdisks. They require less CPU time than " +"striped plexes, though the difference in CPU overhead is not measurable. On " +"the other hand, they are most susceptible to hot spots, where one disk is " +"very active and others are idle." +msgstr "" +"_Плекс с объединением_ использует адресное пространство каждого поддиска по " +"очереди. Объединённые плексы являются наиболее гибкими, так как могут " +"содержать любое количество поддисков, а поддиски могут быть разной длины. " +"Плекс может быть расширен путём добавления дополнительных поддисков. Они " +"требуют меньше процессорного времени, чем чередующиеся плексы, хотя разница " +"в нагрузке на процессор незначительна. С другой стороны, они наиболее " +"подвержены \"горячим точкам\", когда один диск очень активен, а другие " +"простаивают." + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:196 +msgid "" +"A _striped plex_ stripes the data across each subdisk. The subdisks must all " +"be the same size and there must be at least two subdisks to distinguish it " +"from a concatenated plex. The greatest advantage of striped plexes is that " +"they reduce hot spots. By choosing an optimum sized stripe, about 256 kB, " +"the load can be evened out on the component drives. Extending a plex by " +"adding new subdisks is so complicated that [.filename]#vinum# does not " +"implement it." +msgstr "" +"_Плекс с чередованием_ распределяет данные по каждому поддиску. Поддиски " +"должны быть одного размера, и их должно быть как минимум два, чтобы отличить " +"такой плекс от объединенного. Главное преимущество чередующихся плексов в " +"том, что они уменьшают вероятность появления \"горячих точек\". Выбрав " +"оптимальный размер полосы (около 256 КБ), можно равномерно распределить " +"нагрузку на диски – компоненты системы. Расширение плекса путем добавления " +"новых поддисков настолько сложно, что [.filename]#vinum# не реализует эту " +"возможность." + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:198 +msgid "" +"crossref:vinum[vinum-comparison, [.filename]#vinum# Plex Organizations] " +"summarizes the advantages and disadvantages of each plex organization." +msgstr "" +"crossref:vinum[vinum-comparison, Организации плексов в [.filename]#vinum#] " +"обобщает преимущества и недостатки каждой организации плексов." + +#. type: Block title +#: documentation/content/en/articles/vinum/_index.adoc:200 +#, no-wrap +msgid "[.filename]#vinum# Plex Organizations" +msgstr "Организации плексов в [.filename]#vinum#" + +#. type: Table +#: documentation/content/en/articles/vinum/_index.adoc:204 +#, no-wrap +msgid "Plex type" +msgstr "Тип плекса" + +#. type: Table +#: documentation/content/en/articles/vinum/_index.adoc:205 +#, no-wrap +msgid "Minimum subdisks" +msgstr "Минимальное количество поддисков" + +#. type: Table +#: documentation/content/en/articles/vinum/_index.adoc:206 +#, no-wrap +msgid "Can add subdisks" +msgstr "Может добавлять поддиски" + +#. type: Table +#: documentation/content/en/articles/vinum/_index.adoc:207 +#, no-wrap +msgid "Must be equal size" +msgstr "Должен быть равного размера" + +#. type: Table +#: documentation/content/en/articles/vinum/_index.adoc:209 +#, no-wrap +msgid "Application" +msgstr "Приложение" + +#. type: Table +#: documentation/content/en/articles/vinum/_index.adoc:210 +#, no-wrap +msgid "concatenated" +msgstr "объединённый" + +#. type: Table +#: documentation/content/en/articles/vinum/_index.adoc:211 +#, no-wrap +msgid "1" +msgstr "1" + +#. type: Table +#: documentation/content/en/articles/vinum/_index.adoc:212 +#: documentation/content/en/articles/vinum/_index.adoc:219 +#, no-wrap +msgid "yes" +msgstr "да" + +#. type: Table +#: documentation/content/en/articles/vinum/_index.adoc:213 +#: documentation/content/en/articles/vinum/_index.adoc:218 +#, no-wrap +msgid "no" +msgstr "no" + +#. type: Table +#: documentation/content/en/articles/vinum/_index.adoc:215 +#, no-wrap +msgid "Large data storage with maximum placement flexibility and moderate performance" +msgstr "Крупное хранилище данных с максимальной гибкостью размещения и умеренной производительностью" + +#. type: Table +#: documentation/content/en/articles/vinum/_index.adoc:216 +#, no-wrap +msgid "striped" +msgstr "чередуемый" + +#. type: Table +#: documentation/content/en/articles/vinum/_index.adoc:217 +#, no-wrap +msgid "2" +msgstr "2" + +#. type: Table +#: documentation/content/en/articles/vinum/_index.adoc:220 +#, no-wrap +msgid "High performance in combination with highly concurrent access" +msgstr "Высокая производительность в сочетании с высокопараллельным доступом" + +#. type: Title == +#: documentation/content/en/articles/vinum/_index.adoc:223 +#, no-wrap +msgid "Some Examples" +msgstr "Некоторые примеры" + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:229 +msgid "" +"[.filename]#vinum# maintains a _configuration database_ which describes the " +"objects known to an individual system. Initially, the user creates the " +"configuration database from one or more configuration files using " +"man:gvinum[8]. [.filename]#vinum# stores a copy of its configuration " +"database on each disk _device_ under its control. This database is updated " +"on each state change, so that a restart accurately restores the state of " +"each [.filename]#vinum# object." +msgstr "" +"[.filename]#vinum# поддерживает _базу данных конфигурации_, которая " +"описывает объекты, известные конкретной системе. Первоначально пользователь " +"создает базу данных конфигурации из одного или нескольких конфигурационных " +"файлов с помощью man:gvinum[8]. [.filename]#vinum# хранит копию своей базы " +"данных конфигурации на каждом _устройстве_ диска, находящемся под его " +"управлением. Эта база данных обновляется при каждом изменении состояния, так " +"что перезапуск точно восстанавливает состояние каждого объекта " +"[.filename]#vinum#." + +#. type: Title === +#: documentation/content/en/articles/vinum/_index.adoc:230 +#, no-wrap +msgid "The Configuration File" +msgstr "Файл конфигурации" + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:234 +msgid "" +"The configuration file describes individual [.filename]#vinum# objects. The " +"definition of a simple volume might be:" +msgstr "" +"Файл конфигурации описывает отдельные объекты [.filename]#vinum#. " +"Определение простого тома может выглядеть следующим образом:" + +#. type: delimited block . 4 +#: documentation/content/en/articles/vinum/_index.adoc:241 +#, no-wrap +msgid "" +" drive a device /dev/da3h\n" +" volume myvol\n" +" plex org concat\n" +" sd length 512m drive a\n" +msgstr "" +" drive a device /dev/da3h\n" +" volume myvol\n" +" plex org concat\n" +" sd length 512m drive a\n" + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:244 +msgid "This file describes four [.filename]#vinum# objects:" +msgstr "Этот файл описывает четыре объекта [.filename]#vinum#:" + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:246 +msgid "" +"The _drive_ line describes a disk partition (_drive_) and its location " +"relative to the underlying hardware. It is given the symbolic name _a_. This " +"separation of symbolic names from device names allows disks to be moved from " +"one location to another without confusion." +msgstr "" +"Строка _drive_ описывает раздел диска (_drive_) и его расположение " +"относительно оборудования, на котором он расположен. Ему присваивается " +"символическое имя _a_. Такое разделение символических имён от имён устройств " +"позволяет перемещать диски из одного места в другое без путаницы." + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:247 +msgid "" +"The _volume_ line describes a volume. The only required attribute is the " +"name, in this case _myvol_." +msgstr "" +"Строка _volume_ описывает том. Единственный обязательный атрибут — это имя, " +"в данном случае _myvol_." + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:248 +msgid "" +"The _plex_ line defines a plex. The only required parameter is the " +"organization, in this case _concat_. No name is necessary as the system " +"automatically generates a name from the volume name by adding the suffix " +"_.px_, where _x_ is the number of the plex in the volume. Thus this plex " +"will be called _myvol.p0_." +msgstr "" +"Строка _plex_ определяет плекс. Единственный обязательный параметр — это " +"организация, в данном случае _concat_. Имя не требуется, так как система " +"автоматически генерирует его из имени тома, добавляя суффикс _.px_, где _x_ " +"— номер плекса в томе. Таким образом, этот плекс будет называться _myvol.p0_." + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:249 +msgid "" +"The _sd_ line describes a subdisk. The minimum specifications are the name " +"of a drive on which to store it, and the length of the subdisk. No name is " +"necessary as the system automatically assigns names derived from the plex " +"name by adding the suffix _.sx_, where _x_ is the number of the subdisk in " +"the plex. Thus [.filename]#vinum# gives this subdisk the name _myvol.p0.s0_." +msgstr "" +"Строка _sd_ описывает поддиск. Минимальные требования — это имя диска для " +"его хранения и длина поддиска. Имя не обязательно, так как система " +"автоматически назначает имена, производные от имени плекса, добавляя суффикс " +"_.sx_, где _x_ — номер поддиска в плексе. Таким образом, [.filename]#vinum# " +"присваивает этому поддиску имя _myvol.p0.s0_." + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:251 +msgid "" +"After processing this file, man:gvinum[8] produces the following output:" +msgstr "" +"После обработки этого файла команда man:gvinum[8] выводит следующий " +"результат:" + +#. type: delimited block . 4 +#: documentation/content/en/articles/vinum/_index.adoc:261 +#, no-wrap +msgid "" +"# gvinum -> create config1\n" +"Configuration summary\n" +"Drives: 1 (4 configured)\n" +"Volumes: 1 (4 configured)\n" +"Plexes: 1 (8 configured)\n" +"Subdisks: 1 (16 configured)\n" +msgstr "" +"# gvinum -> create config1\n" +"Configuration summary\n" +"Drives: 1 (4 configured)\n" +"Volumes: 1 (4 configured)\n" +"Plexes: 1 (8 configured)\n" +"Subdisks: 1 (16 configured)\n" + +#. type: delimited block . 4 +#: documentation/content/en/articles/vinum/_index.adoc:263 +#, no-wrap +msgid " D a State: up Device /dev/da3h Avail: 2061/2573 MB (80%)\n" +msgstr " D a State: up Device /dev/da3h Avail: 2061/2573 MB (80%)\n" + +#. type: delimited block . 4 +#: documentation/content/en/articles/vinum/_index.adoc:265 +#, no-wrap +msgid " V myvol State: up Plexes: 1 Size: 512 MB\n" +msgstr " V myvol State: up Plexes: 1 Size: 512 MB\n" + +#. type: delimited block . 4 +#: documentation/content/en/articles/vinum/_index.adoc:267 +#, no-wrap +msgid " P myvol.p0 C State: up Subdisks: 1 Size: 512 MB\n" +msgstr " P myvol.p0 C State: up Subdisks: 1 Size: 512 MB\n" + +#. type: delimited block . 4 +#: documentation/content/en/articles/vinum/_index.adoc:269 +#, no-wrap +msgid " S myvol.p0.s0 State: up PO: 0 B Size: 512 MB\n" +msgstr " S myvol.p0.s0 State: up PO: 0 B Size: 512 MB\n" + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:273 +msgid "" +"This output shows the brief listing format of man:gvinum[8]. It is " +"represented graphically in crossref:vinum[vinum-simple-vol, A Simple " +"[.filename]#vinum# Volume]." +msgstr "" +"Этот вывод показывает краткий формат списка man:gvinum[8]. Он представлен " +"графически в crossref:vinum[vinum-simple-vol, Простой том " +"[.filename]#vinum#]." + +#. type: Block title +#: documentation/content/en/articles/vinum/_index.adoc:275 +#, no-wrap +msgid "A Simple [.filename]#vinum# Volume" +msgstr "Простой том [.filename]#vinum#" + +#. type: Target for macro image +#: documentation/content/en/articles/vinum/_index.adoc:276 +#, no-wrap +msgid "vinum-simple-vol.png" +msgstr "vinum-simple-vol.png" + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:280 +msgid "" +"This figure, and the ones which follow, represent a volume, which contains " +"the plexes, which in turn contains the subdisks. In this example, the " +"volume contains one plex, and the plex contains one subdisk." +msgstr "" +"Этот рисунок и следующие представляют том, который содержит плексы, которые, " +"в свою очередь, содержат поддиски. В этом примере том содержит один плекс, а " +"плекс содержит один поддиск." + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:285 +msgid "" +"This particular volume has no specific advantage over a conventional disk " +"partition. It contains a single plex, so it is not redundant. The plex " +"contains a single subdisk, so there is no difference in storage allocation " +"from a conventional disk partition. The following sections illustrate " +"various more interesting configuration methods." +msgstr "" +"Этот конкретный том не имеет особых преимуществ по сравнению с обычным " +"разделом диска. Он содержит один плекс, поэтому не является избыточным. " +"Плекс содержит один поддиск, поэтому нет различий в распределении хранилища " +"по сравнению с обычным разделом диска. В следующих разделах показаны " +"различные более интересные методы конфигурации." + +#. type: Title === +#: documentation/content/en/articles/vinum/_index.adoc:286 +#, no-wrap +msgid "Increased Resilience: Mirroring" +msgstr "Увеличенная отказоустойчивость: зеркалирование" + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:291 +msgid "" +"The resilience of a volume can be increased by mirroring. When laying out a " +"mirrored volume, it is important to ensure that the subdisks of each plex " +"are on different drives, so that a drive failure will not take down both " +"plexes. The following configuration mirrors a volume:" +msgstr "" +"Устойчивость тома может быть повышена за счёт зеркалирования. При создании " +"зеркального тома важно убедиться, что поддиски каждого плекса находятся на " +"разных дисках, чтобы выход из строя одного диска не затронул оба плекса. " +"Следующая конфигурация создаёт зеркальный том:" + +#. type: delimited block . 4 +#: documentation/content/en/articles/vinum/_index.adoc:300 +#, no-wrap +msgid "" +"\tdrive b device /dev/da4h\n" +"\tvolume mirror\n" +" plex org concat\n" +" sd length 512m drive a\n" +"\t plex org concat\n" +"\t sd length 512m drive b\n" +msgstr "" +"\tdrive b device /dev/da4h\n" +"\tvolume mirror\n" +" plex org concat\n" +" sd length 512m drive a\n" +"\t plex org concat\n" +"\t sd length 512m drive b\n" + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:304 +msgid "" +"In this example, it was not necessary to specify a definition of drive _a_ " +"again, since [.filename]#vinum# keeps track of all objects in its " +"configuration database. After processing this definition, the configuration " +"looks like:" +msgstr "" +"В этом примере не потребовалось снова указывать определение диска _a_, " +"поскольку [.filename]#vinum# отслеживает все объекты в своей базе данных " +"конфигурации. После обработки этого определения конфигурация выглядит " +"следующим образом:" + +#. type: delimited block . 4 +#: documentation/content/en/articles/vinum/_index.adoc:312 +#, no-wrap +msgid "" +"\tDrives: 2 (4 configured)\n" +"\tVolumes: 2 (4 configured)\n" +"\tPlexes: 3 (8 configured)\n" +"\tSubdisks: 3 (16 configured)\n" +msgstr "" +"\tDrives: 2 (4 configured)\n" +"\tVolumes: 2 (4 configured)\n" +"\tPlexes: 3 (8 configured)\n" +"\tSubdisks: 3 (16 configured)\n" + +#. type: delimited block . 4 +#: documentation/content/en/articles/vinum/_index.adoc:315 +#, no-wrap +msgid "" +"\tD a State: up Device /dev/da3h Avail: 1549/2573 MB (60%)\n" +"\tD b State: up Device /dev/da4h Avail: 2061/2573 MB (80%)\n" +msgstr "" +"\tD a State: up Device /dev/da3h Avail: 1549/2573 MB (60%)\n" +"\tD b State: up Device /dev/da4h Avail: 2061/2573 MB (80%)\n" + +#. type: delimited block . 4 +#: documentation/content/en/articles/vinum/_index.adoc:318 +#, no-wrap +msgid "" +" V myvol State: up Plexes: 1 Size: 512 MB\n" +" V mirror State: up Plexes: 2 Size: 512 MB\n" +msgstr "" +" V myvol State: up Plexes: 1 Size: 512 MB\n" +" V mirror State: up Plexes: 2 Size: 512 MB\n" + +#. type: delimited block . 4 +#: documentation/content/en/articles/vinum/_index.adoc:322 +#, no-wrap +msgid "" +" P myvol.p0 C State: up Subdisks: 1 Size: 512 MB\n" +" P mirror.p0 C State: up Subdisks: 1 Size: 512 MB\n" +" P mirror.p1 C State: initializing Subdisks: 1 Size: 512 MB\n" +msgstr "" +" P myvol.p0 C State: up Subdisks: 1 Size: 512 MB\n" +" P mirror.p0 C State: up Subdisks: 1 Size: 512 MB\n" +" P mirror.p1 C State: initializing Subdisks: 1 Size: 512 MB\n" + +#. type: delimited block . 4 +#: documentation/content/en/articles/vinum/_index.adoc:326 +#, no-wrap +msgid "" +" S myvol.p0.s0 State: up PO: 0 B Size: 512 MB\n" +"\tS mirror.p0.s0 State: up PO: 0 B Size: 512 MB\n" +"\tS mirror.p1.s0 State: empty PO: 0 B Size: 512 MB\n" +msgstr "" +" S myvol.p0.s0 State: up PO: 0 B Size: 512 MB\n" +"\tS mirror.p0.s0 State: up PO: 0 B Size: 512 MB\n" +"\tS mirror.p1.s0 State: empty PO: 0 B Size: 512 MB\n" + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:329 +msgid "" +"crossref:vinum[vinum-mirrored-vol, A Mirrored [.filename]#vinum# Volume] " +"shows the structure graphically." +msgstr "" +"crossref:vinum[vinum-mirrored-vol, Зеркальный том [.filename]#vinum#] " +"графически отображает структуру." + +#. type: Block title +#: documentation/content/en/articles/vinum/_index.adoc:331 +#, no-wrap +msgid "A Mirrored [.filename]#vinum# Volume" +msgstr "Зеркальный том [.filename]#vinum#" + +#. type: Target for macro image +#: documentation/content/en/articles/vinum/_index.adoc:332 +#, no-wrap +msgid "vinum-mirrored-vol.png" +msgstr "vinum-mirrored-vol.png" + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:336 +msgid "" +"In this example, each plex contains the full 512 MB of address space. As in " +"the previous example, each plex contains only a single subdisk." +msgstr "" +"В этом примере каждый плекс содержит полные 512 МБ адресного пространства. " +"Как и в предыдущем примере, каждый плекс содержит только один поддиск." + +#. type: Title === +#: documentation/content/en/articles/vinum/_index.adoc:337 +#, no-wrap +msgid "Optimizing Performance" +msgstr "Оптимизация производительности" + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:342 +msgid "" +"The mirrored volume in the previous example is more resistant to failure " +"than an unmirrored volume, but its performance is less as each write to the " +"volume requires a write to both drives, using up a greater proportion of the " +"total disk bandwidth. Performance considerations demand a different " +"approach: instead of mirroring, the data is striped across as many disk " +"drives as possible. The following configuration shows a volume with a plex " +"striped across four disk drives:" +msgstr "" +"Зеркальный том в предыдущем примере более устойчив к сбоям, чем незеркальный " +"том, но его производительность ниже, так как каждая запись в том требует " +"записи на оба диска, используя большую часть общей пропускной способности " +"дисков. Соображения производительности требуют другого подхода: вместо " +"зеркалирования данные распределяются по полосам на максимально возможное " +"количество дисков. Следующая конфигурация показывает том с плексом, " +"распределённым по полосам на четырёх дисках:" + +#. type: delimited block . 4 +#: documentation/content/en/articles/vinum/_index.adoc:353 +#, no-wrap +msgid "" +" drive c device /dev/da5h\n" +"\tdrive d device /dev/da6h\n" +"\tvolume stripe\n" +"\tplex org striped 512k\n" +"\t sd length 128m drive a\n" +"\t sd length 128m drive b\n" +"\t sd length 128m drive c\n" +"\t sd length 128m drive d\n" +msgstr "" +" drive c device /dev/da5h\n" +"\tdrive d device /dev/da6h\n" +"\tvolume stripe\n" +"\tplex org striped 512k\n" +"\t sd length 128m drive a\n" +"\t sd length 128m drive b\n" +"\t sd length 128m drive c\n" +"\t sd length 128m drive d\n" + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:357 +msgid "" +"As before, it is not necessary to define the drives which are already known " +"to [.filename]#vinum#. After processing this definition, the configuration " +"looks like:" +msgstr "" +"Как и ранее, не нужно определять диски, которые уже известны " +"[.filename]#vinum#. После обработки этого определения конфигурация выглядит " +"следующим образом:" + +#. type: delimited block . 4 +#: documentation/content/en/articles/vinum/_index.adoc:365 +#, no-wrap +msgid "" +"\tDrives: 4 (4 configured)\n" +"\tVolumes: 3 (4 configured)\n" +"\tPlexes: 4 (8 configured)\n" +"\tSubdisks: 7 (16 configured)\n" +msgstr "" +"\tDrives: 4 (4 configured)\n" +"\tVolumes: 3 (4 configured)\n" +"\tPlexes: 4 (8 configured)\n" +"\tSubdisks: 7 (16 configured)\n" + +#. type: delimited block . 4 +#: documentation/content/en/articles/vinum/_index.adoc:370 +#, no-wrap +msgid "" +" D a State: up Device /dev/da3h Avail: 1421/2573 MB (55%)\n" +" D b State: up Device /dev/da4h Avail: 1933/2573 MB (75%)\n" +" D c State: up Device /dev/da5h Avail: 2445/2573 MB (95%)\n" +" D d State: up Device /dev/da6h Avail: 2445/2573 MB (95%)\n" +msgstr "" +" D a State: up Device /dev/da3h Avail: 1421/2573 MB (55%)\n" +" D b State: up Device /dev/da4h Avail: 1933/2573 MB (75%)\n" +" D c State: up Device /dev/da5h Avail: 2445/2573 MB (95%)\n" +" D d State: up Device /dev/da6h Avail: 2445/2573 MB (95%)\n" + +#. type: delimited block . 4 +#: documentation/content/en/articles/vinum/_index.adoc:374 +#, no-wrap +msgid "" +" V myvol State: up Plexes: 1 Size: 512 MB\n" +" V mirror State: up Plexes: 2 Size: 512 MB\n" +" V striped State: up Plexes: 1 Size: 512 MB\n" +msgstr "" +" V myvol State: up Plexes: 1 Size: 512 MB\n" +" V mirror State: up Plexes: 2 Size: 512 MB\n" +" V striped State: up Plexes: 1 Size: 512 MB\n" + +#. type: delimited block . 4 +#: documentation/content/en/articles/vinum/_index.adoc:379 +#, no-wrap +msgid "" +" P myvol.p0 C State: up Subdisks: 1 Size: 512 MB\n" +" P mirror.p0 C State: up Subdisks: 1 Size: 512 MB\n" +" P mirror.p1 C State: initializing Subdisks: 1 Size: 512 MB\n" +" P striped.p1 State: up Subdisks: 1 Size: 512 MB\n" +msgstr "" +" P myvol.p0 C State: up Subdisks: 1 Size: 512 MB\n" +" P mirror.p0 C State: up Subdisks: 1 Size: 512 MB\n" +" P mirror.p1 C State: initializing Subdisks: 1 Size: 512 MB\n" +" P striped.p1 State: up Subdisks: 1 Size: 512 MB\n" + +#. type: delimited block . 4 +#: documentation/content/en/articles/vinum/_index.adoc:387 +#, no-wrap +msgid "" +" S myvol.p0.s0 State: up PO: 0 B Size: 512 MB\n" +" S mirror.p0.s0 State: up PO: 0 B Size: 512 MB\n" +" S mirror.p1.s0 State: empty PO: 0 B Size: 512 MB\n" +" S striped.p0.s0 State: up PO: 0 B Size: 128 MB\n" +" S striped.p0.s1 State: up PO: 512 kB Size: 128 MB\n" +" S striped.p0.s2 State: up PO: 1024 kB Size: 128 MB\n" +" S striped.p0.s3 State: up PO: 1536 kB Size: 128 MB\n" +msgstr "" +" S myvol.p0.s0 State: up PO: 0 B Size: 512 MB\n" +" S mirror.p0.s0 State: up PO: 0 B Size: 512 MB\n" +" S mirror.p1.s0 State: empty PO: 0 B Size: 512 MB\n" +" S striped.p0.s0 State: up PO: 0 B Size: 128 MB\n" +" S striped.p0.s1 State: up PO: 512 kB Size: 128 MB\n" +" S striped.p0.s2 State: up PO: 1024 kB Size: 128 MB\n" +" S striped.p0.s3 State: up PO: 1536 kB Size: 128 MB\n" + +#. type: Block title +#: documentation/content/en/articles/vinum/_index.adoc:390 +#, no-wrap +msgid "A Striped [.filename]#vinum# Volume" +msgstr "Том [.filename]#vinum# с чередованием" + +#. type: Target for macro image +#: documentation/content/en/articles/vinum/_index.adoc:391 +#, no-wrap +msgid "vinum-striped-vol.png" +msgstr "vinum-striped-vol.png" + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:395 +msgid "" +"This volume is represented in crossref:vinum[vinum-striped-vol, A Striped " +"[.filename]#vinum# Volume]. The darkness of the stripes indicates the " +"position within the plex address space, where the lightest stripes come " +"first and the darkest last." +msgstr "" +"Этот том представлен на схеме crossref:vinum[vinum-striped-vol, Том " +"[.filename]#vinum# с чередованием]. Темнота полос указывает на позицию в " +"адресном пространстве плекса, где самые светлые полосы идут первыми, а самые " +"темные — последними." + +#. type: Title === +#: documentation/content/en/articles/vinum/_index.adoc:396 +#, no-wrap +msgid "Resilience and Performance" +msgstr "Устойчивость и производительность" + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:400 +msgid "" +"[[vinum-resilience]]With sufficient hardware, it is possible to build " +"volumes which show both increased resilience and increased performance " +"compared to standard UNIX(R) partitions. A typical configuration file might " +"be:" +msgstr "" +"[[vinum-resilience]]При достаточном аппаратном обеспечении можно создать " +"тома, которые демонстрируют как повышенную отказоустойчивость, так и " +"увеличенную производительность по сравнению со стандартными разделами " +"UNIX(R). Типичный конфигурационный файл может выглядеть так:" + +#. type: delimited block . 4 +#: documentation/content/en/articles/vinum/_index.adoc:416 +#, no-wrap +msgid "" +"\tvolume raid10\n" +" plex org striped 512k\n" +" sd length 102480k drive a\n" +" sd length 102480k drive b\n" +" sd length 102480k drive c\n" +" sd length 102480k drive d\n" +" sd length 102480k drive e\n" +" plex org striped 512k\n" +" sd length 102480k drive c\n" +" sd length 102480k drive d\n" +" sd length 102480k drive e\n" +" sd length 102480k drive a\n" +" sd length 102480k drive b\n" +msgstr "" +"\tvolume raid10\n" +" plex org striped 512k\n" +" sd length 102480k drive a\n" +" sd length 102480k drive b\n" +" sd length 102480k drive c\n" +" sd length 102480k drive d\n" +" sd length 102480k drive e\n" +" plex org striped 512k\n" +" sd length 102480k drive c\n" +" sd length 102480k drive d\n" +" sd length 102480k drive e\n" +" sd length 102480k drive a\n" +" sd length 102480k drive b\n" + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:420 +msgid "" +"The subdisks of the second plex are offset by two drives from those of the " +"first plex. This helps to ensure that writes do not go to the same subdisks " +"even if a transfer goes over two drives." +msgstr "" +"Поддиски второго плекса смещены на два диска относительно поддисков первого " +"плекса. Это помогает гарантировать, что записи не будут направляться на одни " +"и те же поддиски, даже если передача затронет два диска." + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:422 +msgid "" +"crossref:vinum[vinum-raid10-vol, A Mirrored, Striped [.filename]#vinum# " +"Volume] represents the structure of this volume." +msgstr "" +"crossref:vinum[vinum-raid10-vol, Том [.filename]#vinum# c зеркалированием и " +"чередованием] представляет структуру этого тома." + +#. type: Block title +#: documentation/content/en/articles/vinum/_index.adoc:424 +#, no-wrap +msgid "A Mirrored, Striped [.filename]#vinum# Volume" +msgstr "Том [.filename]#vinum# c зеркалированием и чередованием" + +#. type: Target for macro image +#: documentation/content/en/articles/vinum/_index.adoc:425 +#, no-wrap +msgid "vinum-raid10-vol.png" +msgstr "vinum-raid10-vol.png" + +#. type: Title == +#: documentation/content/en/articles/vinum/_index.adoc:428 +#, no-wrap +msgid "Object Naming" +msgstr "Именование объектов" + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:432 +msgid "" +"[.filename]#vinum# assigns default names to plexes and subdisks, although " +"they may be overridden. Overriding the default names is not recommended as " +"it does not bring a significant advantage and it can cause confusion." +msgstr "" +"[.filename]#vinum# назначает стандартные имена для плексов и поддисков, хотя " +"их можно изменить. Не рекомендуется изменять стандартные имена, так как это " +"не дает значительных преимуществ и может вызвать путаницу." + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:435 +msgid "" +"Names may contain any non-blank character, but it is recommended to restrict " +"them to letters, digits and the underscore characters. The names of " +"volumes, plexes, and subdisks may be up to 64 characters long, and the names " +"of drives may be up to 32 characters long." +msgstr "" +"Имена могут содержать любые непустые символы, но рекомендуется " +"ограничиваться буквами, цифрами и символами подчёркивания. Имена томов, " +"плексов и поддисков могут быть длиной до 64 символов, а имена дисков — до 32 " +"символов." + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:438 +msgid "" +"[.filename]#vinum# objects are assigned device nodes in the hierarchy " +"[.filename]#/dev/gvinum#. The configuration shown above would cause " +"[.filename]#vinum# to create the following device nodes:" +msgstr "" +"Объектам [.filename]#vinum# назначаются узлы устройств в иерархии " +"[.filename]#/dev/gvinum#. Приведённая выше конфигурация приведёт к тому, что " +"[.filename]#vinum# создаст следующие узлы устройств:" + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:440 +msgid "" +"Device entries for each volume. These are the main devices used by " +"[.filename]#vinum#. The configuration above would include the devices " +"[.filename]#/dev/gvinum/myvol#, [.filename]#/dev/gvinum/mirror#, " +"[.filename]#/dev/gvinum/striped#, [.filename]#/dev/gvinum/raid5# and " +"[.filename]#/dev/gvinum/raid10#." +msgstr "" +"Записи устройств для каждого тома. Это основные устройства, используемые " +"[.filename]#vinum#. Приведённая конфигурация включает устройства " +"[.filename]#/dev/gvinum/myvol#, [.filename]#/dev/gvinum/mirror#, " +"[.filename]#/dev/gvinum/striped#, [.filename]#/dev/gvinum/raid5# и " +"[.filename]#/dev/gvinum/raid10#." + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:441 +msgid "All volumes get direct entries under [.filename]#/dev/gvinum/#." +msgstr "Все тома получают собственные записи в [.filename]#/dev/gvinum/#." + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:442 +msgid "" +"The directories [.filename]#/dev/gvinum/plex#, and [.filename]#/dev/gvinum/" +"sd#, which contain device nodes for each plex and for each subdisk, " +"respectively." +msgstr "" +"Каталоги [.filename]#/dev/gvinum/plex# и [.filename]#/dev/gvinum/sd#, " +"которые содержат узлы устройств для каждого плекса и каждого субдиска " +"соответственно." + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:444 +msgid "For example, consider the following configuration file:" +msgstr "Например, рассмотрим следующий конфигурационный файл:" + +#. type: delimited block . 4 +#: documentation/content/en/articles/vinum/_index.adoc:457 +#, no-wrap +msgid "" +"\tdrive drive1 device /dev/sd1h\n" +"\tdrive drive2 device /dev/sd2h\n" +"\tdrive drive3 device /dev/sd3h\n" +"\tdrive drive4 device /dev/sd4h\n" +" volume s64 setupstate\n" +" plex org striped 64k\n" +" sd length 100m drive drive1\n" +" sd length 100m drive drive2\n" +" sd length 100m drive drive3\n" +" sd length 100m drive drive4\n" +msgstr "" +"\tdrive drive1 device /dev/sd1h\n" +"\tdrive drive2 device /dev/sd2h\n" +"\tdrive drive3 device /dev/sd3h\n" +"\tdrive drive4 device /dev/sd4h\n" +" volume s64 setupstate\n" +" plex org striped 64k\n" +" sd length 100m drive drive1\n" +" sd length 100m drive drive2\n" +" sd length 100m drive drive3\n" +" sd length 100m drive drive4\n" + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:460 +msgid "" +"After processing this file, man:gvinum[8] creates the following structure in " +"[.filename]#/dev/gvinum#:" +msgstr "" +"После обработки этого файла man:gvinum[8] создает следующую структуру в " +"[.filename]#/dev/gvinum#:" + +#. type: delimited block . 4 +#: documentation/content/en/articles/vinum/_index.adoc:467 +#, no-wrap +msgid "" +"\tdrwxr-xr-x 2 root wheel 512 Apr 13\n" +"16:46 plex\n" +"\tcrwxr-xr-- 1 root wheel 91, 2 Apr 13 16:46 s64\n" +"\tdrwxr-xr-x 2 root wheel 512 Apr 13 16:46 sd\n" +msgstr "" +"\tdrwxr-xr-x 2 root wheel 512 Apr 13\n" +"16:46 plex\n" +"\tcrwxr-xr-- 1 root wheel 91, 2 Apr 13 16:46 s64\n" +"\tdrwxr-xr-x 2 root wheel 512 Apr 13 16:46 sd\n" + +#. type: delimited block . 4 +#: documentation/content/en/articles/vinum/_index.adoc:471 +#, no-wrap +msgid "" +" /dev/vinum/plex:\n" +" total 0\n" +" crwxr-xr-- 1 root wheel 25, 0x10000002 Apr 13 16:46 s64.p0\n" +msgstr "" +" /dev/vinum/plex:\n" +" total 0\n" +" crwxr-xr-- 1 root wheel 25, 0x10000002 Apr 13 16:46 s64.p0\n" + +#. type: delimited block . 4 +#: documentation/content/en/articles/vinum/_index.adoc:478 +#, no-wrap +msgid "" +" /dev/vinum/sd:\n" +" total 0\n" +" crwxr-xr-- 1 root wheel 91, 0x20000002 Apr 13 16:46 s64.p0.s0\n" +" crwxr-xr-- 1 root wheel 91, 0x20100002 Apr 13 16:46 s64.p0.s1\n" +" crwxr-xr-- 1 root wheel 91, 0x20200002 Apr 13 16:46 s64.p0.s2\n" +" crwxr-xr-- 1 root wheel 91, 0x20300002 Apr 13 16:46 s64.p0.s3\n" +msgstr "" +" /dev/vinum/sd:\n" +" total 0\n" +" crwxr-xr-- 1 root wheel 91, 0x20000002 Apr 13 16:46 s64.p0.s0\n" +" crwxr-xr-- 1 root wheel 91, 0x20100002 Apr 13 16:46 s64.p0.s1\n" +" crwxr-xr-- 1 root wheel 91, 0x20200002 Apr 13 16:46 s64.p0.s2\n" +" crwxr-xr-- 1 root wheel 91, 0x20300002 Apr 13 16:46 s64.p0.s3\n" + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:483 +msgid "" +"Although it is recommended that plexes and subdisks should not be allocated " +"specific names, [.filename]#vinum# drives must be named. This makes it " +"possible to move a drive to a different location and still recognize it " +"automatically. Drive names may be up to 32 characters long." +msgstr "" +"Хотя рекомендуется не назначать конкретные имена плексам и поддискам, диски " +"[.filename]#vinum# должны быть именованными. Это позволяет переместить диск " +"в другое место и по-прежнему автоматически его распознавать. Имена дисков " +"могут быть длиной до 32 символов." + +#. type: Title === +#: documentation/content/en/articles/vinum/_index.adoc:484 +#, no-wrap +msgid "Creating File Systems" +msgstr "Создание файловых систем" + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:492 +msgid "" +"Volumes appear to the system to be identical to disks, with one exception. " +"Unlike UNIX(R) drives, [.filename]#vinum# does not partition volumes, which " +"thus do not contain a partition table. This has required modification to " +"some disk utilities, notably man:newfs[8], so that it does not try to " +"interpret the last letter of a [.filename]#vinum# volume name as a partition " +"identifier. For example, a disk drive may have a name like [.filename]#/dev/" +"ad0a# or [.filename]#/dev/da2h#. These names represent the first partition " +"([.filename]#a#) on the first (0) IDE disk ([.filename]#ad#) and the eighth " +"partition ([.filename]#h#) on the third (2) SCSI disk ([.filename]#da#) " +"respectively. By contrast, a [.filename]#vinum# volume might be called " +"[.filename]#/dev/gvinum/concat#, which has no relationship with a partition " +"name." +msgstr "" +"Тома для системы выглядят идентично дискам, за одним исключением. В отличие " +"от дисков UNIX(R), [.filename]#vinum# не разбивает тома на разделы, поэтому " +"они не содержат таблицы разделов. Это потребовало внесения изменений в " +"некоторые утилиты для работы с дисками, в частности, в man:newfs[8], чтобы " +"они не пытались интерпретировать последнюю букву имени тома " +"[.filename]#vinum# как идентификатор раздела. Например, имя диска может " +"выглядеть как [.filename]#/dev/ad0a# или [.filename]#/dev/da2h#. Эти имена " +"обозначают первый раздел ([.filename]#a#) на первом (0) IDE-диске " +"([.filename]#ad#) и восьмой раздел ([.filename]#h#) на третьем (2) SCSI-" +"диске ([.filename]#da#) соответственно. В отличие от этого, том " +"[.filename]#vinum# может называться [.filename]#/dev/gvinum/concat#, что не " +"имеет отношения к имени раздела." + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:494 +msgid "To create a file system on this volume, use man:newfs[8]:" +msgstr "Чтобы создать файловую систему на этом томе, используйте man:newfs[8]:" + +#. type: delimited block . 4 +#: documentation/content/en/articles/vinum/_index.adoc:498 +#, no-wrap +msgid "# newfs /dev/gvinum/concat\n" +msgstr "# newfs /dev/gvinum/concat\n" + +#. type: Title == +#: documentation/content/en/articles/vinum/_index.adoc:501 +#, no-wrap +msgid "Configuring [.filename]#vinum#" +msgstr "Настройка [.filename]#vinum#" + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:507 +msgid "" +"The [.filename]#GENERIC# kernel does not contain [.filename]#vinum#. It is " +"possible to build a custom kernel which includes [.filename]#vinum#, but " +"this is not recommended. The standard way to start [.filename]#vinum# is as " +"a kernel module. man:kldload[8] is not needed because when man:gvinum[8] " +"starts, it checks whether the module has been loaded, and if it is not, it " +"loads it automatically." +msgstr "" +"Ядро [.filename]#GENERIC# не содержит [.filename]#vinum#. Можно собрать " +"пользовательское ядро с включённым [.filename]#vinum#, но это не " +"рекомендуется. Стандартный способ запуска [.filename]#vinum# — в качестве " +"модуля ядра. Команда man:kldload[8] не требуется, так как при запуске " +"man:gvinum[8] проверяет, загружен ли модуль, и если нет, загружает его " +"автоматически." + +#. type: Title === +#: documentation/content/en/articles/vinum/_index.adoc:508 +#, no-wrap +msgid "Startup" +msgstr "Запуск" + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:513 +msgid "" +"[.filename]#vinum# stores configuration information on the disk slices in " +"essentially the same form as in the configuration files. When reading from " +"the configuration database, [.filename]#vinum# recognizes a number of " +"keywords which are not allowed in the configuration files. For example, a " +"disk configuration might contain the following text:" +msgstr "" +"[.filename]#vinum# хранит конфигурационную информацию на дисковых слайсах " +"практически в той же форме, что и в конфигурационных файлах. При чтении из " +"базы данных конфигурации [.filename]#vinum# распознаёт ряд ключевых слов, " +"которые не допускаются в конфигурационных файлах. Например, конфигурация " +"диска может содержать следующий текст:" + +#. type: delimited block . 4 +#: documentation/content/en/articles/vinum/_index.adoc:535 +#, no-wrap +msgid "" +"volume myvol state up\n" +"volume bigraid state down\n" +"plex name myvol.p0 state up org concat vol myvol\n" +"plex name myvol.p1 state up org concat vol myvol\n" +"plex name myvol.p2 state init org striped 512b vol myvol\n" +"plex name bigraid.p0 state initializing org raid5 512b vol bigraid\n" +"sd name myvol.p0.s0 drive a plex myvol.p0 state up len 1048576b driveoffset 265b plexoffset 0b\n" +"sd name myvol.p0.s1 drive b plex myvol.p0 state up len 1048576b driveoffset 265b plexoffset 1048576b\n" +"sd name myvol.p1.s0 drive c plex myvol.p1 state up len 1048576b driveoffset 265b plexoffset 0b\n" +"sd name myvol.p1.s1 drive d plex myvol.p1 state up len 1048576b driveoffset 265b plexoffset 1048576b\n" +"sd name myvol.p2.s0 drive a plex myvol.p2 state init len 524288b driveoffset 1048841b plexoffset 0b\n" +"sd name myvol.p2.s1 drive b plex myvol.p2 state init len 524288b driveoffset 1048841b plexoffset 524288b\n" +"sd name myvol.p2.s2 drive c plex myvol.p2 state init len 524288b driveoffset 1048841b plexoffset 1048576b\n" +"sd name myvol.p2.s3 drive d plex myvol.p2 state init len 524288b driveoffset 1048841b plexoffset 1572864b\n" +"sd name bigraid.p0.s0 drive a plex bigraid.p0 state initializing len 4194304b driveoff set 1573129b plexoffset 0b\n" +"sd name bigraid.p0.s1 drive b plex bigraid.p0 state initializing len 4194304b driveoff set 1573129b plexoffset 4194304b\n" +"sd name bigraid.p0.s2 drive c plex bigraid.p0 state initializing len 4194304b driveoff set 1573129b plexoffset 8388608b\n" +"sd name bigraid.p0.s3 drive d plex bigraid.p0 state initializing len 4194304b driveoff set 1573129b plexoffset 12582912b\n" +"sd name bigraid.p0.s4 drive e plex bigraid.p0 state initializing len 4194304b driveoff set 1573129b plexoffset 16777216b\n" +msgstr "" +"volume myvol state up\n" +"volume bigraid state down\n" +"plex name myvol.p0 state up org concat vol myvol\n" +"plex name myvol.p1 state up org concat vol myvol\n" +"plex name myvol.p2 state init org striped 512b vol myvol\n" +"plex name bigraid.p0 state initializing org raid5 512b vol bigraid\n" +"sd name myvol.p0.s0 drive a plex myvol.p0 state up len 1048576b driveoffset 265b plexoffset 0b\n" +"sd name myvol.p0.s1 drive b plex myvol.p0 state up len 1048576b driveoffset 265b plexoffset 1048576b\n" +"sd name myvol.p1.s0 drive c plex myvol.p1 state up len 1048576b driveoffset 265b plexoffset 0b\n" +"sd name myvol.p1.s1 drive d plex myvol.p1 state up len 1048576b driveoffset 265b plexoffset 1048576b\n" +"sd name myvol.p2.s0 drive a plex myvol.p2 state init len 524288b driveoffset 1048841b plexoffset 0b\n" +"sd name myvol.p2.s1 drive b plex myvol.p2 state init len 524288b driveoffset 1048841b plexoffset 524288b\n" +"sd name myvol.p2.s2 drive c plex myvol.p2 state init len 524288b driveoffset 1048841b plexoffset 1048576b\n" +"sd name myvol.p2.s3 drive d plex myvol.p2 state init len 524288b driveoffset 1048841b plexoffset 1572864b\n" +"sd name bigraid.p0.s0 drive a plex bigraid.p0 state initializing len 4194304b driveoff set 1573129b plexoffset 0b\n" +"sd name bigraid.p0.s1 drive b plex bigraid.p0 state initializing len 4194304b driveoff set 1573129b plexoffset 4194304b\n" +"sd name bigraid.p0.s2 drive c plex bigraid.p0 state initializing len 4194304b driveoff set 1573129b plexoffset 8388608b\n" +"sd name bigraid.p0.s3 drive d plex bigraid.p0 state initializing len 4194304b driveoff set 1573129b plexoffset 12582912b\n" +"sd name bigraid.p0.s4 drive e plex bigraid.p0 state initializing len 4194304b driveoff set 1573129b plexoffset 16777216b\n" + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:541 +msgid "" +"The obvious differences here are the presence of explicit location " +"information and naming, both of which are allowed but discouraged, and the " +"information on the states. [.filename]#vinum# does not store information " +"about drives in the configuration information. It finds the drives by " +"scanning the configured disk drives for partitions with a [.filename]#vinum# " +"label. This enables [.filename]#vinum# to identify drives correctly even if " +"they have been assigned different UNIX(R) drive IDs." +msgstr "" +"Очевидные различия здесь — наличие явной информации о местоположении и " +"именования, что разрешено, но не рекомендуется, а также информация о " +"состояниях. [.filename]#vinum# не хранит сведения о дисках в " +"конфигурационной информации. Он находит диски, сканируя настроенные дисковые " +"накопители на наличие разделов с меткой [.filename]#vinum#. Это позволяет " +"[.filename]#vinum# корректно идентифицировать диски, даже если им были " +"присвоены разные идентификаторы дисков UNIX(R)." + +#. type: Title ==== +#: documentation/content/en/articles/vinum/_index.adoc:543 +#, no-wrap +msgid "Automatic Startup" +msgstr "Автоматический запуск" + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:547 +msgid "" +"_Gvinum_ always features an automatic startup once the kernel module is " +"loaded, via man:loader.conf[5]. To load the _Gvinum_ module at boot time, " +"add `geom_vinum_load=\"YES\"` to [.filename]#/boot/loader.conf#." +msgstr "" +"_Gvinum_ всегда запускается автоматически после загрузки модуля ядра через " +"man:loader.conf[5]. Чтобы загрузить модуль _Gvinum_ при загрузке системы, " +"добавьте `geom_vinum_load=\"YES\"` в [.filename]#/boot/loader.conf#." + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:552 +msgid "" +"When [.filename]#vinum# is started with `gvinum start`, [.filename]#vinum# " +"reads the configuration database from one of the [.filename]#vinum# drives. " +"Under normal circumstances, each drive contains an identical copy of the " +"configuration database, so it does not matter which drive is read. After a " +"crash, however, [.filename]#vinum# must determine which drive was updated " +"most recently and read the configuration from this drive. It then updates " +"the configuration, if necessary, from progressively older drives." +msgstr "" +"Когда [.filename]#vinum# запускается командой `gvinum start`, " +"[.filename]#vinum# читает конфигурационную базу данных с одного из дисков " +"[.filename]#vinum#. В нормальных условиях каждый диск содержит идентичную " +"копию конфигурационной базы данных, поэтому не имеет значения, с какого " +"диска читать. Однако после сбоя [.filename]#vinum# должен определить, какой " +"диск был обновлён последним, и прочитать конфигурацию с этого диска. Затем, " +"если необходимо, он обновляет конфигурацию последовательно с более старых " +"дисков." + +#. type: Title == +#: documentation/content/en/articles/vinum/_index.adoc:554 +#, no-wrap +msgid "Using [.filename]#vinum# for the Root File System" +msgstr "Использование [.filename]#vinum# для корневой файловой системы" + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:558 +msgid "" +"For a machine that has fully-mirrored file systems using [.filename]#vinum#, " +"it is desirable to also mirror the root file system. Setting up such a " +"configuration is less trivial than mirroring an arbitrary file system " +"because:" +msgstr "" +"Для машины с полностью зеркалированными файловыми системами с использованием " +"[.filename]#vinum#, желательно также зеркалировать корневую файловую " +"систему. Настройка такой конфигурации менее тривиальна, чем зеркалирование " +"произвольной файловой системы, потому что:" + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:560 +msgid "" +"The root file system must be available very early during the boot process, " +"so the [.filename]#vinum# infrastructure must already be available at this " +"time." +msgstr "" +"Корневая файловая система должна быть доступна очень рано в процессе " +"загрузки, поэтому инфраструктура [.filename]#vinum# должна быть уже доступна " +"на этом этапе." + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:561 +msgid "" +"The volume containing the root file system also contains the system " +"bootstrap and the kernel. These must be read using the host system's native " +"utilities, such as the BIOS, which often cannot be taught about the details " +"of [.filename]#vinum#." +msgstr "" +"Том, содержащий корневую файловую систему, также включает системный " +"загрузчик и ядро. Они должны быть прочитаны с использованием родных утилит " +"хостовой системы, таких как BIOS, который зачастую нельзя обучить работе с " +"деталями [.filename]#vinum#." + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:563 +msgid "" +"In the following sections, the term \"root volume\" is generally used to " +"describe the [.filename]#vinum# volume that contains the root file system." +msgstr "" +"В следующих разделах термин \"корневой том\" обычно используется для " +"описания тома [.filename]#vinum#, который содержит корневую файловую систему." + +#. type: Title === +#: documentation/content/en/articles/vinum/_index.adoc:564 +#, no-wrap +msgid "Starting up [.filename]#vinum# Early Enough for the Root File System" +msgstr "Запуск [.filename]#vinum# на раннем этапе для обеспечения доступа к корневой файловой системе" + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:568 +msgid "" +"[.filename]#vinum# must be available early in the system boot as " +"man:loader[8] must be able to load the vinum kernel module before starting " +"the kernel. This can be accomplished by putting this line in [.filename]#/" +"boot/loader.conf#:" +msgstr "" +"Файл `[.filename]#vinum#` должен быть доступен на раннем этапе загрузки " +"системы, так как `man:loader[8]` должен загрузить модуль ядра `vinum` перед " +"запуском ядра. Это можно сделать, добавив следующую строку в `[.filename]#/" +"boot/loader.conf#`:" + +#. type: delimited block . 4 +#: documentation/content/en/articles/vinum/_index.adoc:572 +#, no-wrap +msgid "geom_vinum_load=\"YES\"\n" +msgstr "geom_vinum_load=\"YES\"\n" + +#. type: Title === +#: documentation/content/en/articles/vinum/_index.adoc:574 +#, no-wrap +msgid "Making a [.filename]#vinum#-based Root Volume Accessible to the Bootstrap" +msgstr "Создание корневого тома на основе [.filename]#vinum#, доступного для загрузчика" + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:579 +msgid "" +"The current FreeBSD bootstrap is only 7.5 KB of code and does not understand " +"the internal [.filename]#vinum# structures. This means that it cannot parse " +"the [.filename]#vinum# configuration data or figure out the elements of a " +"boot volume. Thus, some workarounds are necessary to provide the bootstrap " +"code with the illusion of a standard `a` partition that contains the root " +"file system." +msgstr "" +"Текущая загрузочная запись FreeBSD занимает всего 7,5 КБ кода и не понимает " +"внутренние структуры [.filename]#vinum#. Это означает, что она не может " +"разобрать конфигурационные данные [.filename]#vinum# или определить элементы " +"загрузочного тома. Таким образом, необходимы некоторые обходные решения, " +"чтобы предоставить загрузочному коду иллюзию стандартного раздела `a`, " +"содержащего корневую файловую систему." + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:581 +msgid "" +"For this to be possible, the following requirements must be met for the root " +"volume:" +msgstr "Для этого должны быть выполнены следующие требования к корневому тому:" + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:583 +msgid "The root volume must not be a stripe or `RAID`-5." +msgstr "Корневой том не должен быть чередующимся или `RAID`-5." + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:584 +msgid "" +"The root volume must not contain more than one concatenated subdisk per plex." +msgstr "" +"Корневой том не должен содержать более одного объединённого поддиска на " +"плекс." + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:590 +msgid "" +"Note that it is desirable and possible to use multiple plexes, each " +"containing one replica of the root file system. The bootstrap process will " +"only use one replica for finding the bootstrap and all boot files, until the " +"kernel mounts the root file system. Each single subdisk within these plexes " +"needs its own `a` partition illusion, for the respective device to be " +"bootable. It is not strictly needed that each of these faked `a` partitions " +"is located at the same offset within its device, compared with other devices " +"containing plexes of the root volume. However, it is probably a good idea " +"to create the [.filename]#vinum# volumes that way so the resulting mirrored " +"devices are symmetric, to avoid confusion." +msgstr "" +"Обратите внимание, что желательно и возможно использовать несколько плексов, " +"каждый из которых содержит одну реплику корневой файловой системы. Процесс " +"начальной загрузки будет использовать только одну реплику для поиска " +"загрузчика и всех загрузочных файлов, пока ядро не смонтирует корневую " +"файловую систему. Каждый отдельный поддиск в этих плексах должен иметь свою " +"собственную иллюзию раздела `a`, чтобы соответствующее устройство было " +"загрузочным. Не строго необходимо, чтобы каждый из этих фальшивых разделов " +"`a` находился на том же смещении внутри своего устройства по сравнению с " +"другими устройствами, содержащими плекс корневого тома. Однако, вероятно, " +"хорошей идеей будет создавать тома [.filename]#vinum# таким образом, чтобы " +"результирующие зеркальные устройства были симметричными, чтобы избежать " +"путаницы." + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:592 +msgid "" +"To set up these `a` partitions for each device containing part of the root " +"volume, the following is required:" +msgstr "" +"Для настройки этих разделов `a` на каждом устройстве, содержащем часть " +"корневого тома, требуется следующее:" + +#. type: delimited block = 4 +#: documentation/content/en/articles/vinum/_index.adoc:596 +msgid "" +"The location, offset from the beginning of the device, and size of this " +"device's subdisk that is part of the root volume needs to be examined, using " +"the command:" +msgstr "" +"Местоположение, смещение от начала устройства и размер подобласти этого " +"устройства, которая является частью корневого тома, необходимо проверить с " +"помощью команды:" + +#. type: delimited block . 4 +#: documentation/content/en/articles/vinum/_index.adoc:600 +#, no-wrap +msgid "# gvinum l -rv root\n" +msgstr "# gvinum l -rv root\n" + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:604 +msgid "" +"[.filename]#vinum# offsets and sizes are measured in bytes. They must be " +"divided by 512 to obtain the block numbers that are to be used by `bsdlabel`." +msgstr "" +"Смещения и размеры в [.filename]#vinum# измеряются в байтах. Их необходимо " +"разделить на 512, чтобы получить номера блоков, которые будут использоваться " +"в `bsdlabel`." + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:605 +msgid "Run this command for each device that participates in the root volume:" +msgstr "" +"Выполните эту команду для каждого устройства, участвующего в корневом томе:" + +#. type: delimited block . 4 +#: documentation/content/en/articles/vinum/_index.adoc:609 +#, no-wrap +msgid "# bsdlabel -e devname\n" +msgstr "# bsdlabel -e devname\n" + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:612 +msgid "" +"_devname_ must be either the name of the disk, like [.filename]#da0# for " +"disks without a slice table, or the name of the slice, like " +"[.filename]#ad0s1#." +msgstr "" +"`_devname_` должен быть либо именем диска, например, [.filename]#da0# для " +"дисков без таблицы разделов, либо именем раздела, например, " +"[.filename]#ad0s1#." + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:615 +msgid "" +"If there is already an `a` partition on the device from a pre-" +"[.filename]#vinum# root file system, it should be renamed to something else " +"so that it remains accessible (just in case), but will no longer be used by " +"default to bootstrap the system. A currently mounted root file system " +"cannot be renamed, so this must be executed either when being booted from a " +"\"Fixit\" media, or in a two-step process where, in a mirror, the disk that " +"is not been currently booted is manipulated first." +msgstr "" +"Если на устройстве уже существует раздел `a` из корневой файловой системы до " +"[.filename]#vinum#, его следует переименовать во что-то другое, чтобы он " +"оставался доступным (на всякий случай), но больше не использовался по " +"умолчанию для загрузки системы. Текущий смонтированный корневой файловой " +"системы нельзя переименовать, поэтому это должно выполняться либо при " +"загрузке с \"Fixit\" носителя, либо в два этапа, когда в зеркале сначала " +"обрабатывается диск, с которого в данный момент не загружаются." + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:621 +msgid "" +"The offset of the [.filename]#vinum# partition on this device (if any) must " +"be added to the offset of the respective root volume subdisk on this " +"device. The resulting value will become the `offset` value for the new `a` " +"partition. The `size` value for this partition can be taken verbatim from " +"the calculation above. The `fstype` should be `4.2BSD`. The `fsize`, " +"`bsize`, and `cpg` values should be chosen to match the actual file system, " +"though they are fairly unimportant within this context." +msgstr "" +"Смещение раздела [.filename]#vinum# на этом устройстве (если есть) должно " +"быть добавлено к смещению соответствующего поддиска корневого тома на этом " +"устройстве. Полученное значение станет значением `offset` для нового раздела " +"`a`. Значение `size` для этого раздела можно взять дословно из приведённых " +"выше расчётов. Для `fstype` следует указать `4.2BSD`. Значения `fsize`, " +"`bsize` и `cpg` должны быть выбраны в соответствии с реальной файловой " +"системой, хотя в данном контексте они не слишком важны." + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:624 +msgid "" +"That way, a new `a` partition will be established that overlaps the " +"[.filename]#vinum# partition on this device. `bsdlabel` will only allow for " +"this overlap if the [.filename]#vinum# partition has properly been marked " +"using the `vinum` fstype." +msgstr "" +"Таким образом, будет создан новый раздел `a`, который перекрывает раздел " +"[.filename]#vinum# на этом устройстве. `bsdlabel` разрешит это перекрытие " +"только в том случае, если раздел [.filename]#vinum# был правильно помечен с " +"использованием типа файловой системы `vinum`." + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:625 +msgid "" +"A faked `a` partition now exists on each device that has one replica of the " +"root volume. It is highly recommendable to verify the result using a command " +"like:" +msgstr "" +"Поддельный раздел `a` теперь существует на каждом устройстве, имеющем одну " +"реплику корневого тома. Настоятельно рекомендуется проверить результат с " +"помощью команды, например:" + +#. type: delimited block . 4 +#: documentation/content/en/articles/vinum/_index.adoc:629 +#, no-wrap +msgid "# fsck -n /dev/devnamea\n" +msgstr "# fsck -n /dev/devnamea\n" + +#. type: delimited block = 4 +#: documentation/content/en/articles/vinum/_index.adoc:634 +msgid "" +"It should be remembered that all files containing control information must " +"be relative to the root file system in the [.filename]#vinum# volume which, " +"when setting up a new [.filename]#vinum# root volume, might not match the " +"root file system that is currently active. So in particular, [.filename]#/" +"etc/fstab# and [.filename]#/boot/loader.conf# need to be taken care of." +msgstr "" +"Следует помнить, что все файлы, содержащие управляющую информацию, должны " +"быть относительны к корневой файловой системе в томе [.filename]#vinum#, " +"которая при настройке нового корневого тома [.filename]#vinum# может не " +"совпадать с текущей активной корневой файловой системой. Поэтому, в " +"частности, необходимо позаботиться о [.filename]#/etc/fstab# и [.filename]#/" +"boot/loader.conf#." + +#. type: delimited block = 4 +#: documentation/content/en/articles/vinum/_index.adoc:637 +msgid "" +"At next reboot, the bootstrap should figure out the appropriate control " +"information from the new [.filename]#vinum#-based root file system, and act " +"accordingly. At the end of the kernel initialization process, after all " +"devices have been announced, the prominent notice that shows the success of " +"this setup is a message like:" +msgstr "" +"При следующей перезагрузке загрузчик должен определить соответствующую " +"управляющую информацию из новой корневой файловой системы на основе " +"[.filename]#vinum# и действовать соответствующим образом. В конце процесса " +"инициализации ядра, после объявления всех устройств, явным признаком " +"успешного завершения настройки будет сообщение вида:" + +#. type: delimited block . 4 +#: documentation/content/en/articles/vinum/_index.adoc:641 +#, no-wrap +msgid "Mounting root from ufs:/dev/gvinum/root\n" +msgstr "Mounting root from ufs:/dev/gvinum/root\n" + +#. type: Title === +#: documentation/content/en/articles/vinum/_index.adoc:643 +#, no-wrap +msgid "Example of a [.filename]#vinum#-based Root Setup" +msgstr "Пример настройки корневой системы на основе [.filename]#vinum#" + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:646 +msgid "" +"After the [.filename]#vinum# root volume has been set up, the output of " +"`gvinum l -rv root` could look like:" +msgstr "" +"После настройки корневого тома [.filename]#vinum#, вывод команды `gvinum l " +"-rv root` может выглядеть следующим образом:" + +#. type: delimited block . 4 +#: documentation/content/en/articles/vinum/_index.adoc:655 +#, no-wrap +msgid "" +"...\n" +"Subdisk root.p0.s0:\n" +"\t\tSize: 125829120 bytes (120 MB)\n" +"\t\tState: up\n" +"\t\tPlex root.p0 at offset 0 (0 B)\n" +"\t\tDrive disk0 (/dev/da0h) at offset 135680 (132 kB)\n" +msgstr "" +"...\n" +"Subdisk root.p0.s0:\n" +"\t\tSize: 125829120 bytes (120 MB)\n" +"\t\tState: up\n" +"\t\tPlex root.p0 at offset 0 (0 B)\n" +"\t\tDrive disk0 (/dev/da0h) at offset 135680 (132 kB)\n" + +#. type: delimited block . 4 +#: documentation/content/en/articles/vinum/_index.adoc:661 +#, no-wrap +msgid "" +"Subdisk root.p1.s0:\n" +"\t\tSize: 125829120 bytes (120 MB)\n" +"\t\tState: up\n" +"\t\tPlex root.p1 at offset 0 (0 B)\n" +"\t\tDrive disk1 (/dev/da1h) at offset 135680 (132 kB)\n" +msgstr "" +"Subdisk root.p1.s0:\n" +"\t\tSize: 125829120 bytes (120 MB)\n" +"\t\tState: up\n" +"\t\tPlex root.p1 at offset 0 (0 B)\n" +"\t\tDrive disk1 (/dev/da1h) at offset 135680 (132 kB)\n" + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:667 +msgid "" +"The values to note are `135680` for the offset, relative to partition " +"[.filename]#/dev/da0h#. This translates to 265 512-byte disk blocks in " +"`bsdlabel`'s terms. Likewise, the size of this root volume is 245760 512-" +"byte blocks. [.filename]#/dev/da1h#, containing the second replica of this " +"root volume, has a symmetric setup." +msgstr "" +"Значения, на которые следует обратить внимание: `135680` для смещения, " +"относительного к разделу [.filename]#/dev/da0h#. Это соответствует 265 " +"блокам диска по 512 байт в терминах `bsdlabel`. Аналогично, размер этого " +"корневого тома составляет 245760 блоков по 512 байт. [.filename]#/dev/da1h#, " +"содержащий вторую реплику этого корневого тома, имеет симметричную " +"конфигурацию." + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:669 +msgid "The bsdlabel for these devices might look like:" +msgstr "Метка bsdlabel для этих устройств может выглядеть следующим образом:" + +#. type: delimited block . 4 +#: documentation/content/en/articles/vinum/_index.adoc:678 +#, no-wrap +msgid "" +"...\n" +"8 partitions:\n" +"# size offset fstype [fsize bsize bps/cpg]\n" +" a: 245760 281 4.2BSD 2048 16384 0 # (Cyl. 0*- 15*)\n" +" c: 71771688 0 unused 0 0 # (Cyl. 0 - 4467*)\n" +" h: 71771672 16 vinum # (Cyl. 0*- 4467*)\n" +msgstr "" +"...\n" +"8 partitions:\n" +"# size offset fstype [fsize bsize bps/cpg]\n" +" a: 245760 281 4.2BSD 2048 16384 0 # (Cyl. 0*- 15*)\n" +" c: 71771688 0 unused 0 0 # (Cyl. 0 - 4467*)\n" +" h: 71771672 16 vinum # (Cyl. 0*- 4467*)\n" + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:684 +msgid "" +"It can be observed that the `size` parameter for the faked `a` partition " +"matches the value outlined above, while the `offset` parameter is the sum of " +"the offset within the [.filename]#vinum# partition `h`, and the offset of " +"this partition within the device or slice. This is a typical setup that is " +"necessary to avoid the problem described in crossref:vinum[vinum-root-panic, " +"Nothing Boots, the Bootstrap Panics]. The entire `a` partition is " +"completely within the `h` partition containing all the [.filename]#vinum# " +"data for this device." +msgstr "" +"Можно заметить, что параметр `size` для поддельного раздела `a` совпадает с " +"указанным выше значением, в то время как параметр `offset` представляет " +"собой сумму смещения внутри раздела [.filename]#vinum# `h` и смещения этого " +"раздела в устройстве или слайсе. Это стандартная настройка, необходимая для " +"избежания проблемы, описанной в crossref:vinum[vinum-root-panic, Nothing " +"Boots, the Bootstrap Panics]. Весь раздел `a` полностью находится внутри " +"раздела `h`, содержащего все данные [.filename]#vinum# для этого устройства." + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:686 +msgid "" +"In the above example, the entire device is dedicated to [.filename]#vinum# " +"and there is no leftover pre-[.filename]#vinum# root partition." +msgstr "" +"В приведенном выше примере все устройство выделено под [.filename]#vinum#, и " +"не осталось корневого раздела, существовавшего до [.filename]#vinum#." + +#. type: Title === +#: documentation/content/en/articles/vinum/_index.adoc:687 +#, no-wrap +msgid "Troubleshooting" +msgstr "Устранение неполадок" + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:690 +msgid "The following list contains a few known pitfalls and solutions." +msgstr "" +"Следующий список содержит несколько известных подводных камней и их решения." + +#. type: Title ==== +#: documentation/content/en/articles/vinum/_index.adoc:691 +#, no-wrap +msgid "System Bootstrap Loads, but System Does Not Boot" +msgstr "Загрузчик системы загружается, но система не запускается" + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:695 +msgid "" +"If for any reason the system does not continue to boot, the bootstrap can be " +"interrupted by pressing kbd:[space] at the 10-seconds warning. The loader " +"variable `vinum.autostart` can be examined by typing `show` and manipulated " +"using `set` or `unset`." +msgstr "" +"Если по какой-либо причине система не продолжает загрузку, процесс можно " +"прервать, нажав kbd:[space] при появлении 10-секундного предупреждения. " +"Переменную загрузчика `vinum.autostart` можно проверить, введя команду " +"`show`, и изменить с помощью `set` или `unset`." + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:697 +msgid "" +"If the [.filename]#vinum# kernel module was not yet in the list of modules " +"to load automatically, type `load geom_vinum`." +msgstr "" +"Если модуль ядра [.filename]#vinum# еще не был в списке модулей для " +"автоматической загрузки, введите `load geom_vinum`." + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:700 +msgid "" +"When ready, the boot process can be continued by typing `boot -as` which `-" +"as` requests the kernel to ask for the root file system to mount (`-a`) and " +"make the boot process stop in single-user mode (`-s`), where the root file " +"system is mounted read-only. That way, even if only one plex of a multi-" +"plex volume has been mounted, no data inconsistency between plexes is being " +"risked." +msgstr "" +"Когда всё готово, процесс загрузки можно продолжить, введя `boot -as`, где `-" +"as` указывает ядру запросить корневую файловую систему для монтирования (`-" +"a`) и остановить процесс загрузки в однопользовательском режиме (`-s`), при " +"этом корневая файловая система монтируется в режиме только для чтения. Таким " +"образом, даже если смонтирован только один слой многокомпонентного тома, не " +"возникает риска несогласованности данных между слоями." + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:706 +msgid "" +"At the prompt asking for a root file system to mount, any device that " +"contains a valid root file system can be entered. If [.filename]#/etc/" +"fstab# is set up correctly, the default should be something like `ufs:/dev/" +"gvinum/root`. A typical alternate choice would be something like `ufs:da0d` " +"which could be a hypothetical partition containing the pre-" +"[.filename]#vinum# root file system. Care should be taken if one of the " +"alias `a` partitions is entered here, that it actually references the " +"subdisks of the [.filename]#vinum# root device, because in a mirrored setup, " +"this would only mount one piece of a mirrored root device. If this file " +"system is to be mounted read-write later on, it is necessary to remove the " +"other plex(es) of the [.filename]#vinum# root volume since these plexes " +"would otherwise carry inconsistent data." +msgstr "" +"На запрос о корневой файловой системе для монтирования можно ввести любое " +"устройство, содержащее действительную корневую файловую систему. Если " +"[.filename]#/etc/fstab# настроен правильно, по умолчанию должно быть что-то " +"вроде `ufs:/dev/gvinum/root`. Типичным альтернативным выбором может быть что-" +"то вроде `ufs:da0d`, что может быть гипотетическим разделом, содержащим " +"корневую файловую систему до [.filename]#vinum#. Следует быть осторожным, " +"если здесь вводится один из псевдонимов `a` разделов, чтобы он действительно " +"ссылался на поддиски устройства [.filename]#vinum# root, потому что в " +"зеркальной настройке это приведёт к монтированию только одной части " +"зеркального корневого устройства. Если эта файловая система будет позже " +"смонтирована в режиме чтения-записи, необходимо удалить другие плесксы тома " +"[.filename]#vinum# root, так как в противном случае эти плесксы будут " +"содержать несогласованные данные." + +#. type: Title ==== +#: documentation/content/en/articles/vinum/_index.adoc:707 +#, no-wrap +msgid "Only Primary Bootstrap Loads" +msgstr "Только первичная загрузка Bootstrap" + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:712 +msgid "" +"If [.filename]#/boot/loader# fails to load, but the primary bootstrap still " +"loads (visible by a single dash in the left column of the screen right after " +"the boot process starts), an attempt can be made to interrupt the primary " +"bootstrap by pressing kbd:[space]. This will make the bootstrap stop in " +"extref:{handbook}[stage two, boot-boot1]. An attempt can be made here to " +"boot off an alternate partition, like the partition containing the previous " +"root file system that has been moved away from `a`." +msgstr "" +"Если [.filename]#/boot/loader# не загружается, но первичная загрузка всё ещё " +"работает (это видно по одному дефису в левой части экрана сразу после начала " +"процесса загрузки), можно попытаться прервать первичную загрузку, нажав kbd:" +"[space]. Это остановит загрузку на extref:{handbook}boot/[втором этапе, boot-" +"boot1]. Здесь можно попытаться загрузиться с альтернативного раздела, " +"например, с раздела, содержащего предыдущую корневую файловую систему, " +"которая была перемещена из `a`." + +#. type: Title ==== +#: documentation/content/en/articles/vinum/_index.adoc:714 +#, no-wrap +msgid "Nothing Boots, the Bootstrap Panics" +msgstr "Ничего не загружается, паника при загрузке" + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:720 +msgid "" +"This situation will happen if the bootstrap had been destroyed by the " +"[.filename]#vinum# installation. Unfortunately, [.filename]#vinum# " +"accidentally leaves only 4 KB at the beginning of its partition free before " +"starting to write its [.filename]#vinum# header information. However, the " +"stage one and two bootstraps plus the bsdlabel require 8 KB. So if a " +"[.filename]#vinum# partition was started at offset 0 within a slice or disk " +"that was meant to be bootable, the [.filename]#vinum# setup will trash the " +"bootstrap." +msgstr "" +"Такая ситуация произойдет, если загрузчик был уничтожен при установке " +"[.filename]#vinum#. К сожалению, [.filename]#vinum# случайно оставляет " +"свободными только первые 4 КБ в начале своего раздела перед записью " +"заголовочной информации [.filename]#vinum#. Однако, первая и вторая стадии " +"загрузчика вместе с bsdlabel требуют 8 КБ. Поэтому, если раздел " +"[.filename]#vinum# начинается со смещения 0 внутри слайса или диска, который " +"должен быть загрузочным, установка [.filename]#vinum# повредит загрузчик." + +#. type: Plain text +#: documentation/content/en/articles/vinum/_index.adoc:723 +msgid "" +"Similarly, if the above situation has been recovered, by booting from a " +"\"Fixit\" media, and the bootstrap has been re-installed using `bsdlabel -B` " +"as described in extref:{handbook}[stage two, boot-boot1], the bootstrap will " +"trash the [.filename]#vinum# header, and [.filename]#vinum# will no longer " +"find its disk(s). Though no actual [.filename]#vinum# configuration data or " +"data in [.filename]#vinum# volumes will be trashed, and it would be possible " +"to recover all the data by entering exactly the same [.filename]#vinum# " +"configuration data again, the situation is hard to fix. It is necessary to " +"move the entire [.filename]#vinum# partition by at least 4 KB, to have the " +"[.filename]#vinum# header and the system bootstrap no longer collide." +msgstr "" +"Аналогично, если описанная выше ситуация была исправлена загрузкой с " +"\"Fixit\"-носителя, и загрузчик был переустановлен с помощью `bsdlabel -B`, " +"как описано в extref:{handbook}boot/[этапе два, boot-boot1], загрузчик " +"повредит заголовок [.filename]#vinum#, и [.filename]#vinum# больше не сможет " +"найти свои диски. Хотя фактические данные конфигурации [.filename]#vinum# " +"или данные в томах [.filename]#vinum# не будут повреждены, и можно " +"восстановить все данные, введя точно такую же конфигурацию " +"[.filename]#vinum# снова, исправить ситуацию сложно. Необходимо переместить " +"весь раздел [.filename]#vinum# как минимум на 4 КБ, чтобы заголовок " +"[.filename]#vinum# и системный загрузчик больше не конфликтовали." |