История изменений
Исправление ASM, (текущая версия) :
Информация о том, что данные испорчены, тоже является информацией. Если мы пишем что-то на один из дисков, то мы лишаем систему информации о том что они ошибочные, raid5 в теории может вычислить что данные на одном из диска ошибочные, но не имеет возмжности это исправить, что приводит к порче данных по всем дискам в массиве. Конкретно raid6 в linux не поддерживает коррекцию ошибок, т.е. ведёт себя аналогично raid5. (хотя я не понимаю почему, так как raid6 содержит излишние данные, которые позволяют не только востановить битый диск, а ещё и вычислить факт порчи)
Машиной, что ли? Он в каком состоянии?
Было записано около 500 мб на одном из дисков, это уничтожило около 500 мб ext4 раздела с самого начала (и не только), в том числе нулевой superblock, который был успешно востановлен с помощью fsck.ext4. Ну и пострадали некоторые файлы.
Как выяснилось, на нулевом суперблоке, при включении опции шифрования encrypt в поле «Encryption PW Salt» записывается 16 битное случайное значение соли. Из соли и пароля формируется симмитричный ключ (рас)шифрования каталогов. Т.е. зная только пароль расшифровать каталог невозможно, так как необходимо так-же знать и соль. В свою очередь эта соль записывается ТОЛЬКО в нулевой супурблок, и при его уничтожении мы теряем всё содержимое всех зашифрованных каталогов в этой файловой системе. Что у меня и произошло.
Я так понимаю мне нужно найти бекап нулевого суперблока, последняя надежда я думаю, это найти в файлах журнала ext4. Но вероятность этого около нуля.
В целом ошибка конечно моя, но в свою очередь остаются крайне непонятные и не логичные для меня вещи:
- Почему raid6 просто херит данные, а не вычисляет факт ошибки по избыточным данным
- Нафига было делать соль размером 16 байт. Соль в 8 байт так-же успено бы защитила от словарей, но в свою очередь точно зная пароль дала бы возможность её забрутфорсить, при потери.
- Почему соль не дублируется по всем суперблокам, а хранится только в нулевом суперблоке.
Исходная версия ASM, :
Информация о том, что данные испорчены, тоже является информацией. Если мы пишем что-то на один из дисков, то мы лишаем систему информации о том что они ошибочные, raid5 в теории может вычислить что данные на одном из диска ошибочные, но не имеет возмжности это исправить, что приводит к порче данных по всем дискам в массиве. Конкретно raid6 в linux не поддерживает коррекцию ошибок, т.е. ведёт себя аналогично raid5. (хотя я не понимаю почему, так как raid6 содержит излишние данные, которые позволяют не только востановить битый диск, а ещё и вычислить факт порчи)
Машиной, что ли? Он в каком состоянии?
Было записано около 500 мб на одном из дисков, это уничтожило около 500 мб ext4 раздела с самого начала (и не только), в том числе нулевой superblock, который был успешно востановлен с помощью fsck.ext4. Ну и пострадали некоторые файлы.
Как выяснилось, на нулевом суперблоке, при включении опции шифрования encrypt в поле «Encryption PW Salt» записывается 16 битное случайное значение соли. Из соли и пароля формируется симмитричный ключ (рас)шифрования каталогов. Т.е. зная только пароль расшифровать каталог невозможно, так как необходимо так-же знать и соль. В свою очередь эта соль записывается ТОЛЬКО в нулевой супурблок, и при его уничтожении мы теряем всё содержимое всех зашифрованных каталогов в этой файловой системе. Что у меня и произошло.
Я так понимаю мне нужно найти бекап нулевого суперблока, последняя надежда я думаю, это найти в файлах журнала ext4. Но вероятность этого около нуля.
В целом ошибка конечно моя, но в свою очередь остаются крайне непонятные и не логичные для меня вещи:
- Почему raid6 просто херит данные, а не вычисляет факт ошибки по избыточным данным
- Нафига было делать соль размером 16 байт. Соль в 8 байт так-же успено бы защитила от словарей, но в свою очередь точно зная пароль дала бы возможность её забрутфорсить, при потери.
- Почему соль не дублируется по всем суперблокам, а хранится только в нулевом секторе.