БСД: Большие и Страшные Демоны
Как уже, наверное, читатель догадался из названия этой статьи, сегодня мы поговорим о BSD-системах – свободных и гордых серверных ОС, берущих свое начало из благородного и древнего берклианского рода ЮНИКС. Впрочем, как будет видно дальше, неизбежно мы будем невольно касаться рассмотрения и их сравнения с другой суперпопулярной ныне ОС Linux, которая в свою очередь, также представляет свободный клон ЮНИКС, но разрабатываемый c нуля и уже по другой идеологической модели, а также несколько отличной лицензии.
Конечно, проект университета Беркли, в результате развития BSD давший миру стек протоколов TCP/IP, DNS, sendmail, и многое-многое другое, без чего сегодня невозможно представить тот же Linux, сегодня отчасти незаслуженно находится в тени своего более молодого и шустрого “коллеги” - детища Линуса Торвальдса. FreeBSD – это академическая система, которая разрабатывалась фактически представителями от науки и по всем канонам науки, используя классические и отточенные временем алгоритмы (до сих пор почти все рекорды по продолжительности непрерывной работы (uptime) удерживают именно BSD-системы). Процесс проектирования во всем BSD-сообществе более упорядоченный и строгий, а системы, созданные в ходе этого процесса, - более консервативные и менее удалившиеся от оригинального ЮНИКС. С другой стороны, Линукс – это больше молодежная и анархистская по духу экспериментальная система, с ее ярко выраженным поиском нового и непочтением к авторитетам. И дело даже не в принципиальном споре Торвальдса с Таненбаумом, где создатель Linux все-таки пошел “своим путем”, а в том, что экспериментальная суть его ОС слишком очевидна на фоне, к примеру, той же фундаментально-классической FreeBSD. Так, в одном из очередных своих споров, Торвальдс невольно сравнивает со своим Linux и конечно осуждает, как в свое время Minix, теперь уже устройство FreeBSD, а также устройство взявшей ее за свою основу MacOS X. Горячий финский парень Линус назвал их создателей “некомпетентными идиотами” ("I claim that Mach people (and apparently FreeBSD) are incompetent idiots”).
Именно поэтому я бы хотел сказать о наиболее частом заблуждении, которое я встречаю у людей далеких от мира ЮНИКС, и с развенчания которого я бы хотел начать свой обзор BSD-систем — это попытка рассуждать о FreeBSD как о “некоем клоне Linux”, хотя такое уравнивание этих очень разных систем, на самом деле, мягко говоря, некорректно.
В 2004 году на конференции Microsoft TechEd в Амстердаме с довольно интересным и несколько неожиданным докладом выступил Марк Руссинович - хорошо известный знаток Windows из Microsoft, а также признанный специалист в области современных операционных систем. Неожиданность его выступления состояла в том, что он посвятил его анализу устройства ядер Windows и Linux, и общий его вывод сводился к тому, что начиная с версии ядра 2.6, архитектура ядра Linux по своему функциональному и системному дизайну ядра стала практически идентична архитектуре ядра детища команды Дэвида Катлера - Windows Server 2003. По авторитетному мнению Руссиновича, повторная входимость (или реентерабельность) ядра Linux 2.6 стерла последние принципиальные различия в устройстве системной части этих ОС и сместила все видимые и принципиальные отличия этих систем уже в пользовательскую область. Поэтому, как ни странно это звучит, Linux по своей глубинной “начинке” гораздо ближе к Windows, чем например, к FreeBSD, с которой ее часто ошибочно сравнивают. Хотя, конечно, если сравнивать по такому критерию, как юзерленд (пользовательское окружение) – действительно, он у них более или менее похож, что и создает некоторую иллюзию общности этих систем. На самом деле, гигантскую разницу подходов в идеологии устройств ядер Linux и FreeBSD можно примерно пропорционально проиллюстрировать на примере разницы устройств их дефолтных файловых систем: Linux, так же как и Windows - вместе используют журналирование, тогда как у BSD-систем, по умолчанию, применяется принципиально другая стратегия – soft updates. И такие диаметральные расхождения можно наблюдать на всех уровнях системных решений между ядрами этих ОС. Хотя, ради справедливости нужно отметить, что начиная с ветки FreeBSD RELENG_5 архитектура FreeBSD взяла курс, отчасти идентичный с идеологией Linux, категорическое несогласие с чем у группы товарищей и послужило причиной создания форка FreeBSD - DragonFly BSD.
Возвращаясь к историческому и принципиальному спору студента Линуса с профессором Таненбаумом, можно только заключить, что время расставит все по своим местам, и все великое, как обычно – видится издалека, в нашем случае – через призму времени.
Давайте посмотрим, на примере Linux и Windows, куда нас ведет модель монолитного устройства ядра. Итак, ядро Linux 2.6 к моменту его анонса насчитывало около 4,2 млн строк кода - мягко говоря, это гнетущее число (утешения линуксоидов о том, что порядка 50% кода ядра - это фактически "драйверный код", ситуацию нисколько не улучшает). Судите сами, по данным Гэри МакГроу (CTO компании Cigital, специализирующейся на управлении качеством в процессе разработки ПО), непосредственно на само ядро (т.н. Native WinAPI + все вспомогательные сервисы и базовые драйверы) у Windows 2003 приходится примерно около 5000-7000 млн строк кода, и все эксперты признают, что это очень много. Учтите, что текущая версия ядра Linux уже давно перевалила за 6000 млн строк, и его бешеный рост только продолжается.
В самом деле, тревогу забили уже давно: на конференции LinuxCon 2009 корпорация Intel в связи с этим организовала круглый стол во главе с Линусом Торвальдсом, посвященный проблемам развития ядра. Инженер из компании Novell Джеймс Боттомли привел данные исследования Intel, посвященного Linux. В нем говорится, что производительность Linux падает на два процента с каждым новом релизом, а общее снижение производительности за последние десять релизов достигло 12 процентов. "Мы стали раздутыми и огромными. Да, это проблема", - это все, что сумел тогда сказать парням из Intel Линус Торвальдс. После уточняющих вопросов он добавил: “Да, мы не располагаем планом по исправлению этой ситуации”.
С тех пор прошел почти год, и что вы думаете – рост объема ядра Linux даже ускоряется, на этот раз недавно всполошился даже сам Линус: “Я недоволен его (ядра) размером - надо признать, что он не столь велик по сравнению с предыдущей версией, но прошлый наш релиз был и вовсе невероятно большим. Когда я вернусь (из отпуска), я действительно хотел бы убедиться, что проблемы подобного рода снова не возникнут в последующих релизах”.
В этом месте хотелось бы сделать небольшое отступление и поговорить о символике или талисманах Unix-дистрибутивов, обсудив т.н. mascot проектов. Линуксоиды очень символично выбрали своим талисманом неуклюжего и жирного пингвина – Тукса. Что любопытно, до 1998 года Тукс всегда изображался вертикально стоящим на своих лапках, но дальше, наверное, его дела пошли совсем уж плохо, и официальное изображение Linux сменили на новое – сейчас это уже не прямостоящий, а упавший и теперь вечно сидящий на пятой точке пингвин, величественно демонстрирующий свой большой пивной живот. Другое дело в мире BSD – здесь своей эмблемой выбрали энергичного молодого чертенка, который сжимает в своих руках трезубец, символизирующий многозадачность и системный вызов fork(). Чертенка зовут очень мило – beastie, что является уменьшительно-ласкательной формой от слова beast, т.е. Зверь (тот самый, библейский, из Апокалипсиса), так что “бисти” может быть переведен как “звереныш” или “антихристик”. Из истории развития БСД-систем известно очень много анекдотичных историй, когда бородатых и хмурых BSD-администраторов, одетых в майки с символикой FreeBSD, местные власти принимали за отъявленных сатанистов. И хотя по политическим причинам проект FreeBSD сменил забавного чертика на политкорректного “сферического черта в вакууме”, комьюнити по-прежнему продолжает ассоциировать BSD с различными ипостасями адского бисти.
Конечно, на самом деле мир ЮНИКС населен не ужасными христианскими демонами, а даймонами – уводя объяснение этой символики к греческой мифологии, где даймон – это бесплотное невидимое глазу бессмертное существо, которое обитает в нулевом кольце (почти по Данте), где трудится день и ночь не покладая рук и не зная усталости, при этом обладая особой, магической силой над миром всех остальных – смертных и
непривилегированных.
Ну а что же насчет упомянутого мною в начале статьи мнения Линуса Торвальдса о “некомпетентных идиотах”, так упорно разрабатывающих FreeBSD и Apple MacOS X? Разработчики как минимум FreeBSD ответили на это Линусу, прислав ему по почте подарок-коробочку, перевязанную праздничными ленточками, в которую были заботливо положены накладные рожки чертика Бисти, а также кусочек бумаги, на котором были распечатаны всего три слова: “man zero_copy RTFM”. Если таки почитать этот ман во FreeBSD, как настоятельно советует заботливо приложенная записочка, то можно увидеть, что там дословно повторяется все то, что говорил Линус об опасности техники ZERO_COPY_SOCKET, и потому его страстный монолог-лекция “об идиотах” уж никак не могла стать нравоучительным откровением для разработчиков FreeBSD. Именно поэтому в FreeBSD эта технология отключена по умолчанию. Не знаю, читал ли Линус рекомендованный ему ман, но зато, как можно видеть на некоторых фотографиях в Сети, Линус публично водрузил эти самые рожки на свою голову, охотно приняв этот символический жест, который ему заочно предложили в знак покаяния. Мораль всей этой истории, как всегда, одна – RTFM, RTFM и еще раз RTFM: будь вы простой смертный, работающий под аккаунтом nobody, или даже отец мировой операционной системы, но от изучения системных манов вас никто не освобождал – и это общая для всех ЮНИКС-систем жесткая установка.
На этом с введением у меня почти все, ну а в следующий раз мы поговорим уже о большей конкретике: о дистрибутивах и модели развития BSD, ну и также, конечно, о настоящих BSD-администраторах, которые по старой традиции по ночам собирают FreeBSD из исходников и лишь под самое утро, после того как пропоют первые петухи, выполняют команду install world, дабы завершить содеянное.
Игорь САВЧУК blogerator.ru
Конечно, проект университета Беркли, в результате развития BSD давший миру стек протоколов TCP/IP, DNS, sendmail, и многое-многое другое, без чего сегодня невозможно представить тот же Linux, сегодня отчасти незаслуженно находится в тени своего более молодого и шустрого “коллеги” - детища Линуса Торвальдса. FreeBSD – это академическая система, которая разрабатывалась фактически представителями от науки и по всем канонам науки, используя классические и отточенные временем алгоритмы (до сих пор почти все рекорды по продолжительности непрерывной работы (uptime) удерживают именно BSD-системы). Процесс проектирования во всем BSD-сообществе более упорядоченный и строгий, а системы, созданные в ходе этого процесса, - более консервативные и менее удалившиеся от оригинального ЮНИКС. С другой стороны, Линукс – это больше молодежная и анархистская по духу экспериментальная система, с ее ярко выраженным поиском нового и непочтением к авторитетам. И дело даже не в принципиальном споре Торвальдса с Таненбаумом, где создатель Linux все-таки пошел “своим путем”, а в том, что экспериментальная суть его ОС слишком очевидна на фоне, к примеру, той же фундаментально-классической FreeBSD. Так, в одном из очередных своих споров, Торвальдс невольно сравнивает со своим Linux и конечно осуждает, как в свое время Minix, теперь уже устройство FreeBSD, а также устройство взявшей ее за свою основу MacOS X. Горячий финский парень Линус назвал их создателей “некомпетентными идиотами” ("I claim that Mach people (and apparently FreeBSD) are incompetent idiots”).
Именно поэтому я бы хотел сказать о наиболее частом заблуждении, которое я встречаю у людей далеких от мира ЮНИКС, и с развенчания которого я бы хотел начать свой обзор BSD-систем — это попытка рассуждать о FreeBSD как о “некоем клоне Linux”, хотя такое уравнивание этих очень разных систем, на самом деле, мягко говоря, некорректно.
В 2004 году на конференции Microsoft TechEd в Амстердаме с довольно интересным и несколько неожиданным докладом выступил Марк Руссинович - хорошо известный знаток Windows из Microsoft, а также признанный специалист в области современных операционных систем. Неожиданность его выступления состояла в том, что он посвятил его анализу устройства ядер Windows и Linux, и общий его вывод сводился к тому, что начиная с версии ядра 2.6, архитектура ядра Linux по своему функциональному и системному дизайну ядра стала практически идентична архитектуре ядра детища команды Дэвида Катлера - Windows Server 2003. По авторитетному мнению Руссиновича, повторная входимость (или реентерабельность) ядра Linux 2.6 стерла последние принципиальные различия в устройстве системной части этих ОС и сместила все видимые и принципиальные отличия этих систем уже в пользовательскую область. Поэтому, как ни странно это звучит, Linux по своей глубинной “начинке” гораздо ближе к Windows, чем например, к FreeBSD, с которой ее часто ошибочно сравнивают. Хотя, конечно, если сравнивать по такому критерию, как юзерленд (пользовательское окружение) – действительно, он у них более или менее похож, что и создает некоторую иллюзию общности этих систем. На самом деле, гигантскую разницу подходов в идеологии устройств ядер Linux и FreeBSD можно примерно пропорционально проиллюстрировать на примере разницы устройств их дефолтных файловых систем: Linux, так же как и Windows - вместе используют журналирование, тогда как у BSD-систем, по умолчанию, применяется принципиально другая стратегия – soft updates. И такие диаметральные расхождения можно наблюдать на всех уровнях системных решений между ядрами этих ОС. Хотя, ради справедливости нужно отметить, что начиная с ветки FreeBSD RELENG_5 архитектура FreeBSD взяла курс, отчасти идентичный с идеологией Linux, категорическое несогласие с чем у группы товарищей и послужило причиной создания форка FreeBSD - DragonFly BSD.
Возвращаясь к историческому и принципиальному спору студента Линуса с профессором Таненбаумом, можно только заключить, что время расставит все по своим местам, и все великое, как обычно – видится издалека, в нашем случае – через призму времени.
Давайте посмотрим, на примере Linux и Windows, куда нас ведет модель монолитного устройства ядра. Итак, ядро Linux 2.6 к моменту его анонса насчитывало около 4,2 млн строк кода - мягко говоря, это гнетущее число (утешения линуксоидов о том, что порядка 50% кода ядра - это фактически "драйверный код", ситуацию нисколько не улучшает). Судите сами, по данным Гэри МакГроу (CTO компании Cigital, специализирующейся на управлении качеством в процессе разработки ПО), непосредственно на само ядро (т.н. Native WinAPI + все вспомогательные сервисы и базовые драйверы) у Windows 2003 приходится примерно около 5000-7000 млн строк кода, и все эксперты признают, что это очень много. Учтите, что текущая версия ядра Linux уже давно перевалила за 6000 млн строк, и его бешеный рост только продолжается.
В самом деле, тревогу забили уже давно: на конференции LinuxCon 2009 корпорация Intel в связи с этим организовала круглый стол во главе с Линусом Торвальдсом, посвященный проблемам развития ядра. Инженер из компании Novell Джеймс Боттомли привел данные исследования Intel, посвященного Linux. В нем говорится, что производительность Linux падает на два процента с каждым новом релизом, а общее снижение производительности за последние десять релизов достигло 12 процентов. "Мы стали раздутыми и огромными. Да, это проблема", - это все, что сумел тогда сказать парням из Intel Линус Торвальдс. После уточняющих вопросов он добавил: “Да, мы не располагаем планом по исправлению этой ситуации”.
С тех пор прошел почти год, и что вы думаете – рост объема ядра Linux даже ускоряется, на этот раз недавно всполошился даже сам Линус: “Я недоволен его (ядра) размером - надо признать, что он не столь велик по сравнению с предыдущей версией, но прошлый наш релиз был и вовсе невероятно большим. Когда я вернусь (из отпуска), я действительно хотел бы убедиться, что проблемы подобного рода снова не возникнут в последующих релизах”.
В этом месте хотелось бы сделать небольшое отступление и поговорить о символике или талисманах Unix-дистрибутивов, обсудив т.н. mascot проектов. Линуксоиды очень символично выбрали своим талисманом неуклюжего и жирного пингвина – Тукса. Что любопытно, до 1998 года Тукс всегда изображался вертикально стоящим на своих лапках, но дальше, наверное, его дела пошли совсем уж плохо, и официальное изображение Linux сменили на новое – сейчас это уже не прямостоящий, а упавший и теперь вечно сидящий на пятой точке пингвин, величественно демонстрирующий свой большой пивной живот. Другое дело в мире BSD – здесь своей эмблемой выбрали энергичного молодого чертенка, который сжимает в своих руках трезубец, символизирующий многозадачность и системный вызов fork(). Чертенка зовут очень мило – beastie, что является уменьшительно-ласкательной формой от слова beast, т.е. Зверь (тот самый, библейский, из Апокалипсиса), так что “бисти” может быть переведен как “звереныш” или “антихристик”. Из истории развития БСД-систем известно очень много анекдотичных историй, когда бородатых и хмурых BSD-администраторов, одетых в майки с символикой FreeBSD, местные власти принимали за отъявленных сатанистов. И хотя по политическим причинам проект FreeBSD сменил забавного чертика на политкорректного “сферического черта в вакууме”, комьюнити по-прежнему продолжает ассоциировать BSD с различными ипостасями адского бисти.
Конечно, на самом деле мир ЮНИКС населен не ужасными христианскими демонами, а даймонами – уводя объяснение этой символики к греческой мифологии, где даймон – это бесплотное невидимое глазу бессмертное существо, которое обитает в нулевом кольце (почти по Данте), где трудится день и ночь не покладая рук и не зная усталости, при этом обладая особой, магической силой над миром всех остальных – смертных и
непривилегированных.
Ну а что же насчет упомянутого мною в начале статьи мнения Линуса Торвальдса о “некомпетентных идиотах”, так упорно разрабатывающих FreeBSD и Apple MacOS X? Разработчики как минимум FreeBSD ответили на это Линусу, прислав ему по почте подарок-коробочку, перевязанную праздничными ленточками, в которую были заботливо положены накладные рожки чертика Бисти, а также кусочек бумаги, на котором были распечатаны всего три слова: “man zero_copy RTFM”. Если таки почитать этот ман во FreeBSD, как настоятельно советует заботливо приложенная записочка, то можно увидеть, что там дословно повторяется все то, что говорил Линус об опасности техники ZERO_COPY_SOCKET, и потому его страстный монолог-лекция “об идиотах” уж никак не могла стать нравоучительным откровением для разработчиков FreeBSD. Именно поэтому в FreeBSD эта технология отключена по умолчанию. Не знаю, читал ли Линус рекомендованный ему ман, но зато, как можно видеть на некоторых фотографиях в Сети, Линус публично водрузил эти самые рожки на свою голову, охотно приняв этот символический жест, который ему заочно предложили в знак покаяния. Мораль всей этой истории, как всегда, одна – RTFM, RTFM и еще раз RTFM: будь вы простой смертный, работающий под аккаунтом nobody, или даже отец мировой операционной системы, но от изучения системных манов вас никто не освобождал – и это общая для всех ЮНИКС-систем жесткая установка.
На этом с введением у меня почти все, ну а в следующий раз мы поговорим уже о большей конкретике: о дистрибутивах и модели развития BSD, ну и также, конечно, о настоящих BSD-администраторах, которые по старой традиции по ночам собирают FreeBSD из исходников и лишь под самое утро, после того как пропоют первые петухи, выполняют команду install world, дабы завершить содеянное.
Игорь САВЧУК blogerator.ru
Компьютерная газета. Статья была опубликована в номере 34 за 2010 год в рубрике ос