суббота, 17 октября 2009 г.

Dlink DNS - 323

Купил себе новую игрушку. Dlink DNS-323.
По сути это сетевое хранилище.
Внутри линукс.
Хард на 1Тб она форматнула как ext2.

Задача перегона данных усложнилась еще тем, что NTFS не поддерживает в принципе, даже "только на чтение" не хочет.
Ладно.... Что может этот девайс из протоколов FTP, SMB. HTTP (грустно только админка и никакого нормального доступа в файлам).

Для начала, я включил поддержку UTF8. Это избавляет меня от проблем с русскими именами файлов на диске, но дбавило проблем для монтирования.

Для SMB вывел следующую мантру
1. Установить поддержку smbfs
apt-get install smbfs
2. Создать каталог монтирования
sudo mkdir /media/vol1
3. Сам монтаж
mount -t smbfs -o username=admin,password=,iocharset=utf8 //192.168.1.33/Volume_1 /media/vol1

Для FTP нашел готовую мантру и даже больше http://www.e-lug.ru/node/185 оригинал тут Большое спасибо Халикову Антону
1. Fuse обертки
apt-get install curlftpfs
2. Создаем каталог
sudo mkdir /media/vol1_ftp
3. Монтируем
sudo curlftpfs ftp://anonymous:anonymous@192.168.1.33/ /media/vol1_ftp -o ro,allow_other,uid=1001,gid=1001

javascript:void(0)

понедельник, 12 октября 2009 г.

Философия...

Просто удивительно, насколько важна ваша работа, когда нужно отпроситься
с нее, и насколько она маловажна, когда вы просите прибавки в зарплате!

Индексы на основе B-деревьев для поддержки высокого темпа обновлений

http://www.interface.ru/

Перевод: Сергей Кузнецов
Предисловие переводчика

Статья Грейфа привлекла меня тем, что уже давно не попадались обзоры, посвященные алгоритмам работы с B-деревьями. Должен сразу сказать, что во многом статья не оправдала мои ожидания: многие, по-видимому, интересные методы и структуры данных описаны слишком кратко и сумбурно, очень не хватает иллюстраций. Во время перевода мне постоянно хотелось исправить недостатки статьи, благо, что большая часть источников, упоминаемых в списке литературы, свободно доступна в Internet. Однако я сдержал себя и представляю вам чистый перевод статьи. В целом он дает представление о существующих подходах, а с подробностями вы можете при желании ознакомиться сами, воспользовавшись списком литературы и поставленными мной ссылками на публикации в Web.

1. Аннотация

В некоторых приложениях сбор данных доминирует над обработкой данных. Например, при мониторинге движущихся объектов часто требуется больше операций вставки и обновления, чем запросов. Это дисбаланс часто демонстрируется при сборе данных с использованием автоматических сенсоров. В более широкой постановке, нерешенной проблемой является индексирование потоков.

Для этих приложений хорошим вариантом являются индексы на основе B-деревьев, если принять некоторые компромиссные решения, направленные на оптимизацию скорее операций обновления, чем запросов. В этой статье приводится обзор некоторых методов, которые за счет снижения эффективности обработки запросов позволяют B-деревьям выдерживать очень высокий темп обновлений, на несколько порядков более высокий, чем могут допустить традиционные B-деревья. Не удивительно, что некоторые из этих методов напоминают методы, используемые при создании, перестройке индексов и т.д., а другие выводятся из известных технологий, таких как дифференциальные файлы и файловые системы с журнальной структурой (log-structured file system).
2. Введение

Некоторые приложения в большей мере собирают данные, чем обрабатывают запросы к ним. Например, система управления автопарком компании грузовых автомобильных перевозок или такси может регистрировать данные о текущей позиции движущегося средства намного чаще, чем позиции автомобилей запрашиваются диспетчеров автопарка. В этих случаях организацию индекса и B-дерева, в отличие от традиционного подхода, следует оптимизировать с целью повышения эффективности выполнения операций вставки и обновления, а не запросов.

Другой областью применения методов, обсуждаемых в этом обзоре, является индексирование непрерывных потоков данных. Достаточно хорошо понятна фильтрация потоков "на лету", но для потоков, содержащих идентификаторы объектов реального мира, часто требуется сопоставление со статическими данными, а также с другими потоками. Поэтому крайне необходима возможность сбора потоковых данных, обычно в порядке их поступления, а также их индексирования по атрибутам, отличным от времени поступления. Иногда требуется несколько индексов, поддерживающих разные порядки. Например, для обеспечения эффективного и близкого к мгновенному обнаружения случаев мошенничества в потоке данных о транзакциях с кредитными карточками может потребоваться индексирование по номеру карты, идентификационным данным клиента (клиент может потерять несколько кредитных карт в одно и то же время) и данным о продавце (нечестный служащий может мошенническим образом расплачиваться кредитными картами многих клиентов).

Далее мы предполагаем, что эффективность операций обновления и вставки является более важной, чем эффективность обработки запросов. Если читателя не интересуют такие приложения, то к его B-деревьям следует применять традиционные оптимизационные методы, а не методы, обозреваемые в этой статье. Кроме того, мы предполагаем, уже применен какая-либо регулировка рабочей нагрузки, например, выработана "наилучшая" политика регистрации данных о текущем местоположении автомобилей, так что оставшиеся запросы на обновление действительно должны быть отражены во всех рассматриваемых индексах. Наконец, мы предполагаем, что учитывается возможность аппаратной поддержки, и она используется, насколько это возможно и уместно, например, используются расслоение дисков и твердотельные диски или дисковые буфера.
3 Оптимизация ввода/вывода

Как и в большинстве операций баз данных, фокусирование на эффективности дисковых операций ввода/вывода является действенным способом повышения производительности и масштабируемости. Однако необходимо разделять совершенствование общей пропускной способности системы и сокращение времени отклика отдельных транзакций, что может быть очень интересно в данном случае, а может быть и совсем не интересно.

Имеется несколько очень общих технологий совершенствования производительности, например, сжатие данных [WKH 00]. В рабочих нагрузках с интенсивным обновлением данных существенное сжатие применяется не только к данным, но и к журналу транзакций. Здесь достаточно заметить, что некоторые методы сжатия являются удивительно простыми, например, отбрасывание лидирующих или хвостовых нулей или пробелов и объединение нескольких журнальных записей от одной транзакции в одну журнальную запись для сокращения накладных расходов, вызываемых наличием в журнале транзакций множественных заголовков записей.
3.1 Предварительная выборка, упреждающее чтение и отложенная запись

Отложенная запись (write-behind) страниц журнала и данных является хорошо известным методом. Сама по себе отложенная запись не повышает пропускную способность системы, поскольку объем записи не сокращается. Однако отложенная запись часто обеспечивает возможность записи данных большого объема, что является еще более эффективным, чем поддержка очередей ввода/вывода. Кроме того, отложенная запись полезна в случае пиков рабочей нагрузки и позволяет производить дополнительную оптимизацию. Например, в современных дисковых устройствах поддерживаются собственные очереди команд, и обмены выполняются лучше, если всегда имеются десятки ждущих операций ввода/вывода [ADR 03].

Упреждающее чтение (read-ahead, обычно используемое при сканировании) не применяется к операциям обновления, но оно применяется для присоединения всей ветви модификаций к существующему B-дереву. При слиянии нескольких разделов B-дерева (обсуждаемом ниже) в один раздел упреждающее чтение с использованием прогнозирования может улучшить производительность, поскольку слияние разделов, по существу, представляет ту же проблему, что и слияние прогонов при выполнении внешней сортировки со слиянием [G 03a]

Предварительная выборка (prefetch), основанная на индивидуальных ключах, применяется не только к операциям выборки, например, при передвижении из некластеризованного индекса в кластеризованный индекс, но и к операциям обновления. Однако, подобно упреждающему чтению и отложенной записи, предварительная выборка также не приводит к непосредственному улучшению производительности или пропускной способности системы, а лишь уменьшает время реакции или задержку выполнения отдельных операций, что может косвенным образом привести к повышению производительности за счет сокращения конкуренции при управлении параллельным выполнением операций.
3.2 B-деревья, оптимизированные для записи

