Релиз Linux-ядра 2.6.34

Линус Торвальдс представил релиз Linux ядра 2.6.34, в которое принято 10167 исправлений от 1305 разработчиков, размер патча - 39 Мб (добавлено 621 тыс. строк кода, удалено - 290 тыс. строк). Около 42% всех представленных в 2.6.34 изменений связаны с драйверами устройств, примерно 27% изменений имеют отношение к обновлению кода специфичного для аппаратных архитектур, 14% связано с сетевым стеком, 7% - файловыми системами и 6% c внутренними подсистемами ядра.

Основные новшества:

  • Дисковая подсистема, ввод/вывод и файловые системы
    • Интегрирован код файловой системы Ceph, способной поддерживать работу хранилища объемом в несколько петабайт (1 Пб = 1024 Тб), распределенного по тысячам машин. Встроенные в Ceph механизмы репликации данных (данные разбиваются на блоки и несколько раз дублируются на разных машинах) обеспечивают чрезвычайно высокую живучесть системы. При добавлении или удалении новых узлов, массив данных автоматически ребалансируется с учетом изменения конфигурации. В Ceph имеется поддержка снапшотов, причем снапшот может быть создан не только для ФC, но и для отдельных директорий. В отличии от таких файловых систем, как GFS, OCFS2, и GPFS, в Ceph обработка данных и метаданных разделена на различные группы узлов в кластере. Ceph может работать поверх блочных устройств, внутри одного файла или через размещение данных в существующих ФС (например, XFS).
    • В состав ядра принят код файловой системы LogFS, специально спроектированной для использования на Flash-накопителях. В LogFS интегрирован механизм минимизации повторной перезаписи блоков, поддерживается журналирование и сжатие данных на лету. Дерево элементов файловой системы в LogFS хранится в Ext2 подобном виде, что позволило избавиться от двух главных проблем файловой системы JFFS2 - повышенного расхода памяти и длительного времени монтирования. В отличие от LogFS, в JFFS2 служебная информация записывается только в форме лога, что приводит к необходимости сканирования данных для воссоздания структуры ФС при каждом монтировании и к хранению всей структуры ФС в оперативной памяти в процессе работы (линейная зависимость от объема данных).
    • Значительное обновление кода файловой системы Btrfs: Для тонкой настройки ФС добавлена пользовательская утилита "btrfs". Расширены возможности по работе с подразделами и снапшотами, которые теперь можно назначать для монтирования по умолчанию (например, можно установить все обновления дистрибутива или провести эксперимент в отдельном снапшоте, а затем мгновенно переключиться на обновленный образ корневой ФС, а если возникнут проблемы - вернуться обратно). Для более точного соответствия реальной ситуации изменен метод расчета свободного места, которым оперирует утилита df. В defrag-код добавлена поддержка сжатия файлов при необходимости или дефрагментации только диапазонов байт в файле.
    • В реализацию файловой системы FAT добавлена поддержка больших дисков (более 2 Тб) c размером сектора 4096 байт;
    • В код файловой системы Squashfs интегрирована поддержка сжатия методами LZMA и LZO;
  • Сетевая подсистема
    • Реализована поддержка механизма GTSM (RFC 5082, Generalized TTL Security Mechanism), позволяющая производить легковесные проверки пакетов для выявления DoS-атак на маршрутизаторы, оперирующих наводненим фиктивными BGP-пакетами. Для подтверждения факта отправки пакета близлежащим узлом в сети, напрямую присоединенного BGP-линка, в GTSM используется поле Time to Live (TTL) (IPv4) или Hop Limit (IPv6).
    • Добавлена поддержка RFC 3069 (private VLAN proxy arp);
    • Добавлен tap-драйвер macvtap, базирующийся на mac-vlan;
    • В nf_conntrack_sip добавлена поддержка TCP и протокола передачи факсов T.38;
  • Память и системные сервисы
    • Реализована поддержка выполнения в асинхронном режиме операций для перехода в спящий режим и возврата из него, что позволяет значительно ускорить засыпание и просыпание системы за счет параллелизации перевода в спящий режим PCI, USB и SCSI драйверов;
    • Повышена эффективность работы Kprobes, путем замены где это возможно точек останова на jump-переходы. Kprobes позволяет при разработке модулей ядра динамически выводить отладочную информацию без модификации исходных текстов, пересборки и перезапуска исследуемого объекта;
    • Продолжено расширение возможностей отладочной подсистемы Performance Events: в утилиту "perf" (tools/perf) добавлена команда perf lock для просмотра статистики блокировок; появилась возможность проведения кроссплатформенного анализа данных, сохраненных на системе с другой архитектурой; добавлена команда "perf buildid-cache" для настройки параметров внутреннего кэша; добавлены средства для написания скриптов на языке Python для обработки трассировочных данных.
    • Добавлена возможность выполнения lockdep-подобных проверок при использовании механизма синхронизации RCU (Read-copy-update), позволяющего организовать одновременный доступ к данным без использования блокировок. Новая возможность позволяет избавиться от ручных операций при проверке корректности работы RCU;
    • Во фреймворк TOMOYO, позволяющий привязать политику безопасности процесса к файловому пути, способом похожим с AppArmor, добавлен встроенный сборщик мусора;
  • Оборудование и аппаратные архитектуры
    • Добавлена возможность смены на лету активного графического процессора для ноутбуков, снабженных несколькими GPU (мощный, но энергоемкий, и малопроизводительный с низким потреблением энергии). Несмотря на то что ядро теперь поддерживает смену GPU на лету, X-сервер все еще требует перезагрузки.
    • В DRM-модуль Radeon (Direct Rendering Manager) добавлена начальная поддержка карт "Radeon Evergreen" (Radeon HD 5xxx). Модуль может быть использован совместно с драйвером xf86-video-ati, но пока не поддерживает акселерацию. В модуле Nouveau представлен новый API для взаимодействия с драйвером, работающим на уровне пользователя;
    • В состав ядра включен улучшенный драйвер udlfb, который дает возможность задействовать в Linux видеокарты с интерфейсом USB и USB2VGA-переходники на базе чипов DisplayLink, позволяющих подключить дополнительный монитор через USB-порт;
    • Добавлена поддержка PATA-контроллера VIA VX900 и чипов VT6415 PCIE;
    • Добавлена поддержка сетевых плат: Intel 82599 Virtual Function Ethernet, Chelsio T4 gigabit и 10Gb Ethernet, Qlogic CNA, Aeroflex Gaisler 10/100/1G Ethernet, Micrel KSZ8841/2 PCI Ethernet, SMSC LAN75xx USB gigabit Ethernet, Atheros AR8152/AR8152/AR2427.
  • Виртуализация.
    • В комплект добавлен balloon-драйвер, разработанный компанией VMWare и позволяющий гипервизору виртуализированной гостевой операционной системы динамически ограничивать объём доступной оперативной памяти. При возникновении нехватки памяти, когда гипервизор обнаруживает, что ему нужно перегруппировать страницы в памяти, он инструктирует драйвер для того, чтобы тот выделил некоторое количество страниц, и физическая память была возвращена гипервизору. Позднее гипервизор, присоединяя кадровые страницы к памяти, может вернуть память гостевой ОС и проинструктировать драйвер, чтобы тот "раздул баллон".
    • В состав интегрирован код vhost-net, акселератора сетевых функций KVM на уровне ядра, позволяющего оптимизировать производительность сетевых операций в гостевых окружениях за счет выноса на уровень ядра всех операции по преобразованию файловых дексрипторов, снижения операций по переключению контекста и минимизации числа обращений к системным вызовам (при обработка каждого пакета производится на 4 системных вызова меньше). Тестирование показало, что использование vhost-net позволяет без модификации кода гостевых систем увеличить отзывчивость в 5 раз и довести пропускную способность сети до уровня систем не использующих виртуализацию.
    • Добавлена начальная поддержка эмуляции гипервизора HYPER-V.

© OpenNet