Анонсирован релиз системы эмуляции аппаратного обеспечения и виртуализации QEMU 0.15. В подготовке новой версии приняло участие 150 разработчиков, по сравнению с прошлым выпуском внесено 1800 изменений, добавлено около 100 тыс. строк кода. В качестве эмулятора QEMU позволяет запустить программу собранную для одной аппаратной платформы на системе с совершенно иной архитектурой, например, выполнить приложение для ARM на x86-совместимом ПК. В режиме виртуализации в QEMU достигается производительность выполнения кода в изолированном окружении близкая к нативной системе, за счет прямого выполнения инструкций на CPU и задействования гипервизора Xen или модуля KVM.

Ключевым изменением QEMU 0.15 стала интеграция в состав наработок проекта Xen, что привело к значительному повышению качества поддержки режима виртуализации с задействованием гипервизора Xen. Изначально инструментарий и набор драйверов для обеспечения работы гипервизора Xen базировался на форке кода QEMU. Для того, чтобы собрать все накопленные с момента форка изменения и оформить их для возврата в родительский проект, понадобился год работы. Возврат изменений затрудняло большое число дублирующего кода с реализацией одних и тех же возможностей, созданных как силами QEMU, так и разработчиками Xen. Проделанная работа по слиянию общих кодовых баз пойдет на пользу обоим проектам, за счет прекращения выполнения двойной работы и переходу к более тесному сотрудничеству.

Основные улучшения:

  • Синхронизация поддержки KVM с проектом qemu-kvm: Портированы многочисленные исправления, накопленные в рамках проекта qemu-kvm. Синхронизирован код поддержки многопоточной модели. Базовый код поддержки KVM теперь будет совместно использоваться и развиваться одновременно для qemu и qemu-kvm.
  • Для использования инструментов для системы виртуализации KVM больше не требуется наличия внешних заголовочных файлов Linux-ядра, все поддерживаемые функции KVM теперь встроены в итоговый исполняемый файл;
  • Для архитектуры x86 в KVM обеспечена поддержка процессорных расширений SMEP (Supervisor Mode Execution Protection) и расширенных функций CPU VIA. Обеспечено корректное сохранение счетчика точного времени (TSC, Time Stamp Counter) при проведении миграции гостевых окружений. Переработана поддержка MCE (Machine Check Exception);
  • Поддержка новых целевых (эмулируемых) архитектур Lattice Mico32 (LM32) и UniCore32. Добавлена базовая поддержка эмуляции платы LM32 EVR и полная поддержка Milkymist SoC, включая функции отображения видео;
  • ARM: Исправлены недоработки в реализации эмуляции используемых в процессорах ARM расширений Neon, инструкций ARMv6 и ARMv7, операций с плавающей запятой. Добавлена поддержка SA-1110/SA-1100. Реализована эмуляция двух машин: ARM Versatile Express ("vexpress-a9") и Sharp Zaurus SL-5500 ("collie");
  • SPARC: Улучшения в OpenBIOS сделали возможным загрузку Solaris 8. Исправление ошибок в эмуляторе Sparc32 и Sparc64. Исправление реализации инструкций sdivx и udivx позволило обеспечить загрузку HelenOS в режиме командной строки;
  • Обеспечена поддержка сборки кода с реализацией хост-системы в режиме Thumb (сокращенная система команд) процессоров ARM;
  • Улучшена работа драйверов virtio-serial и virtio-balloon. Запрещено создавать несколько balloon-устройств, устранена утечка памяти при отсоединении устройства virtio-balloon, исправлена ошибка мешающая миграции после отсоединения устройства virtio-balloon;
  • Добавлена поддержка live-снапшотов в QMP (QEMU Monitor Protocol) при помощи команды snapshot-blkdev-sync;
  • Устранена проблема с излишним кэшированием размера носителя, что например, могло проявляться в показе размера ранее вставленного CD-ROM после смены диска;
  • В утилиту qemu-img для команд "convert" и "rebase" добавлена опция "-p" при указании которой наглядно отображается прогресс выполнения операции. Для команд "commit", "convert" и "rebase" добавлена опция "-t", позволяющая указать режим кэширования, который будет использован при открытии образа. Увеличена производительность выполнения операции преобразования образов.
  • Улучшена производительность создания и удаления внутренних снапшотов для блочных устройств qcow2;
  • Добавлена возможность увеличения размера уже созданных образов виртуальных машин QED (QEMU Enhanced Disk) при помощи команды "qemu-img resize". Повышена устойчивость образов QED от повреждения в результате аварийного завершения, например, после выключения питания;
  • Для образов VMDK обеспечена поддержка субформата monolithicFlat;
  • В Sheepdog, распределенном хранилище для инфраструктуры виртуальных серверов на базе QEMU/KVM, добавлена возможность предварительного резервирования места в процессе создания образов виртуальных машин;
  • Для поддержки RBD теперь используется высокоуровневая библиотека librbd вместо librados;
  • В код эмуляции IDE-подсистемы добавлена поддержка команды TRIM. Вместо одного общего устройства ide-drive, для жестких дисков теперь используется устройство ide-hd, а для CD-ROM - ide-cd. По аналогии для SCSI-устройств вместо scsi-disk для жестких дисков теперь используется scsi-hd, а для CD-ROM - scsi-cd;
  • Многочисленные исправления, связанные с обеспечением совместимости эмулятора CDROM со спецификацией ATAPI. Проведен значительный рефакторинг кода;
  • Для перенаправления пакетов ICMP ECHO (ping) задействована появившаяся в ядре Linux 3.0 возможность создания непривилегированных ICMP-сокетов. Налажена поддержка DHCP в режиме host-only;
  • В QMP (QEMU Monitor Protocol), базирующегося на JSON асинхронного протокола для взаимодействия пользовательских приложений с QEMU, добавлена поддержка команд inject-nmi и snapshot-blkdev-sync, устранены проблемы с работой парсера JSON, добавлен агент выполнения команд в гостевых окружениях;
  • В код поддержки операционной системы Linux (linux-user) добавлена поддержка системных вызовов ppoll, sched_{g,s}etaffinity, epoll, pselect6 и prlimit64. Добавлена поддержка целевых платформ s390x и unicore32;
  • В список обязательных для сборки зависимостей добавлена библиотека glib-2.0, а в список опциональных зависимостей добавлены libcurl 7.15.4 и spice 0.6.0.


Источник: http://www.opennet.ru/opennews/art.shtml?num=31441