CITKIT.ru - свободные мысли о свободном софте
Деловая газета CitCity.ru Библиотека CITForum.ru Форумы Курилка
Каталог софта Движение Open Source Дискуссионный клуб Дистрибутивы Окружение Приложения Заметки Разное
28.04.2017

Последние комментарии

ОСТОРОЖНО: ВИНДОФИЛИЯ! (2250)
24 December, 22:53
Kubuntu Feisty (15)
24 December, 18:42
Один на один с Windows XP (3758)
24 December, 11:46

Каталог софта

Статьи

Дискуссионный клуб
Linux в школе
Open Source и деньги
Open Source и жизнь
Windows vs Linux
Копирайт
Кто такие анонимусы
Лицензии
Нетбуки
Нужен ли русский Linux?
Пользователи
Дистрибутивы
Идеология
Выбор дистрибутива
Archlinux & CRUX
Debian
Fedora
Gentoo
LFS
LiveCD
Mandriva
OpenSolaris
Slackware
Zenwalk
Другие линуксы
BSD
MINIX
Движение Open Source
История
Классика жанра
Окружение
shell
Библиотеки UI
Графические среды
Шрифты
Приложения
Безопасность
Управление пакетами
Разное
Linuxformat. Колонки Алексея Федорчука
Заметки
Блогометки
Файловые системы
Заметки о ядре

Заметки :: Блогометки :: Системы

SUSE Studio: Запускаем Linux в браузере

http://hrafn.me/

От переводчика:Продолжим переводить статьи Нэта Фридмана про SUSE Studio. На этот раз это вторая из серии статей, которые он пишет о SUSE Studio и программных решениях.

Кстати, сегодня мне вдруг подумалось, что термин «программное решение» может быть не совсем адекватным, но замену ему я придумать пока не смог. Можно было бы написать «софтверное решение» или «программный комплекс», но первый вариант, на мой взгляд, несколько жаргонным выглядит, второй получше, но, как мне кажется, ассоциируется не с тем, что имеется ввиду. В общем, если будут пожелания на тему терминологии — милости прошу в комменты.

Оригинал

Многие люди поражаются, увидев, что их операционная система загружается в веб-браузере. Но для SUSE Studio — это важная деталь удобства пользователя. В этом сообщении я собираюсь поговорить о моей любимой возможности в SUSE Studio: Testdrive. Почему мы создали это и как это все работает?

SUSE Studio — это веб-сервис, который позволяет до смешного просто для любого человека с веб-браузером и парой лет опыта работы в Linux создать программное решение или свой собственный дистрибутив Linux менее чем за 10 минут.

Одной из основных задач при создании SUSE Studio было предоставление пользователю ускоренного цикла «сборка-тестирование-настройка-пересборка», что бы он мог создавать и улучшать программные решения в несколько шагов.

Но мы также хотели, чтобы SUSE Studio имела как можно более низкий порог вхождения. Если вы приходилось устанавливать какую-либо новую программу для использования Studio, или, если бы было необходимо иметь SUSE установленной на компьютере, думаем, что гораздо меньше людей решили бы попробовать Studio.

Таким образом, это объясняет, почему мы сделали SUSE Studio веб-сервисом, который можно использовать с любого компьютера, даже если у вас нет SUSE. И даже если у вас вообще нет Linux. (Не смотря на то, что для использования SUSE Studio желательно иметь некоторый опыт).

Но тут возникает другая проблема: если Studio — веб-сервис, то решение, которое вы создаете, находится на наших серверах, а не на вашем компьютере. Потому, для проверки созданного вам пришлось бы загрузить его, а потом загрузить на виртуальной машине или записать на диск. Это ужасно замедлило бы повторную разработку и сделало ее неудобной в использовании.

Введение в Testdrive

Мы решили эту проблему, сделав возможной загрузку вашего решения в веб-браузере, быстро, в один клик. Мы называем эту возможность «testdrive». Я сделал короткий, всего 1 минута, скринкаст testdrive, в чем вы можете убедиться сами.

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

Java vs Flash и VNC

Работает все это таким образом — мы загружаем наше готовое решение в копию KVM на нашем сервере и открываем доступ к фреймбуферу виртуальной машины через VNC, подключаясь при помощи Flash-апплета в браузере.

