11.07.2015 Views

ПРИНТЕРЫ СЕГОДНЯ - Xakep Online

ПРИНТЕРЫ СЕГОДНЯ - Xakep Online

ПРИНТЕРЫ СЕГОДНЯ - Xakep Online

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

ХАКЕР 04 /171/ 2013 Семь столпов Linux117собственный список процессов, сетевой стек и систему межпроцессноговзаимодействия.В сочетании эти две технологии позволяют создать полностьювиртуализированное окружение для группы процессов,чем с успехом пользуются системы виртуализации OpenVZи LXC для запуска «Linux внутри Linux». Также с помощью Cgroupsможно легко выполнить довольно сложные задачи, вроде ограничениявсех малозначимых фоновых демонов в процессоре,безопасный запуск подозрительных приложений, многопользовательскоеокружение с полным отделением юзеров другот друга (как сделано в Ubuntu Touch), назначение всем интерактивнымпроцессам более высокого приоритета (такой подходприменяется в текущих версиях Linux) и многое другое.KVM — это драйвер для подсистем Intel VTи AMD SVM, в отличие от Xen не затрагивающийбазовых структур ядраCFSЗа все время существования Linux сменил множество различныхалгоритмов планирования процессов, от самых простыхи примитивных до алгоритмов, способных предугадывать будущиепотребности процессов в ресурсах процессора и равномернораспределять время между всеми процессами. Однаконаиболее значимым стал переход к использованию планировщикаCFS, который позволил вплотную приблизить работу системык идеалу.CFS (Completely Fair Scheduler) был разработан Инго Молнаромпод впечатлением от планировщика Rotating StaircaseDeadline за авторством непризнанного Linux-хакера Кона Коливаса,известного своим нестандартным подходом к реализациивнутриядерных механизмов. CFS отличается простотой, отсутствиемкакой-либо эвристики и удивительной способностьюк правильной балансировке нагрузки. В системе с CFS можнозапросто запустить компиляцию в несколько потоков, форкбомбу,фильм и при этом спокойно сидеть в интернете, практическине замечая каких-либо притормаживаний. Нагрузка будетраспределена полностью равномерно.Достигается это за счет простого алгоритма распределениявремени, в котором процессы встают в очередь в том порядке,в котором они использовали время процессора в предыдущийраз. Наименее жадные получают процессор первыми, наиболеежадные — последними. Поэтому, например, компилятори форк-бомба будут находиться ближе к концу в очереди,а интерактивные процессы, которые большую часть временипростаивают, ожидая ввода пользователя или данных с диска,— к началу, что является разумным, но полностью автоматизированнымразделением времени.CFS был включен в ядро, начиная с версии 2.6.23, и, вероятнеевсего, еще не скоро покинет его (если это вообще случится).Разработчики FreeBSD портировали его в свою систему,но, к сожалению, забросили разработку в пользу собственногопланировщика ULE.userspacekernelIs -1 /tmp/fuseglibcexample/hello /tmp/fuselibfuseglibcFUSEУправление виртуальнымиKVMокружениямис помощьюvirt-managerПринцип работы FUSEKVMК началу бума виртуализации в мире Linux уже существовал инструмент,позволяющий превратить пингвина в полноценнуюплатформу для запуска виртуальных машин. Это Xen, которыйпоявился еще до начала продаж процессоров с поддержкой аппаратнойвиртуализации и позволял запускать (модифицированные)гостевые окружения на скорости, близкой к нативной.Однако с появлением технологий аппаратной виртуализацииIntel VT и AMD SVM стало ясно, что Xen, будучи оправданным решениемв мире паравиртуализации, в новых условиях оказываетсярешением избыточным, требуя использовать специальноеядро и инструменты даже в том случае, если предполагаетсяаппаратная виртуализация.Решением проблемы стал KVM (Kernel-based VirtualMachine), небольшой модуль Linux-ядра, позволяющий получитьвсе возможности аппаратной виртуализации без необходимостиналожения патчей, установки специального ядраи тому подобных извращений. Достаточно загрузить модуль,установить специальную версию эмулятора QEMU — и можноначинать запуск виртуальных окружений, работающих со скоростью99% от нативных.Козырь KVM в предельной простоте. Это всего лишь небольшойдрайвер для подсистем Intel VT и AMD SVM, который,в отличие от того же Xen, не затрагивает никаких базовых структурядра и не требует использования специальных драйверовв виртуальных окружениях. Вся сложная работа выполняетсяв пространстве пользователя силами того самого QEMU, тогдакак KVM играет роль интерфейса для настройки адресного пространствагостя виртуальной машины.По этой причине код KVM был очень быстро принят в ядроLinux 2.6.20, а компания Qumranet, ответственная за его разработку,куплена Red Hat. Сегодня KVM — это стандарт в миреLinux-виртуализации. Он используется во многих облачныхплатформах и фреймворках. В виртуальных окружениях, созданныхKVM, работают миллионы серверов. Он является базовойчастью всех облачных решений таких компаний, как Red Hat,Ubuntu, SUSE и многих других.VFS...NFSExt3ВЫВОДЫLinux развивается стремительными темпами, серьезно обновляясьдо шести-семи раз в год. Однако по-настоящему фундаментальныетехнологии появляются в нем не так часто. В статьемы рассмотрели наиболее важные из этих технологий, что совсемне значит, будто на этом их список заканчивается. За болеечем 20 лет существования ядра в Linux появилось и исчезлоогромное количество технологий, для описания которых пришлосьбы расширить статью до полноценной книги.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!