Archive for the ‘FreeBSD’ Category



1
октября
3

TmpFS в FreeBSD



TmpFS — это быстрая и эффективная файловая система в ОЗУ, а не на ПЗУ, как прочие ФС. Предназначена для временного хранения файлов с оптимальным расходом памяти и скоростными характеристиками. Обычно используется при монтировании в каталог /tmp, в котором много постоянно меняющихся временных мелких файлов, поэтому может быть целесообразно размещать их в памяти.

TmpFS очень подобна RAM-диску, тем что данные находятся в оперативной памяти. При работе используется виртуальную память (virtual memory, VM), т.е. RAM и SWAP (при потребности подключается пространство подкачки).

Ранее я описывал как создать ФС в памяти с помощью драйвера md (Memory «disks») и хотелось бы упомянуть о нескольких отличиях MFS от TmpFS. Для MFS (Memory File System) нужно создание устройства памяти, т.е. блочного устройства, которое перед использованием нужно отформатировать для определенной файловой системы (например, UFS), которая обычно используется для применения на ПЗУ со своими опциями ориентированными на жесткие диски (например, настройки фрагментации, журналирования, дубликации и пр. операции с секторами/цилиндрами/головками). Поэтому при использовании md возникает дополнительная нагрузка на систему при работе с данными на этом блочном устройстве. TmpFS блочным устройством не является и ее можно использовать сразу после монтирования. MFS при монтировании резервирует и использует определенный объем ОЗУ, указанный при создании диска памяти (место под нее будет выделено из общего пула памяти и при необходимости может перемещаться в область подкачки), а TmpFS может динамически использовать свободную память. Click to continue…

12
мая
2

MFS, создание диска в памяти (RAM-диска)