В дополнение к асинхронному вводу-выводу, эффективность операций записи может быть улучшена за счет динамического размещения содержимого на диске [G 04]. Этот эффект хорошо известен и интенсивно исследовался для файловых систем с журнальной структурой [OD 89], в частности, в контексте RAID-хранилищ [PGK 88]. Основная идея B-деревьев, оптимизированных для записи, состоит в выделении нового места на диске при каждой записи страницы на диск при выполнении операции записи, т.е. позже принятия решения менеджером буферов о замещении буфера. При этом новое место для страницы выделяется таким образом, что несколько параллельных операций записи нацеливается на одну и ту же область диска.

Чтобы избежать последующего обновления соседних страниц, традиционная цепочка страниц с использованием физических идентификаторов страниц заменяется логической цепочкой страниц с использованием разделительных ключей (separator key), т.е. каждая страница несет в качестве нижнего и верхнего барьеров разделительный ключ, копируемый в страницу родительского узла при отщеплении страницы от ее соседей. В дополнение к поддержке тех же проверок согласованности и других технических операций, что и те, которые поддерживаются традиционными физическими цепочками страниц, барьерные ключи упрощают и улучшают блокировку диапазонов значений ключа, поскольку никогда не требуется перемещаться к соседней листовой странице для нахождения правого значения ключа в диапазоне. После замены физических цепочек страниц логическими барьерными ключами физические идентификаторы страниц остаются только в указателях детей, и только их требуется изменять при перемещении узла на новое место на диске.

В традиционных алгоритмов B-деревьев новое место выделяется при принятии решения менеджером B-дерева о расщеплении узла, так что в последующих журнальных записях могут иметься ссылки на идентификатор этой страницы. В B-деревьях, оптимизированных для записи, новой странице дается временный идентификатор, который может использоваться в журнальных записях, и страница перемещается при выполнении операции записи, что очень напоминает перемещение страницы при выполнении дефрагментации B-дерева. Поэтому применяются испытанные механизмы управления параллельным выполнением операций и восстановления.

Воздействие на производительность B-деревьев, оптимизированных для записи, состоит в том, что случайные операции записи преобразуются в крупные последовательные операции записи, обеспечивающие повышение пропускной способности более чем в 10 раз ценой дополнительной поддержки родителя каждого узла при каждой его записи на новое место на диске.
4. Буферизация вставок

Имеется несколько способов буферизации и группировки новых вставок с целью уменьшения частоты обновления каждого узла B-дерева, что, в свою очередь, приводит к уменьшению интенсивного дискового ввода-вывода, обменов с кэшем центрального процессора и т.д. При выполнении запросов приходится либо производить поиск в буферной структуре в дополнение к поиску в индексе B-дерева, либо втискивать все или некоторые буферные запись в индекс B-дерева.

Для корректного транзакционного выполнения требуется журнализировать и вставки, и удаления в буфере; поэтому объем журнала может превосходить объем традиционного журнала более чем в три раза. Однако пользовательской транзакцией является только исходная вставка в первый буфер, а все следующие перемещения записи могут быть системными транзакциями, которые можно фиксировать дешевым образом без выталкивания заключительной части журнала в стабильную память.
4.1 Буферизация в пределах блоков дерева

Некоторые исследователи анализировали структуры данных и алгоритмы, добавляющие большой буфер к каждому внутреннему узлу дерева [A 96, AHV 02, VSW 97]. Часто размер этого буфера превышает размер области, предназначенной для традиционных пар "ключ-указатель", не только потому, что каждая буферизованная новая запись больше пары "ключ-указатель", но также и потому, что число сохраняемых записей может быть больше числа пар "ключ-указатель". Когда буфер полностью заполняется, соответствующие записи выталкиваются в его ребенка с наибольшим числом сохраняемых записей.

Как кажется, записи должны удерживаться только для тех детей, которые не находятся непосредственно в буфере ввода-вывода. На основе того, что в большинстве B-деревьев имеется не менее ста ветвей, что в большинстве серверов баз данных размер памяти превосходит 1% размера диска, и что обсуждаемые здесь B-деревья являются наиболее активно используемыми и критически влияющими на производительность индексами внутри базы данных, можно заключить, что такая буферизация применима только к узлам, являющимся непосредственными предками листьев. Другими словами, могут быть возможны дополнительные усовершенствования опубликованных методов, позволяющие буферизовать узлы всех уровней B-дерева.
4.2 Буферизация в отдельных структурах

Альтернативой буферизации вставок в узлах дерева является создание отдельной структуры данных для буферизации новых вставок [LJB 95, MOP 00, OCG 96]. Эта структура данных может быть еще одним B-деревом или может представлять другую разновидность структуры данных в основной памяти, например, хэш-таблицу. На самом деле, она может являться и набором структур данных, образующих иерархию или каскад областей хранения. Интересно, что эта организация напоминает обе организации, предлагавшиеся сборку мусора по поколениям [U 84].

Использование новых структур предполагает наличие новых механизмов для управления параллельным выполнением операций и восстановления. Таким образом, предпочтительным механизмом была бы уже реализованная индексная структура. В противном случае для новых моделей или протоколов блокировки потребуются доказательства корректности, реализация, тестирование и т.д. Возможно, в наиболее желательной реализации должны избегаться и отдельные структуры, и модификации существующих структур, а вместо этого существующие механизмы должны использоваться другим образом.
4.3 Буферизация в разделах B-дерева

В одной из работ, мотивируемой желанием избежать кодирования частных случаев, используется основное B-дерево как собственная буферная структура данных за счет введения разделов внутри каждого B-дерева [G 03a]. За счет введения искусственного лидирующего столбца ключа сохраняется традиционная структура B-дерева. "Основное" B-дерево определяется общим значением искусственного лидирующего столбца ключа, скажем, 0 или null, а один или более буферов определяются другими значениями этого столбца, скажем, 1, 2 и т.д.

Традиционное управление буферами вместе с ограничениями на размер заново добавленных разделов обеспечивают, что вставки данных пользовательскими транзакциями могут полностью происходить в основной памяти. В предельном случае разделы новых вставок могут состоять из одной записи, т.е. каждая вставка определяет новый раздел и, таким образом, может выполняться практически без поиска или реорганизации страницы внутри B-дерева. Таким образом, максимизируется скорость вставок и пропускная способность пользовательских транзакций за счет потребности больших усилий для оптимизации и реорганизации индекса.

При выполнении запросов требуется производить поиск в каждом разделе с использованием традиционных методов, ограничивающих значения некоторых столбцов индекса, за исключением лидирующего [LJB 95], которые, возможно, дополняются оптимизацией на основе того факта, что в качестве идентификаторов разделов используются последовательные целые значения. В качестве альтернативы, при выполнении запросов могут возникать некоторые слияния, выполняемые до реальной выборки данных и реализуемые с использованием системных транзакций. Таким образом, работа по поддержке B-дерева, традиционно выполняемая как часть операций обновления, перемещается в состав операций запросов или реорганизации, которая может случаться в любое время между вставкой и запросом. В крайнем случае, запрос может привести к полному слиянию и оптимизации всех разделов за исключением, может быть, одного раздела, предназначенного для текущих вставок.

Некоторые интересные аспекты таких B-деревьев состоят в том, что

1. операция реорганизации, которая объединяет несколько разделов в один раздел, очень похожа на шаг слияния в традиционной внешней сортировке со слиянием;
2. такие операции слияния могут выполняться как системные транзакции и фиксировать каждый раз очень небольшой диапазон ключей;
3. такие операции слияния и реорганизации могут приостанавливаться и возобновляться в любое время, если возникают периоды пиковой нагрузки;
4. тот же метод может способствовать выполнению массовых удалений, т.е. удаляемые элементы B-дерева перемещаются небольшими системными транзакциями в выделенный раздел, а затем удаляются в одной из быстрых пользовательских транзакций, которая вырезает из B-дерева несколько полных страниц.

4.4 Плавное снижение эффективности