Первая версия Testdrive использовала Java-апплет, но с ним было много проблем. Апплет, реализованный посредством моста с Javascript, а также поведение центра окна сильно различалось в различных версиях Java, которые работали у наших пользователей. Иногда пользователи не могли вообще печатать в Java. Иногда они видели только серый прямоугольник. По этим причинам мы решили перейти на Flash, который работал намного лучше.

Мы также поигрались с протоколом VNC, чтобы проверить, возможно ли у него улучшить производительность. Существуют некоторые расширения VNC для сжатия траффика фреймбуфера с помощью группового кодирования и сжатия JPEG, но мы подумали, что можно было бы сделать еще лучше.

Мы добавили сжатие клеток PNG, посчитав, что это будет выглядеть лучше, чем JPEG. Использование PNG также позволило нам вернуться к разнообразию серых оттенков или к монохромному отображению на медленных соединениях. Мы также добавили к клиенту и серверу кэш клеток дабы избежать их избыточной передачи. И я работал на патчем для автоматического обнаружения скроллинга консоли, в следствие чего, мы смогли использовать CopyRec, чтобы избежать полной перерисовки экрана.

Мы тестировали это в течение нескольких месяцев, но в конечном итоге, эти расширения не возымели того действия, на которое мы рассчитывали. И, с учетом того, что они не стандартизированы, было тяжело поддерживать их и они требовали множества хаков. В конце концов, мы выкинули все это и сейчас используем более стандартные расширения VNC (ZRLE и Tight).

Хотя мы не прекратили использование это кода, это был хороший эксперимент. А также — это хороший пример нашей работы в команде: смелость пробовать что-то новое для улучшения удобства пользователей.

Измененные файлы

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

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

Когда система Linux загружается первый раз, она создает и изменяет множество файлов, которые вы точно не хотите включать в решение, предоставляемое пользователям: такие вещи, как ключи SSH, resolv.conf и т.д. Чтобы этого не происходило — включите режим «только для чтения» в сессии Testdrive.

(Если вы не видите скринкаста, кликните здесь).

Как работают измененные файлы

Есть несколько возможностей выяснить это.

Нам требовалось решение, которому бы не требованлось взаимодействие с самим приложением. Отдельный модуль ядра или любой другой хак, добавленный в приложение, ограничил бы диапазон пользователей, который могли бы работать с SUSE Studio. Мы хотели, чтобы наши пользователи могли выбрать любое ядро, к примеру.

Нам также было необходимо сделать возможным динамическое создание списка изменений файловых систем в течение 1-2 секунд. Что-то более медленное делало бы не удобным интерактивное использование.

Я потратил неделю, проверяя различные способы и каждый раз упирался в препятствия. Большая часть из опробованного была слишком медленной.

Затем, как-то поздно ночью, во время телефонного разговора с Мигелем, мы натолкнулись на действительно великолепное решение.

QEMU (с помощью расширения KVM) имеет возможность запускать виртуальную машину с помощью образа диска с механизмом копирования при записи или cowfile.Каждый раз, когда виртуальная машина хочет прочитать заблокированный диск, она сначала проверяет, представлен ли этот блок в cowfile, и возвращается к оригинальному образу приложения, если нет.

Таким образом, вы фактически имеет две копии образа диска — оригинальный образ и измененный образ — без необходимости делать полную копию. Магия оператора «if».

Все это — обычная практика.

Необычность в том, что мы используем libext2fs, реализацию файловой системы ext2fs в пространстве пользователя, для чтения метаданных как оригинальной, так и модифицированной файловых систем. Мы считываем все inodes и dentries в память, сравниваем их и показываем различия. И это отлично работает. Когда diff запускается впервые, это занимает несколько секунд, но затем блоки метаданных кэшируются, и можно увидеть свежие различия многогигабайтных приложений менее чем за полсекунды.

После разговора с Мигелем мне потребовалось около двух дней, чтобы заставить все это работать. Это был великолепный хак, один из лучших за последние годы. Сделать это было довольно просто (как мы только что выяснили), но я никогда не видел, чтобы какое-нибудь приложение по виртуализации предлагало подобное ранее.

