.\" Copyright (c) 2006-2007 Pawel Jakub Dawidek .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" .\" THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" .\" %FreeBSD: src/sbin/geom/class/journal/gjournal.8,v 1.1.2.1 2007/11/20 07:32:54 ru Exp % .\" $FreeBSDru: frdp/doc/ru_RU.KOI8-R/man/man8/gjournal.8,v 1.3 2007/12/05 14:41:01 ru Exp $ .\" $FreeBSD$ .\" .Dd 14 ноября 2007 .Dt GJOURNAL 8 .Os .Sh НАЗВАНИЕ .Nm gjournal .Nd "программа управления журналируемыми устройствами" .Sh СИНТАКСИС .Nm .Cm label .Op Fl cfhv .Op Fl s Ar размер_журнала .Ar поставщик_данных .Op Ar поставщик_журнала .Nm .Cm stop .Op Fl fv .Ar имя ... .Nm .Cm sync .Op Fl v .Nm .Cm clear .Op Fl v .Ar поставщик ... .Nm .Cm dump .Ar поставщик ... .Nm .Cm list .Nm .Cm status .Nm .Cm load .Nm .Cm unload .Sh ОПИСАНИЕ Утилита .Nm используется для конфигурации журнала на заданном поставщике GEOM. Журнал и данные могут храниться как на одном поставщике, так и на двух разных. Журналирование осуществляется на уровне блоков, а не файловой системы. Это значит, что протоколируется абсолютно всё, например, для файловых систем .Nm журналирует и данные, и метаданные. GEOM-класс .Nm способен взаимодействовать с файловыми системами, что позволяет использовать .Nm для журналирования файловых систем и поддержания их в целостном состоянии. В настоящий момент поддерживается только файловая система UFS. .Pp Чтобы сконфигурировать журналирование на файловой системе UFS посредством .Nm , необходимо вначале создать GEOM-поставщика .Nm , используя утилиту .Nm , а затем запустить .Xr newfs 8 или .Xr tunefs 8 с ключом .Fl J , который заставляет UFS взаимодействовать с GEOM-поставщиком .Nm . Существуют важные отличия в работе UFS с журналом и без него. Наиболее существенно то, что системные вызовы .Xr sync 2 и .Xr fsync 2 работают не так, как ожидается. Чтобы гарантировать, что данные были сохранены на поставщике данных, после системного вызова .Xr sync 2 должна быть вызвана команда .Nm Cm sync . Для оптимизации производительности при использовании .Nm следует отключать soft-updates. Также безопасна и рекомендуется к использованию опция .Cm async команды .Xr mount 8 . .Pp Когда .Nm сконфигурирован поверх поставщиков .Xr gmirror 8 или .Xr graid3 8 , они также поддерживаются в целостном состоянии, поэтому автоматическая синхронизация после сбоя питания или отказов системы может быть на этих поставщиках отключена. .Pp Утилита .Nm хранит всю необходимую информацию в метаданных на диске, в последнем секторе поставщика. Это может стать проблемой при преобразовании существующей файловой системы для использования с .Nm . .Pp Первый аргумент .Nm указывает действие, которое будет выполнено: .Bl -tag -width ".Cm status" .It Cm label Конфигурирует .Nm на указанном поставщике (поставщиках). Если указан только один поставщик, данные будут храниться на одном поставщике вместе с журналом. Если указаны два поставщика, первый будет использован для данных, а второй \[em] для журнала. .Pp Дополнительные опции: .Bl -tag -width indent .It Fl c Защищать записи журнала контрольной суммой. .It Fl f Может быть использована для преобразования существующей файловой системы для использования с .Nm , но только в том случае, если журнал будет сконфигурирован на отдельном поставщике, и последний сектор поставщика данных не используется файловой системой. Если утилита .Nm обнаружит, что последний сектор занят, она откажется от записи в него данных и вернёт ошибку. Подобное поведение можно обойти, используя флаг .Fl f , который заставит .Nm перезаписать последний сектор. .It Fl h Зафиксировать имена поставщиков в метаданных. .It Fl s Ar размер_журнала Задаёт размер журнала в случае, если один и тот же поставщик используется для хранения как данных, так и журнала. По умолчанию один гигабайт. Размер должен выбираться исходя из загруженности поставщика, а не его размера. Не рекомендуется использовать .Nm для небольших файловых систем (например, размером всего в несколько гигабайт). .El .It Cm clear Очищает метаданные на указанных поставщиках. .It Cm stop Останавливает указанного поставщика. .Pp Дополнительные опции: .Bl -tag -width ".Fl f" .It Fl f Останавливает данного поставщика, даже если он открыт. .El .It Cm sync Вызывает переключение журнала и принудительную отправку данных к поставщику данных. .It Cm dump Выводит метаданные, хранящиеся на указанных поставщиках. .It Cm list Смотрите .Xr geom 8 . .It Cm status Смотрите .Xr geom 8 . .It Cm load Смотрите .Xr geom 8 . .It Cm unload Смотрите .Xr geom 8 . .El .Pp Дополнительные опции: .Bl -tag -width ".Fl v" .It Fl v Более подробный вывод. .El .Sh СТАТУС ЗАВЕРШЕНИЯ Утилита .Nm возвращает 0 в случае успешного завершения и 1 в случае возникновения ошибки. .Sh ПРИМЕРЫ Создать основанную на .Nm файловую систему UFS и смонтировать её: .Bd -literal -offset indent gjournal load gjournal label da0 newfs -J /dev/da0.journal mount -o async /dev/da0.journal /mnt .Ed .Pp Сконфигурировать журналирование на существующей файловой системе, но только если это позволяет .Nm , т.е.\& если последний сектор ещё не использован файловой системой: .Bd -literal -offset indent umount /dev/da0s1d gjournal label da0s1d da0s1e && \e tunefs -J enable -n disable && \e mount -o async /dev/da0s1d.journal /mnt || \e mount /dev/da0s1d /mnt .Ed .Sh СМОТРИ ТАКЖЕ .Xr geom 4 , .Xr geom 8 , .Xr mount 8 , .Xr newfs 8 , .Xr tunefs 8 , .Xr umount 8 .Sh ИСТОРИЯ Утилита .Nm появилась во .Fx 7.0 . .Sh АВТОРЫ .An Pawel Jakub Dawidek Aq pjd@FreeBSD.org .Sh ПРОБЛЕМЫ Отсутствует документация к sysctl .Va kern.geom.journal.* .