Помимо общего повышения производительности, буферизованные вставки обеспечивают плавное снижение эффективности в случае ошибочных оценок мощности в ходе оптимизации запросов. Сегодня при оптимизации запросов можно выбирать между обработкой операций обновления в режиме "строка-за-строкой" и обработкой в режиме "индекс-за-индексом". При выполнении операции обновления в режиме "строка-за-строкой" обновление всех нужных индексов производится сразу после обновления очередной строки. Обновление в режиме "индекс-за-индексом" означает, что к каждому индексу сразу применяются все обновления, возможно, после расщепления каждой операции модификации на соответствующую пару операций удаления и вставки, сортировки изменений по значениям ключа индекса и рекомбинирования изменений, если это оказывается уместным. Обобщенная версия методов, описанных в [GKK 01], реализуется Microsoft SQL Server, начиная с выпуска 7.0. Обновления в режиме "строка-за-строкой" наиболее уместны для небольших изменений, например, при оперативной обработке транзакций, в обновления в режиме "индекс-за-индексом" являются более эффективными для крупных обновлений, в особенности таких, которые затрагивают не только листовые страницы индексов, например, массовых вставок или удалений. Для обеспечения плавного снижения эффективности план выполнения может предписывать обработку обновления в режиме "строка-за-строкой" при ожидаемом небольшом множестве обновлений, а при реальном выполнении можно обнаружить, что множество обновлений является гораздо более крупным, и переключиться на режим выполнения "индекс-за-индексом".

Описанные выше буферизованные вставки с использованием разделенных B-деревьев представляют собой третий способ применению обновлений к индексу на основе B-дерева, и тем самым обеспечивают еще один вариант плавного снижения эффективности. Обработка в режиме "строка-за-строкой", нацеленная на новый раздел, сулит лучшие модель ввода/вывода и производительность, чем те, которые обеспечиваются при обработке в режиме индекс-за-индексом, хотя при этом сохраняется недостаток неоптимальности индексов. Для обеспечения плавного снижения эффективности план выполнения операции обновления может предусматривать выполнение обновления в режиме "строка-за-строкой" в главном разделе до тех пор, пока не выяснится реальный размер множества обновлений, а затем переключение на буферизованные или разделенные обновления. Хотя можно реализовать плавное снижение эффективности путем смены режима "строка-за-строкой" на режим "индекс-за-индексом" с использованием условного выполнения в традиционном плане выполнения запроса, назначение индексным изменениям нового идентификатора раздела (искусственного лидирующего столбца ключа) является гораздо более простым действием и содействует повышению эффективности обновлений.
5. Дифференциальные файлы и индексы

Хотя методы, обсуждавшиеся в предыдущем разделе, пригодны для буферизации вставок, они не позволяют буферизовать другие операции обновления, т.е. модификации и удаления. Однако, эти методы можно расширить путем адаптации к B-деревьям идей из области дифференциальных файлов [SL 76]. Интересно, что некоторые адаптации B-деревьев для версионного управления параллельным выполнением операций и для исторических индексов являются очень похожими, включая логику, требуемую в течение обработки запросов.

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

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

Другими словами, подобно буферизованным вставкам, буферизованные модификации и удаления в дифференциальных B-деревьях жертвуют эффективностью запросов в пользу эффективности обновлений. Преобразование случайных вставок, удалений и модификаций по одной записи в операции добавления с использованием крупных последовательных операций записи обещает повышение пропускной способности обработки обновлений на два порядка.

Конечно, имеется также взаимосвязь между дифференциальными файлами и реализацией версионной изоляции на основе мгновенных снимков (multi-version snapshot isolation). Однако основное различие состоит в том, что в дифференциальных файлах сохраняется самая старая версия плюс набор "дельт" в прямом времени, а реализации версионной изоляции на основе мгновенных снимков обычно ориентированы на обеспечение доступа к наиболее свежим версиям, т.е. в них обычно сохраняется наиболее свежая версия плюс набор "дельт" в обратном времени.
6. Гарантии транзакций

Еще одна возможность улучшения производительности может основываться на ослаблении транзакционных гарантий для некоторых индексов, в частности, для избыточных некластеризованных индексов. Мы рассмотрим три метода: ослабление разделения индивидуальных транзакций за счет пакетирования; ослабление гарантий в случае системных сбоев; запись изменений только в журнал транзакции без попыток их применения к индексу с неявной опасностью того, что попытка применения таких изменений в более позднее время может закончиться неудачей. Очевидно, что эти методы применимы только в тех случаях, когда оставшиеся транзакционные гарантии являются достаточно строгими для имеющихся приложений.
6.1 Операции только над журналом

Если операции поддержки индекса не могут справиться с потоком обновлений, может быть, их удастся хотя бы зарегистрировать в журнале транзакций. В этом случае можно было бы помещать в журнал транзакции логические записи redo и впоследствии их применять, используя, по существу, восстановление redo (восстановление с повторным выполнением операций). Конечно, этот процесс нарушает несколько традиционных предположений о журнализации, например, что операции redo - это всегда физические операции, которые уже совершились, что операции r edo не могут заканчиваться неудачно и т.д. Однако в зависимости от приложения такие сбойные ситуации могли бы не являться катастрофой, и их можно было бы игнорировать, например, вполне допустимы ситуации, когда в приложении отслеживания движущихся средств некоторые отдельные отчеты о местоположении не могут быть записаны в исторический индекс. Ясно, что эту идею можно было бы применить, но ее детали требуют проработки, например, что сулит и гарантирует фиксация транзакции, как работают контрольные точки и что они гарантируют и т.д.
6.2 B-деревья без журнализации

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

Эту идею можно расширить следующим образом. Если индекс является действительно избыточным, подобно традиционному кэшу, и если допустимо разрушение индекса в течение восстановления носителя данных или системы, то все операции над этим индексом могут не журнализоваться, т.е. журнализуется только распределение памяти. Это включает и пользовательские транзакции, выполняемые после завершения создания индекса. Откат пользовательской транзакции управляется виртуальными журнальными записями, подсоединенными к описателю транзакции в основной памяти, аналогично виртуальным журнальным записям, которые используются в других методах управления транзакциями [G 04, GK 85]. Детали этого метода в настоящее время не опубликованы, но для некоторых приложений этот метод кажется вполне обещающим, в частности, для временных кэшей и индексов, существующих только в основной памяти.
6.3 Пакетные обновления

Наконец, можно группировать несколько операций обновления и транзакций в одну транзакцию. Однако кажется важным отделять семантику транзакций от структуры данных. Например, как описывалось выше, много небольших пользовательских транзакций могут производить вставки в один буфер, оставляя на последующую системную транзакцию (или последовательность небольших системных транзакций) работу по вливанию этих вставок в основное B-дерево. Другими словами, для достижения делаемого улучшения производительности и масштабируемости может не требоваться или не быть полезным модификация или ослабление границ и семантики пользовательских транзакций.
7. Резюме и заключение

Таким образом, если согласиться с ухудшением производительности при обработке запросов на порядок, например, за счет поиска в нескольких разделах, то производительность операций обновления и вставки можно поднять не менее чем на два порядка, например, путем преобразования операций вставки в операции дополнения и преобразования случайных одиночных записей в крупные последовательные записи в заново выделяемое дисковое пространство. Имеются и менее драматические компромиссы. Хотя в большинстве приложений выполняется больше запросов, чем операций обновления, и это приводит к организации базы данных, ориентированной на оптимизацию запросов, некоторые приложения (например, отслеживание движущихся объектов) больше заняты записью изменений, чем предоставлением ответов на запросы (например, о текущей позиции объекта). Для таких приложений уже имеются многочисленные методы, которые осталось реализовать поставщикам баз данных. Некоторые из этих методов доступны даже для пользователей баз данных, например, введение искусственного лидирующего столбца ключа в видимой схеме базы данных и использование его для создания индекса и, возможно, для его поддержки при выполнении массовых операций [G 03b].

В этом обзоре мы старались перечислить разнообразные возможные методы. Новые методы включают B-деревья, оптимизированные для записи, разделяемые B-деревья, в которых разделы используются для буферизации вставок или всех модификаций в манере дифференциальных файлов, и B-деревья без журнализации. Однако наша интуитивная оценка нуждается в подтверждении с использованием прототипирования или даже производственной реализации.

Очевидно наличие многочисленных открытых вопросов, включая вопрос о дополнительных или улучшенных компромиссах между эффективностью обновлений и запросов; сравнение эффективности описанных методов на основе подходящего тестового набора; адаптация описанных методов для других индексных структур, таких как UB-деревья и R-деревья, а также материализованные и индексные представления; интеграция обработки запросов и операций обновления с операциями поддержки базы данных, такими как проверка согласованности, дефрагментация и обновление статистики для оптимизации запросов. Может быть, этот обзор послужит стимулированию и структуризации таких исследований.
8. Благодарности

