Linux Internals — Вышел релиз Linux ядра 2.6.30. Обзор новшеств
Линус Торвальдс представил новый релиз Linux ядра - 2.6.30. В новое ядро принято более 13 тысяч исправлений от 1334 разработчиков, размер патча - 63Мб (добавлено 1 096 994 строк кода, удалено - 470 555).
В код ядра 2.6.30 добавлена поддержка новых файловых систем:
Другие заметные улучшения:
В код ядра 2.6.30 добавлена поддержка новых файловых систем:
- Файловая система NILFS2, разработанная в недрах японской телефонной компании NTT, как система особо устойчивая к сбоям. Для хранения всех данных в NILFS2 используются подобные логам структуры, в которых только добавляются новые записи и никогда не переписываются активные. Таким образом оборванная крахом операция записи, никак не отразится на целостности хранимых данных. В NILFS используются B-tree деревья и 64-битные структуры данных, поддерживается возможность фиксации снапшотов (контрольных точек в логе) для просмотра состояния данных на определенный момент времени. Более того с данными в снапшотах можно продолжать работать как с альтернативной веткой ФС, существующей параллельно.
- Файловая система Exofs (старое название osdfs), разработанная Avishay Traeger из IBM и представляющая собой вариант файловой системы ext2, адаптированный для работы с новым типом хранилищ объектов OSD (Object-based Storage Device). OSD представляет новый уровень абстракции при размещении информации, вместо линейной последовательности секторов в блочном устройстве (массив), представлена идея хранения объекта как единого целого. Exofs поддерживает протокол T10 OSD (расширение к SCSI), который позволяет передавать данные не блоками, а объектами (целыми файлами), при раздельной передаче данных и метаданных. Для экспериментов можно использовать тестовый OSD Initiator, хранящий данные в БД SQLite или симулятор OSD накопителя.
- fscache/cachefiles - разработанная в Red Hat универсальная инфраструктура для организации кеширования в локальной файловой системе данных, передаваемых через сетевые файловые системы, подобные NFS и AFS.
- В экспериментальном режиме ("staging") в состав ядра включен код высокопроизводительной распределенной сетевой файловой системы POHMELFS и устройства DST, представляющего собой драйвер сетевого устройства транспортного уровня для организации распределенных хранилищ данных, функционирующего в ядре на уровне блочного устройства, работающего поверх нескольких машин в сети (ближайшие аналоги - DRBD, iSCSI и NBD). Основные характеристики POHMELFS можно посмотреть здесь, DST - здесь. Системы разработаны Евгением Поляковым.
- Добавлены патчи улучшающие работу файловых систем btrfs, reiserfs, ext3, ext4. В состав включен патч к файловой системе ext4 с решением проблемы с потерей данных в файлах, перезаписываемых незадолго до момента краха системы. В патче представлен новый режим монтирования "auto_da_alloc", меняющий поведение отложенной записи данных при выполнении функций close и rename;
- Начальная поддержка NFS 4.1, уже реализована поддержка сессий, но интеграция кода Parallel NFS ожидается только в будущих версиях.
Другие заметные улучшения:
- Существенно переработана поддержка спящего и ждущего режима (suspend/resume), особенно в плане поддержки временной остановки во многих драйверах устройств;
- Поддержка протокола RDS (Reliable Datagram Sockets), предназначенного для высокоскоростного обмена сообщениями между узлами в кластере, с минимальной задержкой и гарантированной доставкой. Код предоставлен компанией Oracle;
- Реализована поддержка модулей безопасности TOMOYO Linux, по сути очень похожих на AppArmor, также привязывающих политику безопасности процесса к файловому пути, но реализованные концептуально более правильно (патч с AppArmor ранее был отвергнут для включения в Linux ядро);
- IMA (Integrity Management Architecture) - инфраструктура контроля целостности исполняемых файлов, созданная разработчиками IBM как дополнение средств SELinux и Slim возможностью защиты в офлайн режиме (например, когда злоумышленник получает доступ загрузившись со своего LiveCD). Новая система позволяет исполнять только файлы, имеющие корректную цифровую подпись, при изменении или замене файла его выполнение будет блокировано;
- Реализована поддержка чернового варианта будущего стандарта IEEE 802.11w, определяющего некоторые новые технологии для повышения безопасности передачи управляющей информации в беспроводных сетях;
- Добавлены системные вызовы preadv() и pwritev(), имеющиеся в BSD-системах;
- Расширена поддержка нового оборудования, в комплект включено много новых драйверов устройств (особенно WiFi), код звуковой системы ALSA обновлен до версии 1.0.19. В беспроводном стеке улучшена поддержка режимов энергосбережения, представленных в современных Wifi картах;
- Обработчики прерываний переведены на многопоточную систему работы, что позволит существенно повысить отзывчивость системы за счет ухода от блокировок;
- Добавлены дополнительные патчи, позволяющие уменьшить время загрузки ядра за счет асинхронной инициализации некоторых подсистем и аппаратных устройств, разработанные в рамках проекта Moblin.
- Добавлен DRM (Direct Rendering Manager) модуль для видеокарт ATI R600/700;
- Поддержка сжатия собранного образа ядра методами LZMA и BZIP2;
- В сетевую подсистему принят патч, позволяющий организовать обработку более 64 тысяч одновременных соединений через один bind() с указанием нулевого порта (номер порта будет выбран из группы доступных локальных адресов);
- Добавлена поддержка архитектуры MicroBlaze (софт-процессоры на базе Xilinx FPGA), обновлена input-прослойка, улучшен код загрузки прошивок (firmware), добавлен драйвер intel для организации виртуальных сетей.