В ядре Linux выявлены ошибки, приводящие к зависанию процессов и повреждению разделов EXT4

Материал из Викиновостей, свободного источника новостей

20 мая 2015 года

В ядре Linux выявлены две неприятные ошибки:

Начиная с выпуска 3.14 и заканчивая 3.18, т.е. с января по октябрь 2014 года, в ядре Linux присутствовала неприятная ошибка в реализации вызова futex_wait, которая могла приводить к непредсказуемому зависанию процессов на серверах с процессорами на базе микроархитектуры Intel Haswell, в том числе используемых в облаках Amazon.Данная ошибка является причиной замешательства многих программистов, которые месяцами пытались найти ошибку в своих приложениях, зависающих при непонятных обстоятельствах. Причиной зависания была взаимная блокировка в ядре из-за которой фьютекс (futex) оставался навсегда в состоянии блокировки, несмотря на его фактическое освобождение.

Проблема усугубляется тем, что связанная с проблемой функциональность была перенесена в ядро, поставляемое в дистрибутиве Red Hat Enterprise Linux и присутствует как минимум в выпусках RHEL/CentOS 6.6 и 7.1. В свежем обновлении RHEL 6.6.z проблема устранена, но остаётся неисправленной в RHEL 7.1. В пакетах с ядром для Ubuntu 14.04 и Debian 8 проблема была устранена(недоступная ссылка) ещё в прошлом году. Ubuntu 12.04 и Debian 7 не были подвержены проблеме. В SLES 12 ошибка также была перенесена, но уже устранена в ядре 3.12.32-33.1.

Вторая проблема проявляется в ядре 4.0.2 и устранена в выпуске 4.0.3. При определённом стечении обстоятельств ошибка может привести к значительному повреждению целостности файловой системы Ext4 и потере части данных. У большинства пользователей, сообщивших о проявлении проблемы, использовался RAID0 на базе mdadm. Сообщается также о проявлении похожих проблем при использовании dm-crypt.

Дополнение: Причиной проблемы в Ext4 оказалась ошибка в реализации программного RAID 0, проявляющаяся при монтирования с опцией DISCARD. В отличие от ранее опубликованных сведений, проблема не специфична для файловой системы Ext4 и присутствует в коде подсистемы md-raid. Ошибка проявляется в ветках ядра 4.0 и 3.14 LTS, начиная с выпусков 4.0.2 и 3.14.41. При изменении или удалении файлов возможно непредсказуемое нарушение целостности файловой системы, установленной поверх RAID 0.

В настоящее время исправление доступно в виде патча. Для Arch Linux уже выпущены устраняющие проблему обновления ядра linux 4.0.4-2 и linux-lts 3.14.43-2. В основном ядре исправления ожидаются в выпусках 4.0.5 и 3.14.44. Пользователям ядер 4.0.2+ и 3.14.41+, у которых применяется RAID0 с опцией DISCARD, рекомендуется перемонтировать раздел без DISCARD и проверить целостность файловой системы при помощи fsck.

Источники[править]

Creative Commons
Creative Commons
Эта статья содержит материалы из статьи «В ядре Linux выявлены ошибки, приводящие к зависанию процессов и повреждению разделов EXT4», опубликованной OpenNET и распространяющейся на условиях лицензии Creative Commons Attribution (CC BY) — указание автора, источник и лицензию.
Эта статья загружена автоматически ботом NewsBots в архив и ещё не проверялась редакторами Викиновостей.
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.

Комментарии[править]

Викиновости и Wikimedia Foundation не несут ответственности за любые материалы и точки зрения, находящиеся на странице и в разделе комментариев.