Тео Хардер (Theo Härder) и Берндхард Митшанг (Bernhard Mitschang) читали предварительные, неполные варианты статьи и сделали несколько очень полезных замечаний.
9. Литература

[A 96] Lars Arge: Efficient External-Memory Data Structures and Applications. University of Aarhus (Denmark), 1996. http://www.brics.dk/DS/96/3/BRICS-DS-96-3.pdf
[ADR 03] Dave Anderson, Jim Dykes, Erik Riedel: More Than an Interface - SCSI vs. ATA. Conference on File and Storage Technology (FAST), March 2003. http://www.seagate.com/content/docs/pdf/whitepaper/ D2c_More_than_Interface_ATA_vs_SCSI_042003.pdf
[AHV 02] Lars Arge, Klaus Hinrichs, Jan Vahrenhold, Jeffrey Scott Vitter: . Algorithmica 33(1): 104-128 (2002). http://www.cs.duke.edu/~jsv/Papers/AHV99.bulk.pdf
[G 03a] Goetz Graefe: Sorting and Indexing with Partitioned B-Trees. Conference on Innovative Data Systems Research, 2003. http://www-db.cs.wisc.edu/cidr/cidr2003/program/p1.pdf
[G 03b] Goetz Graefe: Partitioned B-trees - a user's guide. Datenbanksysteme f?r Business, Technologie und Web (BTW) 2003: 668-671. http://doesen0.informatik.uni-leipzig.de/proceedings/paper/IP11.pdf
[G 04] Goetz Graefe: Write-Optimized B-Trees. VLDB Conference 2004: 672-683. http://www.vldb.org/conf/2004/RS18P2.PDF
[GK 85] Dieter Gawlick, David Kinkade: Varieties of Concurrency Control in IMS/VS Fast Path. IEEE Data Eng. Bulletin 8(2): 3-10 (1985).
[GKK 01] Andreas G?rtner, Alfons Kemper, Donald Kossmann, Bernhard Zeller: Efficient Bulk Deletes in Relational Databases. IEEE ICDE 2001: 183-192. http://www.hpl.hp.com/techreports/tandem/TR-85.6.pdf
[JNS 97] H. V. Jagadish, P. P. S. Narayan, S. Seshadri, S. Sudarshan, Rama Kanneganti: Incremental Organization for Data Recording and Warehousing. VLDB Conference 1997: 16-25 http://www.vldb.org/conf/1997/P016.PDF
[LJB 95] Harry Leslie, Rohit Jain, Dave Birdsall, Hedieh Yaghmai: Efficient Search of Multi-Dimensional B-Trees. VLDB Conference 1995: 710-719. http://www.vldb.org/conf/1995/P710.PDF
[MOP 00] Peter Muth, Patrick E. O'Neil, Achim Pick, Gerhard Weikum: The LHAM Log-Structured History Data Access Method. VLDB J. 8(3-4): 199-221 (2000). http://www.cs.umb.edu/~poneil/LHVLDBJ.pdf
[OCG 96] Patrick E. O'Neil, Edward Cheng, Dieter Gawlick, Elizabeth J. O'Neil: The Log-Structured Merge-Tree (LSM-Tree). Acta Inf. 33(4): 351-385 (1996). http://www.cs.umb.edu/~poneil/lsmtree.ps
[OD 89] John K. Ousterhout, Fred Douglis: Beating the I/O Bottleneck: A Case for Log-Structured File Systems. Operating Systems Review 23(1): 11-28 (1989). http://www.ugrad.cs.ubc.ca/~cs415/X/Info/papers-2003/ousterhout88beating.ps
[PGK 88] David A. Patterson, Garth A. Gibson, Randy H. Katz: A Case for Redundant Arrays of Inexpensive Disks (RAID). ACM SIGMOD Conference 1988: 109-116. http://www.cs.cmu.edu/~garth/RAIDpaper/Patterson88.pdf
[SL 76] Dennis G. Severance, Guy M. Lohman: Differential Files: Their Application to the Maintenance of Large Databases. ACM Trans. Database Syst. 1(3): 256-267 (1976).
[U 84] David Ungar: Generation Scavenging: A Non-Disruptive High Performance Storage Reclamation Algorithm. Software Development Environments (SDE), ACM SIGPLAN Notices 19(5): 157-167 (1984).
[VSW 97] Jochen Van den Bercken, Bernhard Seeger, Peter Widmayer: A Generic Approach to Bulk Loading Multidimensional Index Structures. VLDB Conference 1997: 406-415. http://www.vldb.org/conf/1997/P406.PDF
[WKH 00] Till Westmann, Donald Kossmann, Sven Helmer, Guido Moerkotte: The Implementation and Performance of Compressed Databases. ACM SIGMOD Record 29(3): 55-67 (2000). http://www.dbis.ethz.ch/research/publications/sigrec00.pdf

Советы по первичной настройке FreeBSD для новичков"

www.interface.ru

Идея этой статьи возникла в тот момент, когда я впервые установил FreeBSD 6.1. Ситуация была такова, что я сидел перед компьютером, глядя на черный экран и не понимая, что же вообще делать. Наверное, со стороны смотрелось забавно… Данный материал будет точнее характеризовать как не статью, а мануал из разряда "Заметки начинающего пользователя". Соответственно, и ориентирован он на начинающих пользователей, которые, как и я в свое время, не знают, что и как им делать в новой операционной системе.

Примечания:

  1. Я не буду подробно расписывать то, что у вас будет написано на экране. Там обо всем сообщают на английском, а его почти все знают. Если вы не знаете - вооружитесь словариком.
  2. Я не претендую на звание "Автор года" - я просто хочу кому-нибудь помочь. Не знаю, помогу ли, но так я не буду чувствовать себя ненужным.
  3. Вместо слов "От рута" или "С правами суперпользователя" я буду ставить символ "#" перед командой. В случаях, где стоит "$", эти прав не нужны.



1) Пользователи и права


Если вы не забыли добавить пользователя в процессе установки, то можете сразу перейти к пункту "б)".


а) Чтобы не рисковать, постоянно находится в системе под root'ом не рекомендуется, ибо малейшая оплошность может привести к серьезным последствиям. Для этого существуют пользовательские учетные записи, с которыми и надлежит работать. Если же у вас появляется необходимость, например, изменить какой-нибудь системный конфигурационный файл, существует команда su, которая (после ввода пароля от root) предоставляет права суперпользователя для текущего терминала.

Итак, чтобы создать пользователя, существует несколько вариантов. Мы остановимся на двух самых простых: через меню sysinstall и через команду adduser.

Первый способ:

# sysinstall
-> Configure -> User management -> User.

Все просто: заполняем стандартную форму (имя, пароль, реальное имя, адрес домашнего каталога, группа). (Чтобы пропустить выполнение пункта "б)", можно в поле "Group" вписать wheel, хотя перед этим рекомендуется почитать, к чему это приводит.)

Второй способ:

# adduser

Далее предстоит ответить на несколько вопросов системы. Тоже все просто.


б) Группа wheel дает вам возможность выполнять команды от имени суперпользователя (root). Это сделано для того, чтобы ускорить выполнение этих самых команд: в такой случае не нужно каждый раз начинать новый сеанс, а достаточно воспользоваться командой su примерно так:

$ su
Password:
# ls


Как вы понимаете, последняя команда (ls) выполняется уже с правами суперпользователя.
Чтобы получить доступ к выполнению этой команд,ы достаточно включить себя в группу wheel. Делается это редактированием файла /etc/group:

# ee /etc/group

Откроется стандартный текстовый редактор ee, в первой строке (возможно, и не в первой) будет запись:

wheel:*:0:root

Ставим запятую после слова root и вписываем имя нашего пользователя. Например, так (для пользователя joe):

wheel:*:0:root,joe

Теперь заходим в систему под своим именем и больше никогда не входим с логином root.


2) Настройка и запуск иксов (X-сервера X.Org)


Тут тоже ничего сложного нет. Единственная проблема в том, что в процессе установки FreeBSD Xorg не конфигурируется. Поэтому нам предстоит это сделать самим. Итак:

# Xorg -configure

Запускается конфигурационный скрипт. Он создаст файл xorg.conf.new и сохранит его в каталоге /root.

