В реализации программного RAID для Linux обнаружена ошибка, которая может привести к повреждению мета-данных
Нейл Браун (Neil Brown), основной разработчик пакета mdadm и подсистемы для обеспечения работы программных RAID-массивов в Linux, опубликовал предупреждение о выявлении серьёзной ошибки в md/raid, которая может привести к обнулению важных мета-данных на дисках, входящих в программный RAID. Например, может быть очищена информация о массиве, о смещениях данных, размерах блоков и роли каждого диска в массиве. Всем пользователям рекомендуется первым делом сохранить на внешнем носителе вывод команды "mdadm -Evvvvs", для обеспечения возможности восстановления в случае проявления ошибки (для восстановления достаточно пересоздать массив через "mdadm --create" с теми же параметрами).Проблема присутствует в ядрах Linux с 3.4-rc1 по 3.4-rc4, с 3.3.1 по 3.3.3 и с 3.2.14 по 3.2.16. В ядра некоторых дистрибутивов также был портирован код, приводящий к ошибке: в SLES11-SP2 проблеме подвержены ядра 3.0.26-0.7 и 3.0.26-0.8, в Ubuntu - с 3.2.0-22.35 по 3.2.0-24.37. Ошибка проявляется только при перезагрузке, выключении или аварийном завершении работы. В процессе штатного функционирования проблема не всплывает. Ошибка возникает в ситуации, когда в процессе завершения работы массив находится в частично собранном и остановленном состоянии, что может возникнуть, например, при использовании команд "mdadm --incremental" или "mdadm -A". В частности, опасное стечение обстоятельств может наблюдаться в Ubuntu, когда в процессе завершения работы скрипт остановки RAID массива пересечётся с работой udev-скрипта, выполняющего "mdadm --incremental".
Для исключения проявления ошибки в процессе обновления подверженного проблеме ядра рекомендуется перед перезагрузкой убедиться в отсутствии частично собранных RAID-разделов. Например, рекомендуется перед перезапуском выполнить команды "mv /sbin/mdadm /sbin/mdadm.moved; /sbin/mdadm.moved --stop --scan", после чего загрузиться с новым ядром в одиночный режим и восстановить переименованный файл "mv /sbin/mdadm.moved /sbin/mdadm".
© OpenNet