Для реализации данной возможности в FreeBSD нужно чтобы драйвер виртуального диска md (device md # Memory «disks») был вкомпилен в ядро либо подгружен как модуль с помощью kldload geom_md. MFS (Memory File System, файловая система в оперативной памяти) — это частный случай использования драйвера md, как создание swap-а в файле. MFS позволяет монтировать директорию в оперативную память и работать с файлами там, как в обычной файловой системе, но при этом будет наблюдаться значительный прирост в скорости. Данную возможность полезно использовать при работе с большим колличеством часто обновляемых мелких файлов, к примеру, директория для временных файлов разнообразных демонов или скриптов.

Можно добавить запись об этом в /etc/fstab для создания при старте системы диска в памяти (также указав выделяемый размер оперативной памяти в разумных пределах, чтобы не получить в итоге нехватки ядерной памяти и паники ОС). Данные в этой директории, конечно же, после перезагрузки будут потеряны, поэтому это обязательно следует учесть, например, при пересборке мира через make данные в директории после перезагрузки системы будут утеряны и обновление не будет осуществлено. Click to continue…

1
мая
0

Настройка/изменение порта в FreeBSD для установки программы определенной версии/ревизии



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

Рассмотрим подобный случай на примере с поисковым полнотекстовым движком Sphinx. Для него существует два порта: содержащий официальный релиз /usr/ports/textproc/sphinxsearch (на данный момент версия 0.9.9) и /usr/ports/textproc/sphinxsearch-devel (бета-версию 1.10-beta). Исходные тексты, которые нужно будет скачать, доступны в SVN-репозитории с ревизиями на разные моменты исправления ошибок.

В подавляющем своем большинстве разработчиками какого-либо ПО для работы с исходниками (и не только) используется система управления версиями. Это, можно сказать, некая разновидность файлового сервера, но позволяет хранить версию дерева файлов (файлов и каталогов) за разные моменты времени, т. е. когда вносились какие-либо изменения (добавление, удаление, редактирование файлов) и история этих изменений. С таким хранилищем может работать любое количество человек, обладающих правом чтения и/или записи. В общем, системы управления версиями главным образом предназначены для записи и отслеживания изменений информации во времени. Очень распространенной системой управления версиями является Subversion (SVN), которая обладает рядом дополнительных полезных возможностей, по сравнению, к примеру с CVS. Click to continue…

5
апреля
1

Настройка ротации логов с помощью newsyslog



Ротация (rotate) — это замена текущего открытого, т. е. используемого приложением для записи в данный момент, лог-файла новым и переименование (возможно с архивированием) старого, который замещает еще более старый, существовавший до этого лог. Самый старый файл удаляется.

Помимо настройки самого логирования, которое обычно производиться с помощью syslogd в /etc/syslog.conf, важное значение имеет дальнейшее слежение и управление файлами журналов, которые хранят записи о произошедших событиях. Лог-файлы должны хранится за определенный период времени или содержать определенный размер данных. Так как это влияет на процент свободного места на диске и в частности на место в разделе с логами, за которым необходимо следить, поскольку полное его заполнение может привести к разнообразным проблемам. По современным меркам информация является самой ценной и ее потеря просто недопустима. Тем более если причину возникновения какой-либо проблемы можно выявить только используя журнальные файлы. Да и в конце концов, большой размер самого лог-файла приносит некоторые неудобства при работе с ним, т. к. иногда приходится разбивать его на более мелкие с помощью, к примеру, утилиты split.
Click to continue…

13
января
3

Перенос и бекап FreeBSD с помощью dump/restore



С большой долей вероятности может возникнуть ситуация, когда нужно систему перенести на другой жесткий диск или другой раздел больший по объему. Например в случае, когда текущий диск «сыпется» или раздел (в Windows-понимании) для FreeBSD является недостаточным по месту, а систему переустанавливать не хочется. Наилучшим и самым простым решением для этого будет воспользоваться утилитами dump/restore и sysinstall.

Я надеюсь, что вам уже приходилось создавать разделы на Freebsd, поэтому ограничусь только перечислением опций которые необходимо указать и последовательностью действий.Для начала нужно создать слайс FreeBSD. Загружаемся с образа, идем в «Configure», потом «Fdisk», а далее выбираем либо новый жесткий диск либо текущий, где нужно создать слайс на одном из разделов. На доступном пространстве диска или отдельном разделе нужно сделать «Create Slice», получив в полях Desc и Subtype значения freebsd и 165. Далее выставляем флаг «Set Bootable» и записываем все что было проделанно на диск с помощью «Write Changes». После выхода спросит про установку Boot Manager в MBR на данном диске. Выбираем «Standard» если производится перенос системы на новый диск, либо «BootMgr», что будет полезно, если установлено несколько ОС на диске. Click to continue…

14
ноября
1

SWAP в файле на FreeBSD



Для создания/добавления swap-а, если нет возможности подключить раздел подкачки на другом жестком диске, можно создать файл подкачки на существующем разделе. Для возможности реализации этого должен быть вкомпилирован в ядро драйвер виртуального диска md (device md # Memory «disks»). Если это не так и не хочется пересобирать ядро, то можно его просто подгрузить:

kldload geom_md ;

а для загрузки вместе со стартом системы добавить в loader.conf:

echo «geom_md_load="YES"» >> /boot/loader.conf ;

Создаем файл размером 1G, который будет использоваться, как свап и выставляем нужные права:

dd if=/dev/zero of=/var/swap0 bs=1024k count=1024
chmod 0600 /usr/swap0

Click to continue…

27
сентября
1

Система пакетов в FreeBSD



Как известно, программы во FreeBSD можно устанавливать непосредственно с исходных кодов либо через систему портов или пакетов. Дерево портов содержит в себе инструкции по получению и компиляции программ, а пакеты — это уже скомпилированные под определенную версию дистрибутива порты. Основное отличие заключается в возможности настройки и, конечно же, скорости установки. Если нужно установить большую программу, например OpenOffice.org, не требующую особой настройки, то лучше прибегнуть к помощи системы пакетов.

Управлять пакетами достаточно просто, а главное — это то, что после установки программы через коллекцию портов операционная система видит ее как пакет и можно применять те же команды, что и к установленным пакетам (pkg_delete/pkg_info). Установленный порт также регистрируется в /var/db/pkg.

На установочных дисках обычно есть каталог pakages и он имеет такую же структуру, как система портов, за исключением директории All, где находятся все пакеты, а в остальных директориях лишь символические ссылки на них. Для установки пакета достаточно примонтировать диск либо скачать пакет с FTP-зеркала под свою архитектуру и версию дистрибутива (pub/FreeBSD/ports/_arch_/packages-_version_) и выполнить:

pkg_add _name-version_.tbz;

но намного удобнее и проще устанавливать непосредственно с FTP-сервера:

pkg_add -r _name-version_.tbz;

автоматически также будут загружены и установлены зависимости пакета. Click to continue…

25
июля
1

Система портов в FreeBSD



После установки ОС FreeBSD имеется все, что необходимо для ее работы. Это «стандартные» утилиты входящие в состав систем UNIX, то есть ничего лишнего, а только необходимое.

Стороннее ПО в FreeBSD можно устанавливать несколькими способами:

— через систему портов или пакетов;
— установка из исходников.

Порты — это набор правил и команд для компиляции(сборки) программ.Порты предназначены для упрощения и автоматизации установки, модификации, обновления приложений из исходных кодов, а также отслеживания их зависимостей. С помощью дерева/коллекции/системы портов можно легко установить/обновить/переустановить с нужными настройками требуемую программу. Сама по себе коллекция портов не содержит в себе исходный код программ, а только все необходимое для его получения с некоторого источника и «манипулирования» им.

Для начала работы с деревом портов было бы неплохо их установить, для чего существует несколько способов, к примеру, через: sysinstall, cvsup или portsnap. Рассмотрим метод получения дерева портов через CVSup, который представляет собой получение и синхронизацию исходных текстов с основного репозитория CVS на удаленном сервере, в нашем случае одного из зеркал FreeBSD. Для начала необходимо установить cvsup-клиент — cvsup-without-gui. Click to continue…

18
июля
2

Программный RAID в FreeBSD, RAID-1 — gmirror



GEOM — модули ядра для работы с дисками, в том числе и создание программных RAID-массивов. Для создания RAID все диски должны в идеале быть одинакового размера, если какой-то диск имеет больший объем, то место, составляющее разницу, использоваться не будет. Лучшим вариантом будет использовать диски одного производителя той же модели. Основное предназначение RAID — избыточность, производительность, надежность, емкость массива. В зависимости от этого массивы и делятся на разные типы, реализованные соответствующими модулями GEOM для их использования:

RAID-0 — чередование записи на разные диски (gstriping), повышается производительность, но отсутствует избыточность;
RAID-1 — зеркалирование дисков (gmirror), содержимое дублируется между дисками;
RAID-3 — чередование с сохранением контрольных сумм на выделенном диске (graid3), когда диск выпадет с рейда, содержимое можно восстановить с помощью контрольных сумм;
RAID-5 — чередование с сохранением контрольных сумм на всех дисках, в отличии от RAID-3 может сразу обслуживать несколько I/O (ввода/вывода) и массив равен сумме всех жестких дисков, с которых он собран;
RAID 0+1 — зеркалирование дисков, разбитых на чередующиеся области, то есть сначала создается виртуальный диск с массива типа RAID0, а потом зеркало его на такой же набор жестких дисков. Этот тип не обеспечивает отказоустойчивости, как RAID 10.
Click to continue…

19
июня
0

Командный процессор ZSH



ZSH — Shell, командная оболочка, командный интерпретатор или же командный процессор, принадлежащий к sh-совместимым, который имеет расширенные возможности и улучшения чем bash.

Шелл имеет расширенные возможности автодополнения, алиасов, перенаправлений ввода/вывода, глоббинг, модульную структуру. Грамматика команд по большей части совпадает с грамматикой других командных процессоров семейства bourne shell, хотя имеются различные расширения.
Click to continue…