# Xorg -configure ~/xorg.conf.new

Проверяется конфигурация из нового сгенерированного файла (/root/xorg.conf.new). Если все правильно, появится серый экран и курсор мыши (крестик). Нажимаем комбинацию клавиш ++ ("экстренное" завершение работы X-сервера).

# cp ~/xorg.conf.new /etc/X11/xorg.conf

Новый конфигурационный файл копируется на место стандартного системного конфига Xorg.

Теперь надо определить менеджер окон по умолчанию. Это делается просто: создается файл .xinitrc в домашнем каталоге пользователя (для которого и определяется оконный менеджер по умолчанию) и в него помещается строку вида exec <запускающий_скрипт>.

Например, для текущего пользователя определение KDE как оконного менеджера по умолчанию делается так:

$ echo "exec startkde">~/.xinitrc

Теперь можно выполнить команду startx и оказаться в графической оболочке.


3) Локализация (русификация системы)


Многие считают, для русификации Linux достаточно поставить пакет локализации используемого оконного менеджера, но на самом деле это, конечно, не так. Далее я приведу порядок действий для локализации FreeBSD в CP1251. Это стандартная кодировка, используемая в операционной системе Windows. У меня на компьютере FreeBSD и Linux установлена и Windows XP, поэтому, чтобы они все друг друга "понимали", все приводится в CP1251 (строго говоря, это вовсе не обязательное условие для организации такого "понимания" - прим. Д. Шурупова) . К тому же, нет проблем, например, с тегами .mp3-файлов, записанных в Windows.

Редактируем /etc/login.conf:

russian/Russian Users Accounts:
:charset=CP1251:
:lang=ru_RU.CP1251:
:tc=default:


Далее исправляем конфигурационные файлы используемых командных оболочек.
Для bash (Bourne-Shell) в файл /etc/profile вписываем:

 LANG=ru_RU.CP1251; export LANG
LC_ALL=ru_RU.CP1251; export LC_ALL
MM_CHARSET=CP1251; export MM_CHARSET


Для csh (или tcsh) в файл /etc/csh.login вписываем:

 setenv LANG ru_RU.CP1251
setenv MM_CHARSET CP1251


Для того, чтобы не только читать, но и писать в CP1251, качаем 2 файла: ru.cp1251.kbd и win2cpp866.scm. Первый копируем в /usr/share/syscons/keymaps/, второй - в /usr/share/syscons/scrnmaps/.

Теперь в /etc/rc.conf пишем:

 keymap=ru.cp1251
scrnmap="win2cpp866"
font8x16=cp866-8x16
font8x14=cp866-8x14
font8x8=cp866-8x8


После запуска KDE устанавливаем стандартные Windows-шрифты через центр управления KDE.

Windows-разделы жесткого диска (FAT32) легко монтируются после редактирования файла /etc/fstab. В него необходимо добавить строку вида:

/dev/ad1s1 /mnt/win_d msdosfs rw,auto,-DCP866,-Lru_RU.CP1251 0 0

Где /dev/ad1s1 - имя устройства нужного раздела жесткого диска, /mnt/win_d - точка монтирования (где будет доступен этот раздел жесткого диска после монтирования), msdosfs - тип файловой системы.


4) Настройка звука


Для начала рекомендую посетить http://www.freebsd.org/releases/6.2R/hardware-i386.html - на этой странице можно найти информацию обо всем поддерживаемом оборудовании на данный момент. Как не трудно догадаться, нужно найти свою аудиокарту и запомнить имя драйвера для нее.

После этого в файл /boot/loader.conf нужно добавить строку типа:

snd_cmi_load="YES"


Где вместо snd_cmi нужно указать название своего драйвера. После перезагрузки в системе появится звук.


5) Рихтовка xorg.conf


а) Возможно, колесо мышки (скролл) не будет работать. В этом случае необходимо открыть конфигурационный файл Xorg (/etc/X11/xorg.conf), найти секцию мышки и привести ее примерно к следующему виду:

Section "InputDevice"
Identifier "Mouse0"
Driver "mouse"
Option "Protocol" "auto"
Option "Device" "/dev/sysmouse"
Option "ZAxisMapping" "4 5 6 7"
EndSection


Моя оптическая беспроводная мышь от Logitech работает отлично.


б) Раскладки клавиатуры и параметры переключения редактируются там же, только в секции клавиатуры:

Section "InputDevice"
Identifier "Keyboard0"
Driver "kbd"
Option "XkbModel" "pc105"
Option "XkbLayout" "us,ru(winkeys)"
Option "XkbRules" "xorg"
OPtion "XkbOptions" "grp:ctrl_shift_toggle,grp_led:scroll"
EndSection


В данном примере представлено переключение по + и включение индикатора Scroll Lock, когда активирована русская раскладка.


6) Установка программ


