После двух месяцев разработки Линус Торвальдс представил (https://lkml.org/lkml/2017/4/30/167) релиз ядра Linux 4.11 (https://www.kernel.org/). Среди наиболее заметных изменений: поддержка журналирования в программном RAID 4/5/6, новый тип сокетов SMC-R, встроенная реализация SipHash, системный вызов statx(), поддержка протокола Opal для работы самошифруюемыми накопителями, раздельные буферы с историей прокрутки для консолей.В новую версию принято около 12 тысяч исправлений от 1500 разработчиков,
размер патча - 39 Мб (изменения затронули 12479 файлов, добавлено 530154 строк кода,
удалено 232358 строк). Около 48% всех представленных в 4.11
изменений связаны с драйверами устройств, примерно 20% изменений имеют
отношение к обновлению кода специфичного для аппаратных архитектур, 14%
связано с сетевым стеком, 4% - файловыми системами и 5% c внутренними
подсистемами ядра.
Основные (http://kernelnewbies.org/Linux_4.11) новшества (https://lwn.net/Articles/716302/):
-
Дисковая подсистема, ввод/вывод и файловые системы
- В реализации RAID 4/5/6 на базе подсистемы MD появилась (https://git.kernel.org/linus/63c32ed4afc2afd6b5551a8fcdea5b5... поддержка журналирования, защищающая от потери данных в случае пропадании питания или краха. Реализация подготовлена (https://code.facebook.com/posts/414713638724358/improving-so... компанией Facebook. Журнал ведётся на отдельном носителе (SSD или NVRAM). Все данные вначале отражаются в журнале, после чего разносятся по дискам, входящим в RAID-массив. В ситуации неожиданного отключения питания, даже если RAID находился в деградированном состоянии или данные были записаны лишь на часть дисков, повреждений удастся избежать, так как вся информация о транзакции отражена в журнале;
- Для файловой системы ext4 реализована новая ioctl-команда EXT4_IOC_SHUTDOWN, которая позволяет убедиться, что раздел остановлен и нет необходимости в сбросе данных, остающихся в оперативной памяти. Возможность подготовлена по аналогии с командой XFS_IOC_GOINGDOWN;
- В файловой системе CIFS реализована (https://git.kernel.org/linus/2bfe01eff4307409b95859e860261d0... поддержка шифрованного доступа к разделам с использованием протокола SMB3;
- В многоуровневой системе очередей (multiqueue), рассчитанной на организацию многопоточного доступа к данным на многоядерных системах, появилась (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/lin... поддержка подключения планировщиков ввода/вывода. В настоящее время для multiqueue пока портирован только планировщик deadline, но планируется портирование cfq, noop и даже планировщика ввода/вывода BFQ (https://www.opennet.ru/opennews/art.shtml?num=15332), который ожидается в ядре 4.12;
- Добавлена возможность работы с накопителями, соответствующими спецификации Opal (https://en.wikipedia.org/wiki/Opal_Storage_Specification), которая определяет механизм шифрования хранимых данных, позволяющий не допустить утечку информации в случае попадания носителя информации не в те руки. Поддержка Opal добавлена только для поддерживающих данную технологию NVME-контроллеров. Пользователям предоставлены команды для настройки, блокирования при переходе в спящий режим и разблокирования SED-накопителей (Self-Encrypting Drives);
- В F2FS, развиваемой компанией Samsung высокопроизводительной файловой системе для Flash-накопителей, включена по умолчанию опция inline_xattr, обеспечивающеая inline-хранение в inode атрибутов xattr. Для отключения предложена опция монтирования "noinline_xattr". Добавлен отдельный поток для асинхронного выполнения команд "discard";
- В OverlayFS обеспечена поддержка многопоточного копирования содержимого обычных файлов (ранее операции копирования выполнялись последовательно, что было узким местом в производительности);
- Отключена (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/lin... поддержка NFSv4 по UDP, которая была в неработоспособном виде и расходилась со спецификацией. Также по умолчанию отключены метки безопасности для NFS (для активации при экспорте следует явно указывать security_label), так как данная возможность имеет смысл только при установке на сервере и клиенте похожих правил SELinux;
-
Виртуализация и безопасность
- Для использования с ядром портирован GCC-плагин structleak (https://lwn.net/Articles/712161/), разработанный проектом Grsecurity и выполняющим принудительную инициализацию структур, передаваемых в пространство пользователя для блокирования возможных утечек информации;
- В ядро встроена (https://lkml.org/lkml/2016/12/21/477) реализация алгоритма SipHash, предоставляющего более безопасный и быстрый метод хэширования;
- В Xen добавлена (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/lin... поддержка загрузки гостевых систем в режиме PVH, комбинирующем элементы режимов паравиртуализации (PV) для ввода/вывода, обработки прерываний, организации загрузки и взаимодействия с оборудованием, с применением полной виртуализации (HVM) для ограничения привилегированных инструкций, изоляции системных вызовов и виртуализации таблиц страниц памяти;
- Для KVM реализован (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/lin... драйвер PTP, позволяющий получить доступ из гостевой системы к часам реального времени хост-системы, что даёт возможность использовать Chrony для высокоточной синхронизации часов хоста и гостевой системы;
- Добавлен интерфейс /sys/kernel/security/lsm, через который можно узнать список активных LSM-модулей;
- Добавлена (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/lin... реализация алгоритма шифрвоания AES, обеспечивающая фиксированное время выполнения для защиты от атак, пытающихся определить характер данных на основе изменения времени обработки операции;
- Реализация генератора псевдослучайных чисел переведена (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/lin... с хэширования MD5 на использование безопасного и быстрого алгоритма поточного шифра ChaCha20 при формировании энтропии для целочисленного вывода get_random_int и get_random_long;
- Добавлен (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/lin... sysctl для загрузки правил AppArmor непривилегированным пользователем для нового namespace;
-
Сетевая подсистема
- Реализован новый тип сокетов "SMC-R (ftp://public.dhe.ibm.com/software/os/systemz/pdf/Linux_SMC-R... (Shared Memory Communications over RDMA, RFC-7609 (https://tools.ietf.org/html/rfc7609)), предназначенный для организации похожих на TCP каналов связи поверх транспорта RDMA (https://ru.wikipedia.org/wiki/%D0%A3%D0%... (Remote Direct Memory Access). Протокол разработан компанией IBM и позволяет без внесения изменений (загрузив библиотеку через LD_PRELOAD) адаптировать уже написанные для TCP приложения для работы в сетях RoCE (RDMA over Converged Ethernet (https://en.wikipedia.org/wiki/RDMA_over_Converged_Ethernet));
- Добавлен модуль "psample" для выборки сетевых пакетов, проходящих через сетевой интерфейс, для дальнейшего отсеивания фильтром-классификатором;
- В сетевой подсистеме теперь применяется (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/lin... SipHash вместо MD5 для генерации номеров последовательности и вместо SHA1 для syn...
URL: https://lkml.org/lkml/2017/4/30/167
Новость: http://www.opennet.ru/opennews/art.shtml?num=46433