Между прочим, мы можем использовать ту же технику для поиска неиспользуемых файлов и пакетов, которые пользователь может удалить из приложения для уменьшения размера.

Это просто работает, если, конечно, вы запускали полноценный тест в Testdrive.

Сеть

Вы не можете создавать исходящие сетевые соединения во время тестовой сессии, но мы предоставляем возможность создавать входящие соединения по некоторым портам, чтобы вы могли использовать вход по SSH или тестировать веб-приложения, запущенные на вашем решении. По причинам безопасности, вам придется явно включить эту возможность, кликнув по кнопке , а входящие соединения будут ограничены IP-адресом вашего браузера. Мы осуществили это ограничение с помощью простого патча для QEMU , который Алекс Граф написал за 15 минут. (Алекс, кажется, все делает за 15 минут).

Серверы

Мы предоставляем каждому экземпляру Testdrive 512 MB оперативной памяти и час на работу. Современный сервер за $2000 держит одновременно 16 экземпляров Testdrive и имеет продолжительность жизни около 2 лет. Мы берем на себя 30% потребления и использование электроэнергии, охлаждения и пропускной способности, и оцениваем стоимость хостинга каждой сессии примерно в 6 центов. Нам это кажется справедливой ценой за предоставление возможности разработчикам создавать решения с помощью SUSE Linux.

Мы запускаем Testdrive на своей собственной серверной ферме, которую мы обслуживаем самостоятельно, не в облачном сервисе вроде EC2. Мы думаем, что EC2 — это действительно здорово, и фактически мы планируем добавить поддержку вывода EC2 AMI в Studio в будущем. Но только это может не сработать для какого-то специфического сервиса.

Стоимость — одна из причин. Мы можем управлять нашими серверами Testdrive, неся гораздо меньшие расходы, чем издержки Amazon на сегодня. Является фактом также то, что каждая сессия testdrive — самостоятельный эксземпляр виртуальной машины, и для запуска ее в EC2 необходима поддержки вложенной виртуализации, которая в данный момент не поддерживается в EC2. Хотя, Алекс Граф внедрил это в KVM во вложенных патчах SVM.

О QEMU

Краткое отступление, многие наши эксперимента с testdrive стали возможны из-за того, что у нас был QEMU в качестве основы. Первоначально написанный Фабрисом Белларом QEMU — одна из любимейших открытых кодовых баз. Не только по причине его мощности и возможностей — он эмулирует десятки устройств и ЦП в программном обеспечении — а из-за того, что код прост и дружелюбен для хакеров. Это чистый и модульный и этого очень не достает в запутывающем слое абстракций и универсальности и проектно-специфического жаргона, который во многих больших программах затрудняет работу. Хотя я — полный новичок в технологиях виртуализации, я нашел, что могу понимать QEMU и писать основные патчи в пределах времени распаковки дерева исходников (конечно, возможно, что более глубокие части, до котолрых мне не добраться, гораздо более сложны для хаков). QEMU — основа и для KVM, и для Xen HVM, и, по моему мнению, невоспетый герой opensource-виртуализации.

Фабрис Беллар, должно быть, один из самых талантливых и плодовитых разработчиков, работающих сегодня, и я определенно рекомендую взглянуть на другие его проекты, включая ffmpeg, numcalc.com, tinygl , tinygcc и его алгоритмы для вычисления числа Пи.

Ok...

Я надеюсь, что вы найдете этот пост интересным. Я буду рад любым отзывам, и я хотел бы знать, что вы желаете услышать в дальнейших постах!

Все посты о SUSE Studio и программных приложениях:




Комментарии

аноним, Wed Sep 16 14:45:56 2009:
Ересь и постмодерн в IT.
аноним, Wed Sep 16 13:31:21 2009:
жесть какая...

Комментарии заморожены.

Новости:

Все новости на CitCity.ru

Компании месяца

 
Последние комментарии
Почему школам следует использовать только свободные программы (101)
20 Декабрь, 14:51
ОСТОРОЖНО: ВИНДОФИЛИЯ! (2250)

24 Декабрь, 22:53
Linux в школе: мифы про школу и информатику (334)
24 Декабрь, 22:43
Kubuntu Feisty (15)
24 Декабрь, 18:42
Software is like sex: it's better when it's free.
©Linus Torvalds