В FreeBSD предусмотрено 3 основных типа установки нового программного обеспечения.

  1. Из исходников.
    Нужно скачать архив (вероятно, им будет тарболл, т.е. файлы типа *.tar, *.tar.gz или *.tar.bz2) и распаковать его (для .tar: tar xvf xxx.tar; для .tar.gz: tar xzvf xxx.tar.gz; для .tar.bz2: tar xjvf xxx.tar.bz2). После этого установка вкратце выполняется так:

    $ ./configure
    $ make
    # make install


    (Последнюю операцию, как видно, необходимо выполнять с правами root.)
  2. Из пакетов.
    Для работы с ними используются программы pkg_add, pkg_delete и pkg_info. Пакеты доступны на FTP-сервере FreeBSD (ftp://freebsd.org/). Программы работают так:

    # pkg_add <имя_пакета>
    - устанавливает пакет.

    # pkg_delete <имя_пакета>
    - удаляет установленный пакет из системы.

    # pkg_info <имя_пакета>
    - выводит информацию об установленном пакете.
  3. Из портов.
    Коллекция портов FreeBSD может быть установлена во время инсталляции системы или в любое время с помощью команды sysinstall. Для портов используется несколько источников их получения (например: FTP-сервер, привод CD-ROM и т.д). Разумеется, предпочтительным вариантом является FTP, но это не всегда возможно. По умолчанию порты ставятся в /usr/ports. Чтобы найти нужное приложение, достаточно выполнить специально предусмотренный поиск:

    $ cd /usr/ports
    $ make search name=<имя_приложения>


    В этом случае программа даст вам расположение и название каталога искомого пакета, а также информацию о том, что надо, чтобы его установить (зависимости). Если в процессе установки чего-то не будет хватать, программа сама поставит все, что ей надо.

    Итак, допустим, мы устанавливаем nmap:
    $ cd /usr/ports
    $ make search name=nmap
    Port: nmap-4.11
    Path: /usr/ports/security/nmap
    Info: Port scanning utility for large networks
    Maint: daniel@roe.ch
    B-deps: gettext-0.14.5_2 gmake-3.81_1 libiconv-1.9.2_2 pcre-6.7
    R-deps: pcre-6.7
    WWW: http://www.insecure.org/nmap/
    $ cd security/nmap
    # make install clean

    Вот и все. Спустя 10 минут я получил в свое распоряжение готовую рабочую программу.

понедельник, 28 сентября 2009 г.

Ubuntu WiMAX, WiFi И конечно же моя Lenovo S10-2

В обще опять я мучал свой бук. Результат это корректировки мануалов по WiMAX и WiFi.

И так имеем, Ubuntu 9.04 Ядро 2.6.28-15 (после всех обновлений).

Стартуем WiFi
Стартуем WiMAX

Все...

з.ы. Ищу инструкцию по прикручиванию Переключения WiMAX|WiFi в NetworkManager'е

воскресенье, 20 сентября 2009 г.

Суждения об информационной безопасности мудреца и учителя Инь Фу Во, записанные его учениками

Николай Николаевич Федотов,
главный аналитик компании InfoWatch;
fnn@fnn.ru
Суждения об информационной безопасности мудреца и учителя Инь Фу Во[1], записанные его учениками

Глава 1. О работниках

1.1
Однажды Сисадмин пожаловался Учителю:
– Мы выдали всем нашим пользователям индивидуальные пароли, а они не желают хранить их в тайне. Записывают на листочках и приклеивают к мониторам. Что нам делать? Как заставить их?
Инь Фу Во спросил:
– Сначала скажи, почему они это делают.
Сисадмин подумал и ответил:
– Может быть, они не считают пароль ценным?
– А разве пароль сам по себе ценный?
– Не сам по себе. Ценна информация, которая под паролем.
– Для кого она ценна?
– Для нашего предприятия.
– А для пользователей?
– Для пользователей, видимо, нет.
– Так и есть, – сказал Учитель. – Под паролем нет ничего ценного для наших работников. Надо, чтоб было.
– Что для них ценно? – спросил Сисадмин.
– Догадайся с трёх раз, – рассмеялся Учитель.
Сисадмин ушёл просветлённый и сделал на корпоративном портале персональные странички для всех работников. И на тех страничках был указан размер зарплаты. Узнав об этом, все пользователи забеспокоились о своих паролях. На другой день в курилке обсуждали размер зарплаты Главбуха. На третий день ни у кого не было видно листочков с паролями.

1.2
Однажды Сисадмин пожаловался Учителю:
– Наш Техдиректор не хочет выполнять требования безопасности. Всем положено иметь антивирус, а он не ставит. Как на него повлиять?
– Попробуй его убедить, – сказал Инь Фу Во.
Сисадмин ушёл убеждать, но вскоре вернулся разочарованным:
– Я не смог убедить его, Учитель.
– Почему так случилось? – спросил Инь Фу Во и сразу же заметил. – Но только ответь честно, без пристрастия и обиды.
Сисадмин подумал, опустил глаза и тихо сказал:
– Наверное потому, что он знает об информационной безопасности больше меня.
– Ну, если Техдиректор знает больше тебя, что совсем не удивительно, – заметил Учитель, – то ему виднее, где нужен антивирус, а где нет.
– А как же тогда Политика безопасности! – воскликнул Сисадмин.
– А кто писал эту Политику?
Сисадмин потупился и сказал:
– Я.
Учитель мудро промолчал, и Сисадмин ушёл просветлённый.

1.3
Однажды в курилке пользователи стали возмущаться, что Сисадмин закрыл всем доступ на сайт "Одноклассники". Инь Фу Во услышал об этом и нахмурился.
– Почему ты закрыл людям доступ? – спросил он у Сисадмина, когда они после перекура пили кофе.
– Потому что такие сайты не нужны для работы.
– А курить нужно для работы?
– Вообще-то нет...
– А кофе пить?
– Ну...
– Ну тогда, – сказал Учитель, – открой людям доступ.

1.4
Однажды Сисадмин захотел установить в локальной сети сканер безопасности.
Инь Фу Во сказал:
– Не делай этого.
– Но почему?
– В нашей сети сто компьютеров. Сканер найдёт тебе по две-три уязвимости на каждом из них.
– Ну, да, найдёт...
– А что ты будешь делать с этими уязвимостями?
Сисадмин задумался и ничего не ответил Учителю. Сканер безопасности он не поставил.

1.5
Однажды Сисадмин пожаловался Учителю:
– Антивирус не помогает. Установлен на всех рабочих станциях и обновляется дважды в день. А всё равно каждую неделю кто-то заражается и теряет данные.
Инь Фу Во с сожалением покачал головой.
– Надо что-то делать, – продолжал Сисадмин.
Учитель слегка покивал. Сисадмин спросил:
– Что лучше: поставить всем новый многоядерный антивирус или поднять централизованную систему бэкапа?
Инь Фу Во ответил:
– Проведи курсы для пользователей.

1.6
Однажды Директор решил взять на работу Эникейщика. Инь Фу Во нашёл кандидата, поговорил с ним и остался доволен. Он сказал Директору:
– Этот человек обратил свои помыслы к учёбе. Возможно, из него получится достойный работник.
Но начальник службы безопасности стал возражать:
– У этого человека была судимость. Его нельзя брать на службу.
Тогда Инь Фу Во спросил:
– Как вы узнали об этом?
– У меня есть связи.
Почтенный Инь помрачнел лицом и сказал Директору:
– Какой из двух работников более добродетельный? Первый совершил преступление и понёс заслуженное наказание, которое могло его вразумить. Второй совершил преступление сам, подбил на совершение преступления государственного служащего, при этом не чувствует за собой вины и никогда не понесёт наказания? Какой из этих двух достоин выдвижения?
Начальник службы безопасности молча встал и вышел.

1.7
Однажды Директор спросил Инь Фу Во про защиту от внутренних угроз. Тот сказал:
– Во внешнем мире есть сто человек, которые хотели бы заполучить конфиденциальную информацию из вашей сети. И есть пять, которые способны это сделать. Но эти сто вряд ли встретятся с этими пятью.
Ещё Учитель сказал:
– А в вашей внутренней сети есть пять пользователей, которые хотели бы заполучить конфиденциальную информацию. И есть сто, которые могут это сделать. И они уже встретились.

1.8
Однажды Директор пришёл к защитнику Иню за советом. Директор сказал:
– Я хотел бы заставить всех пользователей соблюдать строгие правила безопасности. Но тогда они обидятся на меня и станут хуже работать. Я хотел бы дать пользователям полную свободу. Но тогда они нахватают вирусов, разгласят конфиденциальную информацию, и наш бизнес пострадает. Как мне найти золотую середину?
Инь Фу Во ответил:
– Высота забора равна высоте самого низкого участка. Прочность цепи равна прочности слабейшего звена. Заставь самых нерадивых из пользователей соблюдать те правила безопасности, которые без принуждения соблюдают все остальные.
– Как просто! – воскликнул Директор и ушёл просветлённый.

1.9
Директор спросил почтенного Иня:
– Мне предлагают купить систему защиты от несанкционированного доступа. Стоит ли она денег, которые за неё просят?
Инь Фу Во в ответ спросил:
– Сколько у вас было случаев несанкционированного доступа за последние три года?
– Ни одного, – ответил Директор.
– А сколько ноутбуков и флэшек потеряли ваши работники за это время?
– Два ноутбука, – ответил Директор, – а флэшки никто не считал.
– Почему бы вместо этого не купить систему для шифрования информации на ноутбуках и флэшках? – сказал Инь Фу Во.

1.10
Однажды Директор спросил почтенного защитника Иня про защиту от внутренних угроз. Тот сказал:
– Внутренний враг бывает злонамеренный и неосторожный. Неосторожный враг подобен каплям дождя, что многочисленны и летят по воле ветра. От дождя легко заслониться зонтом. Злонамеренный враг подобен комару, который кусает в незащищённое место. Заслониться от него зонтом нельзя.
Директор ещё спросил:
– А какой инсайдер хуже, злонамеренный или неосторожный?
Инь Фу Во ответил:
– Нельзя так ставить вопрос. Оба они хуже.

1.11
Как-то Сисадмин спросил:
– Учитель, не желаете ли красивую картинку для вашего десктопа? У меня есть коллекция "обоев для рабочего стола" со звёздным небом и моральным законом.
– Почему ты думаешь, что мой нынешний "wallpaper" хуже? – спросил в ответ Инь Фу Во.
– Я не знаю, какая у вас картинка сейчас. Я никогда не видел вашего десктопа. У вас всегда открыто множество окон.
– Я тоже его никогда не видел, – сказал почтенный Инь. – Я работаю.

1.12
Однажды младший бухгалтер Ли Чан принесла в дар Инь Фу Во кактус.
– Поставьте его возле вашего монитора, Учитель, – сказала она. – Этот кактус защитит вас от вредного излучения.
– Отнеси его Сисадмину, – сказал Инь Фу Во. – Мне кактус не поможет.
– Почему? – обиженно спросила Ли Чан.
– Для него нет драйвера под FreeBSD, – ответил Учитель.

1.13
Однажды в офис забрёл продавец китайских товаров. Он ходил по комнате и пытался каждому что-нибудь продать.
Инь Фу Во сказал Сисадмину:
– Ты всегда говоришь и пишешь в блоге, что спамеров нужно убивать. Смотри, это – спамер.
– Это не тот спамер, – пробормотал Сисадмин.
– Ты даже охрану не позовёшь? – ехидно спросил Учитель.
Сисадмин ничего не ответил. Он увлечённо долбил по клавиатуре.

1.14
Сисадмин спросил Учителя:
– В статье написано, что любое усиление безопасности снижает лояльность работников. Это правда?
Инь Фу Во ответил:
– На самом деле усиление безопасности снижает удобство. Снижение удобства повышает усталость. Повышение усталости снижает добросовестность. А снижение добросовестности работников – это и есть то, чего следует избегать.
– Тогда что же такое лояльность? – спросил Сисадмин.
– "Лояльность", – усмехнулся Инь Фу Во, – это японцы выдумали, чтоб денег не платить.

1.15
Однажды Сисадмин пожаловался Учителю:
– Наш Директор совершенно не разбирается в ИТ. Я не могу ему объяснить. И его указания всегда такие нелепые.
Инь Фу Во ответил:
– Это нормальный порядок вещей. Его забота – люди и деньги. Твоя забота – техника и программы. Вы разговариваете на разных языках.
Сисадмин согласился и спросил:
– Как нам изучить язык друг друга?
– Это почти невозможно, – сказал Учитель. – Для этого Директору пришлось бы несколько лет проработать сисадмином, но он не пожелает. Для этого тебе пришлось бы несколько лет проработать руководителем, но тебя не допустят.
– Как же понять друг друга тем, кто говорит на разных языках? – спросил Сисадмин.
Инь Фу Во ответил:
– Специально для этих целей создан промежуточный язык, доступный обоим. Имя ему – "ГОСТ-17799".
– Как просто! – воскликнул Сисадмин и ушёл просветлённый.

Глава 2. О шифровании

2.1
Однажды Сисадмин спросил почтенного защитника Иня:
– Учитель, почему вы не пользуетесь ЭЦП?
– У надёжных средств ЭЦП нет сертификата. У сертифицированных нет удобства. У удобных нет надёжности, – ответил Инь Фу Во.

2.2
Инь Фу Во два дня настраивал VPN-туннель для своего персонального компьютера. Когда туннель заработал, Инь уселся, почтительно повернувшись лицом к югу, и стал читать свою френдленту.
– О, Учитель, – спросил его Сисадмин, – я не могу понять, зачем вам VPN?
– Ты разве не знаешь, что в VPN-туннеле весь трафик шифруется? – удивился Инь.
– Знаю. Но ваш туннель терминируется на обычном сервере в стране западных варваров. А далее весь ваш яшмовый трафик идёт по Сети в открытом виде.
– Сети нет дела до моего трафика, чего не скажешь о провайдере, – ответил Учитель. Видя, что Сисадмин не понял, он добавил. – Вот, например, ты доверил свои деньги банку.
Сисадмин кивнул.
– Но ты не можешь доверить все свои деньги собственной супруге, – продолжал мудрый Инь. – Почему? Потому что она может посчитать эти деньги своими. А с банком такого не случится.
Просветлённый Сисадмин ушёл поднимать себе VPN-туннель.

2.3
Сисадмин спросил Инь Фу Во:
– Правда ли, что любой шифр можно сломать?
Учитель ответил:
– Можно. Но не "шифр", а систему из четырёх: алгоритм, реализация[2], окружение[3] и оператор.
Сисадмин ещё спросил:
– А что из этих четырёх самое непрочное?
– Стыки между ними, – ответил Учитель.

2.4
Однажды к почтенному защитнику Иню обратился Следователь. Он спросил:
– Учитель, вы сможете расшифровать криптоконтейнер PGPdisk без знания пароля?
– Не смогу, – ответил Инь Фу Во. – И никто другой не сможет.
– Тогда горе мне! – воскликнул Следователь. – Тогда у меня нет доказательств.
– Увидев запертый замок, обычный человек желает заглянуть внутрь. Но благородный муж знает, что самое ценное лежит не под замком, – сказал Учитель. – Что именно вы желаете доказать?
– Нарушение авторских прав на программы.
– Оставьте криптоконтейнер в покое, – ответил Учитель. – Свидетельских показаний будет более чем достаточно.

2.5
Инь Фу Во сказал:
– Шифрование – это обмен большого секрета на маленький секрет. Этот маленький должен помещаться в голове. Когда пароль в голове держится хуже, чем в компьютере, шифрование не приносит пользы.

2.6
Однажды Сисадмин и инженер Чжа Вынь почтительно приблизились к Учителю, и Сисадмин сказал:
– Мой единочаятель Вынь утверждает, что во всех обнародованных криптографических программах есть "чёрный ход", сделанный спецслужбами. А я полагаю, что это не так. Кто из нас прав?
Инь Фу Во ответил:
– С этого вопроса начинают свой путь все инженеры и все сисадмины. Тот, кто утвердил для себя ответ на него, навсегда остановился и не может следовать Дао. Однако и пренебрегать этим вопросом тоже было бы не верно.
Потом почтенный Инь продолжил:
– У северных варваров есть такая легенда. Грозный и мудрый Тигр, царь зверей повелел Лису построить утиную ферму. Глупый Лис при строительстве сделал для себя тайный ход, чтобы воровать государственных уток. И, конечно же, сразу попался. Тигр велел казнить обманщика и таким образом сэкономил деньги на строительство. Не думай, драгоценный Вынь, что спецслужбы подобны глупому Лису. Но и ты – отнюдь не мудрый Тигр, царь зверей.
Ученики ушли просветлённые. Сисадмин после этого вообще отказался от шифрования своего диска. А инженер Чжа Вынь сделал криптоконтейнер внутри криптоконтейнера.

2.7
Сисадмин желал подобрать себе стойкий пароль для централизованной авторизации через radius-сервер. Он обратился за советом к Инь Фу Во.
– Как вы думаете, Учитель, пароль "史達林格勒戰役" стойкий?
Нет, – ответил мастер Инь, – это словарный пароль.
– Но такого слова нет в словарях...
– "Словарный" означает, что это сочетание символов есть в wordlists, то есть "словарях" для перебора, которые подключаются к программам криптоанализа. Эти словари составляются из всех сочетаний символов, которые когда-либо встречались в Сети.
– А пароль "Pft,bcm" подойдёт?
– Вряд ли. Он тоже словарный.
– Но как же? Это же...
– Введи это сочетание в Гугле – и сам увидишь.
Сисадмин защёлкал клавишами.
– О, да. Вы правы, Учитель.
Через некоторое время Сисадмин воскликнул:
– Учитель, я подобрал хороший пароль, которого не может быть в словарях.
Инь Фу Во кивнул.
– Я ввёл его в Гугле, – продолжал Сисадмин, – и убедился, что в Сети такого сочетания нет.
– Теперь есть.

2.8
Однажды инженер Чжа Вынь обратился к Учителю:
– Один достойный уважения человек сказал мне, что шифровать электронную почту неправильно. Поскольку честному человеку нечего скрывать, шифрованная переписка неизбежно привлечёт внимание Охранительного ведомства. Учитель, что вы об этом думаете?
Инь Фу Во ответил:
– Благородный муж имеет чувство стыдливости. Он закрывает одеждой свою наготу. Вовсе не потому, что лицезрение другими принесёт ему ущерб. Но такова воля Неба, и таков ритуал. Честному человеку есть, что скрывать.

2.9
Инженер Чжа Вынь долго сидел над проектом, а потом пожаловался Учителю:
– Не могу примирить бэкап и шифрование. Всё время одно мешает другому.
Инь Фу Во ответил:
– Они непримиримы. Шифрование защищает конфиденциальность. Резервное копирование защищает доступность. Конфиденциальность и доступность – это разные защиты.
– Но как же быть тогда? – спросил Чжа Вынь. – Здесь нужна и конфиденциальность, и доступность.
– Пусть одна будет внутри другой. Пусть первая не знает про вторую.
Инженер Чжа Вынь спросил Учителя:
– Что значит резервирование внутри шифрования?
– Пусть все файловые системы будут зашифрованы, а файлы будут бэкапиться с одной на другую, – ответил Инь Фу Во.
Ещё Чжа Вынь спросил:
– Что значит шифрование внутри резервирования?
– Делай резервную копию криптоконтейнера как файла, – ответил Инь Фу Во.

2.10
Директор сказал:
– Зачем нам шифровать содержимое дисков? Зачем нам VPN? У нас нет противозаконной информации.
Мудрый Инь Фу Во ответил:
– Безгрешность – не результат праведности, а результат наивности.

Глава 3. Об этике

3.1
Сисадмин спросил:
– Учитель, можно ли блэкхолить[4] трафик в случае DoS-атаки?
– Иногда можно, – ответил Инь Фу Во.
– А в каких случаях?
– В каких случаях доктор может причинить вред своему пациенту? – спросил в ответ Учитель.
– Наверное, когда предотвращённый вред превышает вред причинённый, – ответил Сисадмин, подумав.
– Теперь спрошу другое, – продолжил Учитель. – В каких случаях доктор может причинить вред постороннему человеку?
– Я не знаю таких случаев, – ответил Сисадмин.
– Вот теперь ты готов блэкхолить нужный трафик, – кивнул Учитель.
И Сисадмин ушёл просветлённый.

3.2
Инь Фу Во, проходя по офису, взглянул на мониторы сотрудников. Пробравшись на своё рабочее место, он изрёк:
– Наш инженер Чжа Вынь сейчас настраивает QOS[5]. Он думает, что взаимодействует с техникой, а на самом деле – с людьми. Наша бухгалтер Ли Чан сейчас чатится по ICQ. Она думает, что общается с человеком, а на самом деле – с программой.
– Учитель, а почему ваш монитор развёрнут экраном к стенке? – спросила Ли Чан.
– Чтобы всё время видеть людей, – ответил Учитель.

3.3
Инженер Чжа Вынь хотел работать в отделе информационной безопасности. Инь Фу Во сказал ему:
– Ты ещё не готов. Ты представляешь себя воином сети. А нам нужен доктор сети.

3.4
Однажды инженер Чжа Вынь сообщил:
– Я нашёл уязвимость в программе «Лин». Что вы об этом думаете, Учитель?
– Надо сообщить Производителю.
Через некоторое время Чжа Вынь снова пришёл к почтенному защитнику Иню.
– Я написал об уязвимости Производителю. Мне ответили, что закроют уязвимость только в следующей версии. Она выйдет через полгода.
Инь Фу Во помрачнел:
– Напиши им, что мы опубликуем эту уязвимость ровно через две недели.
Через три дня вышел патч к программе «Лин».
– А если бы они не выпустили патч? – спросил Сисадмин Учителя. – Вы бы позволили Чжа Выню опубликовать найденную уязвимость?
Инь Фу Во мягко улыбнулся и сказал:
– Нет. Дао информационной безопасности тем и прекрасен, что по нему нельзя идти в одиночку. Как только ты опередил других, другие ускоряют шаг. Как только ты оторвался от других, ты покинул Дао.

3.5
Прочитав статью в журнале, Учитель заметил:
– Человек не есть «слабейшее звено в информационной безопасности». Человек вообще не есть звено.

3.6
Однажды Сисадмин спросил:
– Учитель, вы всегда говорите, что надо делиться знаниями в области защиты информации со всеми, кто пожелает учиться.
Инь Фу Во кивнул.
Сисадмин продолжал:
– Но ведь бывают и опасные знания! Особенно знания в информационной безопасности.
Инь Фу Во воскликнул:
– Опасные знания?! Знание опасно для того, кто им НЕ обладает.

3.7
Однажды Техдиректор прислал почтенному Иню вопрос по электронной почте. Учитель ответил на него, поместив в письмо фрагмент конфига. Кроме конфига и подписи в ответе ничего не было.
Сисадмин, который получил копии обоих писем, спросил:
– Учитель, почему вы поместили в письмо только несколько команд, но не добавили ни единого слова?
Инь Фу Во в ответ процитировал своего учителя:
– «Я не хочу говорить. Разве Небо говорит? А между тем времена года исправно сменяют друг друга»

3.8
Инженер Чжа Вынь спросил:
– Следует ли при защите информации стремиться к возмездию? Или мы должны использовать только пассивную защиту?
– Смотря, кто противник, – ответил Учитель. – Если тебя кусает комар, его следует прихлопнуть. Если на тебя капает дождь, следует прикрыться зонтом.
– Я понял. Во многих случаях инцидент безопасности – это стихийная сила. И в нём никто не виноват.
Инь Фу Во покачал головой:
– Не совсем. В том, что пошёл дождь, действительно никто не виноват. Но если случилось землетрясение, и разрушилось здание, которое должно было устоять, то здесь есть виноватый. И его накажут.
Чжа Вынь ушёл в задумчивости.

3.9
Учитель сказал:
– Знание в ИБ подобно оружию. Неужели боец откажется поделиться своим оружием с другим, который хочет защищать свою землю? А ведь мы – в состоянии войны.

3.10
Однажды Инь Фу Во заблокировал на межсетевом экране несколько IP-адресов. Сисадмин спросил его о причинах. Учитель сказал:
– На всякий случай. Я увидел необъяснимое поведение программ.
– Может быть, это просто глюк? – предположил Сисадмин.
Инь Фу Во ответил:
– Каждый из нас иногда сталкивается с необъяснимым. Не поняв сути, каждый действует по-своему. Сисадмин – камлает с бубном. Инженер Чжа Вынь – пьёт пиво и переинсталлирует систему. А я – начинаю подозревать действия коварного врага.
Инженер Чжа Вынь, услышав разговор, заметил:
– Это похоже на паранойю.
– Паранойя входит в число моих должностных обязанностей, – ответил Учитель.

3.11
Однажды к почтенному защитнику Иню пришёл Хакер.
– О, мудрый Инь, – сказал он, – обучи меня своему искусству.
– Перед этим тебе придётся пройти испытание. Взломай вот этот компьютер, – и Инь Фу Во написал на листке IP-адрес.
– Но это же мой собственный компьютер! – удивился Хакер.
– Именно так, – подтвердил Учитель. – Ты должен взломать его, не используя известные тебе пароли.
Хакер за один час справился с испытанием.
– Я буду учить тебя, – сказал Инь Фу Во.
Через три года Учитель снова дал Хакеру такое же задание. Хакер не смог его выполнить.
– Теперь твоё обучение закончено, – сказал Инь Фу Во.

3.12
Инь Фу Во сказал:
– Защитник информации не ликвидирует угрозы. Он перераспределяет угрозы между людьми. От менее доверяемых к более доверяемым.

3.13
Младший бухгалтер Ли Чан спросила:
– Учитель, почему нашего инженера все зовут Чжа Вынь (奓蟁)? Ведь по паспорту он Чжа Сунь (奓诵).
Инь Фу Во ответил:
– Взгляни на него, какой же он Сунь? Когда он теряет данные о клиенте, он отключает порт на коммутаторе и ждёт от клиента звонка. Ну какой же он Сунь?

[1] Инь Фу Во (廕傁幄) – почтенный защитник Инь.
[2] Инь Фу Во имеет в виду программу, которая производит шифрование и расшифровывание по алгоритму.
[3] Инь Фу Во называет окружением операционную систему, в которой работает шифрующая программа и сам компьютер, то есть аппаратную платформу.
[4] от "blackhole", что означает маршрутизацию соответствующего трафика в /dev/null
[5] QOS, quality of service – система приоритезации трафика

© Н.Н.Федотов, 2009.
Допускается воспроизведение и доведение до всеобщего сведения настоящего произведения полностью или частями, с обязательной ссылкой на данную веб-страницу или на корпоративный блог компании InfoWatch.

четверг, 17 сентября 2009 г.

Lenovo S10-2 vs я & Ubuntu - WiFi

На форуме узрел вопрос про то как запустить на ленове Wifi
Как говорится спрашивали - отвечаем.

sudo apt-get install linux-backports-modules-jaunty

Скачать файлик отсюда
http://www.intellinuxwireless.org/?n=Downloads
Под свою карточку. У меня был нужен вот этот
5150 Images - for Intel Wireless WiFi 5150AGN
wget [url]http://www.intellinuxwireless.org/iwlwifi/downloads/iwlwifi-5150-ucode-8.24.2.2.tgz[/url]

Распаковать его
tar -xvjf 'iwlwifi-5150-ucode-8.24.2.2.tgz'
Идем в папку
cd 'iwlwifi-5150-ucode-8.24.2.2'
Внутри лежит файлик
iwlwifi-5150-2.ucode
переименовываем (я делаю копию - привычка)
cp iwlwifi-5150-2.ucode lbm-iwlwifi-5150-2.ucode

и копируем в каталог /lib/firmware
sudo cp lbm-iwlwifi-5150-2.ucode

После этого ребут. Должно работать.

з.ы. Спасибо USP с форума forum.ubuntu.ru, за то что исправил ход моих мыслей.