diff --git a/ru_RU.KOI8-R/articles/Makefile b/ru_RU.KOI8-R/articles/Makefile index 2305e3b7a7..d6296c3150 100644 --- a/ru_RU.KOI8-R/articles/Makefile +++ b/ru_RU.KOI8-R/articles/Makefile @@ -1,57 +1,58 @@ # # The FreeBSD Russian Documentation Project # # $FreeBSD$ # $FreeBSDru: frdp/doc/ru_RU.KOI8-R/articles/Makefile,v 1.37 2006/03/22 17:06:02 marck Exp $ # # Original revision: 1.42 # SUBDIR = SUBDIR+= 5-roadmap SUBDIR+= checkpoint SUBDIR+= committers-guide SUBDIR+= console-server SUBDIR+= contributing #SUBDIR+= contributors SUBDIR+= cvs-freebsd SUBDIR+= cvsup-advanced SUBDIR+= dialup-firewall SUBDIR+= diskless-x SUBDIR+= euro SUBDIR+= explaining-bsd SUBDIR+= fbsd-from-scratch #SUBDIR+= filtering-bridges SUBDIR+= fonts SUBDIR+= formatting-media SUBDIR+= freebsd-questions SUBDIR+= geom-class +SUBDIR+= gjournal-desktop SUBDIR+= hats SUBDIR+= hubs SUBDIR+= ipsec-must SUBDIR+= laptop SUBDIR+= linux-comparison SUBDIR+= mailing-list-faq SUBDIR+= mh SUBDIR+= multi-os SUBDIR+= new-users SUBDIR+= pam SUBDIR+= portbuild SUBDIR+= pr-guidelines SUBDIR+= problem-reports SUBDIR+= pxe SUBDIR+= relaydelay SUBDIR+= releng SUBDIR+= releng-packages #SUBDIR+= serial-uart SUBDIR+= solid-state #SUBDIR+= storage-devices #SUBDIR+= vinum SUBDIR+= version-guide SUBDIR+= vm-design SUBDIR+= zip-drive # ROOT_SYMLINKS+= new-users DOC_PREFIX?= ${.CURDIR}/../.. .include "${DOC_PREFIX}/share/mk/doc.project.mk" diff --git a/ru_RU.KOI8-R/articles/gjournal-desktop/Makefile b/ru_RU.KOI8-R/articles/gjournal-desktop/Makefile new file mode 100644 index 0000000000..ad5b88dc5e --- /dev/null +++ b/ru_RU.KOI8-R/articles/gjournal-desktop/Makefile @@ -0,0 +1,19 @@ +# +# $FreeBSD$ +# +# Article: Implementing UFS journaling on a desktop PC + +DOC?= article + +FORMATS?= html + +INSTALL_COMPRESSED?=gz +INSTALL_ONLY_COMPRESSED?= + +SRCS= article.sgml +IMAGES_EN= disklabel1.png +IMAGES_EN+= disklabel2.png +URL_RELPREFIX?= ../../../.. +DOC_PREFIX?= ${.CURDIR}/../../.. + +.include "${DOC_PREFIX}/share/mk/doc.project.mk" diff --git a/ru_RU.KOI8-R/articles/gjournal-desktop/article.sgml b/ru_RU.KOI8-R/articles/gjournal-desktop/article.sgml new file mode 100644 index 0000000000..f15e0fe0a1 --- /dev/null +++ b/ru_RU.KOI8-R/articles/gjournal-desktop/article.sgml @@ -0,0 +1,723 @@ + + + +%articles.ent; +]> + + + +
+ + Настройка журналирования UFS для настольного компьютера. + + + Manolis + Kiagias + +
manolis@FreeBSD.org
+
+
+ + + 2008 + Manolis Kiagias + + + $FreeBSD$ + + + &tm-attrib.freebsd; + &tm-attrib.general; + + + + Журналируемая файловая система использует лог для записи всех + транзакций, происходящих в файловой системе, который также + сохраняет ее целосность в случае краха системы или пропадания + питания. Несмотря на то, что всё еще возможна потеря несохранённых + изменений файлов, журналирование почти полностью исключает + возможность повреждения структуры файловой системы, вызванное + непредвиденным остановом работы. Журналирование также сокращает + до минимума время, необходимое для проверки файловой системы после + отказа. Несмотря на то, что в используемой &os; файловой системе + UFS нет поддержки журналирования, новый класс системы GEOM + в &os; 7.X может быть использован + для для ведения независимого от файловой системы журналирования. + Эта статья объясняет, как реализовать журналирование UFS для + типичного настольного компьютера. + +
+ + + Вступление + + Серверное оборудование обычно хорошо защищено от потери питания. + Настольный компьютер часто подвержен неожиданным пропаданиям питания, + случайным нажатиям кнопки Reset и другим происшествиям (часто + связанным с неосторожностью пользователей), которые могут привести + к непредвиденным выключениям. Механизм Soft Updates, как правило, + достаточно эффективно защищает файловую систему в таких случаях, однако + в последствии требуется длительная фоновая проверка. В очень редких + случаях повреждения файловой системы достигают того уровня, при + котором становится необходимым вмешательство пользователя и данные + могут быть утерянными. + + Новая возможность журналирования, предоставленная системой GEOM, + может существенно выручить в подобных случаях, исключая время, + необходимое для проверки файловых систем и удостовериваясь, + что файловая система быстро восстановлена в целостное состояние. + + Эта статья описывает порядок действий, необходимых для + конфигурирования журналирования UFS на типичном настольном компьютере, + в котором один жесткий диск используется для размещения как + операционной системы, так и данных. В статье подразумевается + установка &os; "с нуля". Шаги достаточно просты и не требуют + чрезмерно сложных манипуляций с командной строкой + + После прочтения данной статьи вы будете знать: + + + + Как зарезервировать место для журнала во время новой + установки &os;. + + + + Как загрузить модуль geom_journal (или + включить поддержку журналирования в специализированном ядре + системы). + + + + Как преобразовать существующую файловую систему, в систему, + использующую журналирование, и какие опции монтирования + использовать в /etc/fstab. + + + + Как реализовать журналирование на новых (пустых) разделах. + + + + + Как диагностировать неполадки, связанные с журналированием. + + + + Перед прочтением этой статьи вам необходимо: + + + + Понимать базовые концепции таких операционных систем, + как &unix; и &os;. + + + + Быть знакомым с процедурой установки &os;, а также с программой + sysinstall. + + + + + Процедура, описанная здесь, подразумевает подготовку к новой + установке, в которой на дисках еще нет пользовательских данных. + Так как эту процедуру можно модифицировать и расширить на системы, + которые уже используются, вам настоятельно рекомендуется сделать + резервную копию всех ценных данных. + Путаница в низкоуровневых операциях с дисками и разделами может + привести к фатальным ошибкам и потере данных. + + + + + Реализация журналирования в &os; + + Журналирование, предоставляемое системой GEOM + в &os; 7.X, не является особенностью + файловой системы (в отличие от, например, файловой системы ext3 + в &linux;), оно функционирует на блочном уровне. А это значит, + что оно может быть применено к разным типам файловых систем, + однако для &os; 7.0-RELEASE журналирование может быть применено + только для UFS2. + + Возможность журналирования обеспечивается загрузкой модуля + geom_journal.ko в ядро (или сборкой собственного + ядра с активированием соответствующих опций) и использованием команды + gjournal для конфигурирования файловой системы. + В общем, вы предпочтете журналировать файловые системы большого размера, + к примеру - /usr. Однако, вам прийдется + зарезервировать некоторое количество свободного места (см. + следующий раздел). + + Когда файловая система журналируется, некоторая часть + дискового пространства требуется для хранения самого журнала. + Дисковое пространство, содержащее данные, называется + поставщиком данных (data provider), + а часть пространства, содержащая журнал, называется + поставщиком журнала (journal provider). + Поставщики данных и журнала должны быть на разных разделах, + если журналирование достраивается к содержащему данные разделу. + А если журналирование включается для нового раздела, у вас есть + возможность использовать один поставщик для данных и журнала. + В любом из двух вышеупомянутых случаев команда + gjournal задействует поставщики и создаст + конечную журналируемую файловую систему. Например: + + + + Вы намереваетесь журналировать файловую систему + /usr, размещенную на + /dev/ad0s1f; + файловая система уже содержит данные. + + + + Вы зарезервировали часть дискового пространства на разделе + /dev/ad0s1g. + + + + Используя команду gjournal, + создаем новый файл устройства + /dev/ad0s1f.journal, + для которого /dev/ad0s1f + является поставщиком данных, а + /dev/ad0s1g — + поставщик журнала. Это новое устройство необходимо использовать + во всех последующих операциях. + + + + Размер дискового пространства, отводимого под поставщик журнала, + зависит от нагруженности файловой системы, а не от размера самого + поставщика данных. Например, для типичного настольного компьютера + достаточно отвести 1 Гб под поставщик журнала для файловой + системы /usr, в то время как компьютеру, + имеющему интенсивный дисковый ввод/вывод (например, редактирование + видео) может потребоваться больше. Если свободное место на поставщике + журнала заканчивается раньше, чем происходит сброс журнала на + диск, — вы получите панику ядра. + + + Очень маловероятно то, что размеры журнала, предложенные здесь, + станут причиной проблем с обычным настольным компьютером (на котором + вы просматриваете веб-страницы, обрабатываете текст или проигрываете + мультимедийные файлы). Если работа вашего компьютера подразумевает + интенсивную дисковую активность, то для обеспечения стабильности + следует придерживаться следующего правила: размер ОЗУ должен + уместиться в 30% размера, отведенного под журнал. Например, если в + вашем компьютере установлен 1 Гб ОЗУ, создайте под поставщик + журнала раздел размером около 3.3 Гб. (Умножьте размер ОЗУ + в 3.3 раза, чтоб получить размер журнала). + + + Для получения дополнительной информации о журналировании, пожалуйста, + прочитайте страницу справочника, посвященную &man.gjournal.8;. + + + + Действия, необходимые во время установки &os; + + + Выделение места под журналирование + + Типичный настольный компьютер обычно имеет один жесткий диск, на + котором хранится как операционная система, так и пользовательские + данные. Вероятно, что схема разбития винчестера (по умолчанию), + выбранная в меню sysinstall, является + более-менее подходящей: настольному компьютеру не требуется большой + раздел /var, в то время, как для раздела + /usr выделяется значительный объем дискового + пространства, ввиду того, что пользовательские данные и множество + пэкэджей хранятся именно в поддиректориях /usr. + + + Разбиение по умолчанию (получаемое при нажатии A + в редакторе разделов &os;, называемом + Disklabel) не оставляет свободного места. + Каждый подлежащий журналированию раздел требует отдельного раздела + для журнала. Ввиду того, что раздел /usr — + наибольший, есть смысл немного уменьшить его размер, чтобы получить + пространство, необходимое для журнала. + + В нашем примере используется жесткий диск размером 80 Гб. + Следующий скриншот показывает результаты разбиения по умолчанию, + выполненного при помощи Disklabel + в процессе установки операционной системы: + + + + + + + + Если это разбиение более-менее вас устраивает, то его легко + модифицировать для журналирования. Используйте клавиши со стрелками + для того, чтобы выделить раздел, отведенный под + /usr, потом нажмите D + чтобы удалить его. + + Теперь переведите подсвечивание к имени диска, находящемуся вверху + экрана, и нажмите C — создайте новый раздел + /usr. Новый раздел должен быть меньше на 1 Гб + (если вы собираетесь журналировать только /usr) + или на 2 Гб (если журналированию подлежат как + /usr, так и /var). + Во всплывающем окне выберите "создать файловую систему" и укажите + /usr точкой монтирования. + + + Следует ли журналировать /var раздел? + Обычно есть смысл журналировать большие разделы. Вы можете решить + не журналировать /var, однако журналирование + на обычном настольном компьютере не причинит вреда. Если + файловая система не нагружена (что типично для настольной системы), + то можно выделить меньше дискового пространства под журнал. + + В этом примере подразумевается журналирование двух файловых + систем: /usr и /var. + Естественно, вы можете подкорректировать процедуру под свои + задачи. + + + Чтобы не усложнять описываемую методику, для создания разделов, + необходимых для размещения журналов, мы будем использовать утилиту + sysinstall. Однако, во время установки + утилита sysinstall требует указания + точек монтирования для каждого созданного вами раздела. Но разделы, + содержащие журналы, вам никогда и никуда монтировать + не прийдется. + + Чтобы избежать вопросов о точках монтирования, мы создадим разделы + под журналы и установим их тип в swap. Раздел, предназначенный для + свопа, никогда и никуда не монтируется, плюс к тому, утилита + sysinstall позволяет создавать столько + разделов под своп, сколько необходимо. После первой перезагрузки + необходимо подредактировать файл /etc/fstab, + удалив в нём лишние записи о своп-разделах. + + Для создания своп-раздела, используя клавиши со стрелками, + перемещайте подсвечивание к верхней части экрана в утилите + Disklabel так, чтобы стало подсвеченным + имя диска. Потом, нажмите N, введите необходимый + размер раздела (1024M), а после — + выберите во всплывшем окне swap space. Повторите + эти шаги для всех оставшихся журналов. В этом примере мы создаем + два раздела, на которых будут размещаться журналы для + /usr и /var. Конечный + результат показан на следующем скриншоте: + + + + + + + + По завершении создания разделов мы рекомендуем вам записать + на бумагу названия разделов и их точек монтирования: с этой информацией + вы будете сверяться во время конфигурирования. Это также поможет + уменьшить количество ошибок, приводящих к повреждению установки. + Следующая табличка отображает наши заметки, сделанные для данного + примера: + + + Разделы и журналы + + + + Раздел + Точка монтирования + Журнал + + + + + + ad0s1d + /var + ad0s1h + + + + ad0s1f + /usr + ad0s1g + + +
+ + Дальше продолжайте обычную установку. Однако, мы рекомендуем + вам отложить инсталляцию приложений сторонних разработчиков (пакетов) + до полной настройки журналирования. +
+ + + Первая загрузка + + Ваша система загрузится нормально, однако вам необходимо будет + подредактировать /etc/fstab и удалить те + лишние своп-разделы, которые вы создавали под журналы. + Как правило, в названии файла устройства, созданного автоматически + утилитой sysinstall, присутствует + суффикс b (в нашем примере это ad0s1b). Удалите + другие записи о своп-разделах и перезагрузите компьютер, после чего + &os; перестанет их использовать. + + После второй перезагрузки, компьютер будет готов к + конфигурированию журналирования. + + + + Настройка журналирования + + + Работа с командой <command>gjournal</command> + + Подготовив необходимые разделы, перейдем к конфигурированию + журналирования. Нам будет необходимо загрузиться в + однопользовательском режиме, для этого залогинимся пользователем + root и напечатаем: + + &prompt.root; shutdown now + + Нажмите Enter для получения приглашения + командного интерпретатора. Нам необходимо будет размонтировать + разделы, которые подлежат журналированию, в нашем примере это + /usr и /var. + + &prompt.root; umount /usr /var + + Загрузите модуль ядра, необходимый для журналирования: + + &prompt.root; gjournal load + + На данном этапе сверьтесь со своими записями и определите, какие + разделы будут использоваться под какой журнал. В нашем примере + /usr располагается на + ad0s1f, а его журнал + будет располагаться на ad0s1g, + и, по аналогии, для /var: файловая система + располагается на ad0s1d, + а ее журнал — на ad0s1h. + Наберите следующие команды: + + &prompt.root; gjournal label ad0s1f ad0s1g + +GEOM_JOURNAL: Journal 2948326772: ad0s1f contains data. +GEOM_JOURNAL: Journal 2948326772: ad0s1g contains journal. + +&prompt.root; gjournal label ad0s1d ad0s1h + +GEOM_JOURNAL: Journal 3193218002: ad0s1d contains data. +GEOM_JOURNAL: Journal 3193218002: ad0s1h contains journal. + + + Если последний сектор любого из двух разделов (поставщиков + данных) используется, команда gjournal + возвратит ошибку. Вам необходимо будет использовать флаг + для принудительной перезаписи, например: + + &prompt.root; gjournal label -f ad0s1d ad0s1h + Так как это — новая установка, очень маловероятен факт, + что что-нибудь будет действительно переписано. + + + На данном этапе созданы два устройства: + ad0s1d.journal и + ad0s1f.journal. Они + представляют /var и /usr + соответственно. Перед монтированием, нам необходимо установить флаг + журналирования и снять флаг механизма Soft Updates: + + &prompt.root; tunefs -J enable -n disable ad0s1d.journal + +tunefs: gjournal set +tunefs: soft updates cleared + +&prompt.root; tunefs -J enable -n disable ad0s1f.journal + +tunefs: gjournal set +tunefs: soft updates cleared + + Теперь, смонтируйте новые устройства в соответствующие места + файловой системы (обратите внимание на то, что мы можем использовать + опцию монтирования ): + + &prompt.root; mount -o async /dev/ad0s1d.journal /var +&prompt.root; mount -o async /dev/ad0s1f.journal /usr + + Откройте /etc/fstab и исправьте записи для + следующих файловых систем: /usr и + /var: + + /dev/ad0s1f.journal /usr ufs rw,async 2 2 +/dev/ad0s1d.journal /var ufs rw,async 2 2 + + + Убедитесь, что упомянутые выше записи правильные, иначе старт + системы будет проблематичным после перезагрузки! + + + И напоследок, подредактируйте + /boot/loader.conf: добавьте следующую строку + и модуль &man.gjournal.8; будет загружаться автоматически при старте + системы: + + geom_journal_load="YES" + + Поздравляем! Журналирование успешно сконфигурировано. Вам + необходимо лишь набрать exit для возвращения + в многопользовательский режим или перезагрузить систему, чтобы полностью + проверить вашу конфигурацию (рекомендуется). Во время загрузки + вы увидите сообщения, подобные следующим: + + ad0: 76293MB XEC XE800JD-00HBC0 08.02D08 at ata0-master SATA150 +GEOM_JOURNAL: Journal 2948326772: ad0s1g contains journal. +GEOM_JOURNAL: Journal 3193218002: ad0s1h contains journal. +GEOM_JOURNAL: Journal 3193218002: ad0s1d contains data. +GEOM_JOURNAL: Journal ad0s1d clean. +GEOM_JOURNAL: Journal 2948326772: ad0s1f contains data. +GEOM_JOURNAL: Journal ad0s1f clean. + + После непредвиденного останова работы системы сообщения будут + немного отличаться, например: + + GEOM_JOURNAL: Journal ad0s1d consistent. + + Это обычно значит, что &man.gjournal.8; воспользовался + информацией в журнале для возвращения файловой системы к целостному + состоянию. + + + + Журналирование новых разделов + + Процедура, описанная выше, необходима для подключения + журналирования разделов, содержащих данные. Журналирование пустых + разделов немного проще, ввиду того, что поставщик данных и поставщик + журнала могут быть размещены на одном и том же разделе. Например, + предположим, что был установлен новый жесткий диск и был создан новый + раздел /dev/ad1s1d. Создание + журнала не сложнее набора: + + &prompt.root; gjournal label ad1s1d + + Размер журнала — 1 Гб по умолчанию. Однако, вы можете + изменить это значение используя ключ . Значение + можно задавать в байтах, в килобайтах, мегабайтах или гигабайтах + (используя суффикс K, M или + G). Имейте ввиду, что команда + gjournal не позволит вам создать журнал + недопустимо малого размера. + + К примеру, чтобы создать журнал размером в 2Гб, можно использовать + следующую команду: + + &prompt.root; gjournal label -s 2G ad1s1d + + Далее, вы можете создать файловую систему на новом разделе, + а также разрешить журналирование ключем : + + &prompt.root; newfs -J /dev/ad1s1d.journal + + + + Встраивание журналирования в специализированное ядро + + Если вы не желаете загружать geom_journal + как модуль, то можно встроить его функции прямо в ваше + специализированное ядро. Редактируя конфигурационный файл ядра, + убедитесь, что в нем находятся следующие две строки: + + options UFS_GJOURNAL # Прим.: Это включено в GENERIC + +options GEOM_JOURNAL # А эту строку необходимо добавить + + Соберите и установите новое ядро следуя указаниям + + Руководства &os; . + + И не забудьте удалить соответствующую строку загрузки модуля + (load) из /boot/loader.conf + (если на предыдущем этапе она была туда внесена). + + + + + Устранение неполадок с журналированием + + Этот раздел содержит часто задаваемые вопросы касательно неполадок, + связанных с журналированием. + + + + + Я получаю паники ядра во время высокой дисковой активности. + Как это связано с журналированием? + + + + Вероятно, что журнал заполняется раньше, чем происходит + сброс его на диск. Помните, размер журнала зависит от + загруженности диска, а не от размера поставщика данных. + Если загрузка диска высокая, вам потребуется раздел большего + размера для журнала. См. замечания в разделе + Реализация + журналирования + + + + + + Я допустил некоторые ошибки во время конфигурирования, + теперь система не загружается. Можно это как-нибудь + исправить? + + + + Вы либо забыли внести запись (опечатались) в + /boot/loader.conf, либо есть ошибки в + файле /etc/fstab. Это легко исправить. + Нажмите Enter, чтобы получить приглашение + командного интерпретатора в однопользовательском режиме. + Потом, проверьте возможные варианты: + + &prompt.root; cat /boot/loader.conf + + Если отсутствует запись geom_journal_load + или она содержит ошибки, журналируемые устройства не создадутся. + Загрузите модуль вручную, примонтируйте все разделы и + переходите в многопользовательский режим (продолжайте + загрузку). + + &prompt.root; gjournal load + +GEOM_JOURNAL: Journal 2948326772: ad0s1g contains journal. +GEOM_JOURNAL: Journal 3193218002: ad0s1h contains journal. +GEOM_JOURNAL: Journal 3193218002: ad0s1d contains data. +GEOM_JOURNAL: Journal ad0s1d clean. +GEOM_JOURNAL: Journal 2948326772: ad0s1f contains data. +GEOM_JOURNAL: Journal ad0s1f clean. + +&prompt.root; mount -a +&prompt.root; exit +(boot continues) + + Если-же запись о geom_journal_load + верна, то проверьте /etc/fstab. + Вероятней всего, что вы обнаружите опечатку или отсутствие + необходимой записи. В этом случае, смонтируйте вручную + оставшиеся разделы и продолжите загрузку в многопользовательский + режим. + + + + + + Возможно-ли отказаться от журналирования и вернуться + к моей привычной файловой системе с механизмом Soft Updates? + + + + Несомненно. Используйте приведенную ниже последовательность + действий, которая обращает изменения. Разделы, созданные для + поставщиков журналов, могут позже быть использованы для других + целей. + + Залогиньтесь root и переведите систему + в однопользовательский режим: + + &prompt.root; shutdown now + + Размонтируйте журналируемые разделы: + + &prompt.root; umount /usr /var + + Синхронизируйте журналы: + + &prompt.root; gjournal sync + + Остановите поставщики журналов: + + &prompt.root; gjournal stop ad0s1d.journal +&prompt.root; gjournal stop ad0s1f.journal + + Удалите метаданные журналирования со всех задействованных + устройств: + + &prompt.root; gjournal clear ad0s1d +&prompt.root; gjournal clear ad0s1f +&prompt.root; gjournal clear ad0s1g +&prompt.root; gjournal clear ad0s1h + + Снимите флаг журналирования и установите флаг механизма Soft + Updates: + + &prompt.root; tunefs -J disable -n enable ad0s1d + +tunefs: gjournal cleared +tunefs: soft updates set + +&prompt.root; tunefs -J disable -n enable ad0s1f + +tunefs: gjournal cleared +tunefs: soft updates set + + Смонтируйте вручную старые (первоначальные) устройства: + + &prompt.root; mount -o rw /dev/ad0s1d /var +&prompt.root; mount -o rw /dev/ad0s1f /usr + + Откройте файл /etc/fstab и приведите + его к изначальному виду: + + /dev/ad0s1f /usr ufs rw 2 2 +/dev/ad0s1d /var ufs rw 2 2 + + + И напоследок, удалите строку, загружающую модуль + geom_journal, из файла + /boot/loader.conf и перезагрузите + операционную систему. + + + + + + + + Для дальнейшего ознакомления + + Журналирование — относительно новая функциональная возможность + &os;, и как такова, она еще недостаточно документирована. Однако, вы + можете сочти полезными следующие источники: + + + + Новый раздел + Руководства FreeBSD, посвященный журналированию. + + + + Этот пост + в списке рассылки &a.current.name;, написанный &a.pjd; — + автором &man.gjournal.8;. + + + + Этот пост + от &a.ivoras; в списке рассылки &a.questions.name;. + + + + Страницы справочника &man.gjournal.8; и &man.geom.8;. + + + +
+