The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"RAID_1 на трех дисках."
Вариант для распечатки  
Пред. тема | След. тема 
Форум Открытые системы на сервере (Файловые системы, диски)
Изначальное сообщение [ Отслеживать ]

"RAID_1 на трех дисках."  +/
Сообщение от pokpokpok (?), 17-Фев-22, 00:17 
Здравствуйте.
Я ничего не знаю о рейд массивах, сейчас читаю про это, и возник вопрос на который ответ пока не нагуглил.

Представьте ситуацию:
Есть два диска в linux mdadm RAID_1.

диск А пишет 1 и рапортует о норм завершении
диск В пишет 1 и рапортует о норм завершении но он неисправен и при чтении выдаст 0

В RAID_1 тогда имеем ситуацию в которой диски показывают разные данные.

Как в такой ситуации mdadm определит какой диск неисправен?


Если добавлю еще один диск в RAID_1 тогда будет так:

диск А пишет 1 и рапортует о норм завершении
диск В пишет 1 и рапортует о норм завершении но он неисправен и при чтении выдаст 0
диск С пишет 1 и рапортует о норм завершении

При чтении получаем 1 0 1 , и единиц больше.

Примет ли mdadm решение о том что результат должен быть 1 и укажет неисправный диск или просто будет ошибка?

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения [Сортировка по ответам | RSS]

1. Сообщение от муу (?), 17-Фев-22, 00:53   +1 +/
> Как в такой ситуации mdadm определит какой диск неисправен?

если диск/дисковая подсистема не даст ошибку - никак
есть такое явление как "bitrot", то есть с течением времени 0/1 могут сами перевернуться,
mdadm это не решает

> Примет ли mdadm решение о том что результат должен быть 1 и укажет неисправный диск или просто будет ошибка?

сам по себе не примет, ему пофиг, он не проверяет консистетность данных массива без пинка
проверку надо запускать вручную или по крону/таймеру, современные дистры устанавливают и активируют системдшный таймер по умолчанию

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #2

2. Сообщение от pokpokpok2 (?), 17-Фев-22, 05:51   +/
спасибо!

всю ночь опыты ставлю на виртуалке, пришел к тому что raid_1 при повреждении данных без ошибок диска никак не даст знать об этом, даже запуск проверки не поможет.

провел опыт:

создал на хостовой машине 4 файла и отдал их как диски в виртуалку.
в виртуалке сделал raid_1 из 4 дисков и в нем luks раздел cryptsetup-ом.
в luks разделе создал файл на 500мб и посмотрел его sha256sum.
потом c перезаписал 3 диска рандомом в на хост машине.
отмонтировал шифрованный раздел в виртуалке.
примонтировал его обратно, черт знает почему он примонтировался, видимо заголовок с первого диска(не перезаписанного) прочитался а данные с остальных.

посмотрел sha256sum файла 500мб, она изменилась.

при этом неповрежденный файл спокойно лежит на первом диске, а на трех остальных каша.
видимо mdadm для ускорения читает файл кусками с разных дисков и на выходе имем битый файл. это чертовски плохо...

сделал все это в raid_6, тут уже лучше, шифрованный раздел после отмонтирования не примонтировать снова пока не пересоберешь raid, это хоть показывает что ошибки есть,
но mdadm проверка при этом ничего не видит, как такое возможно... может я не проверку запускаю а что-то не то?
проверку запускаю вот так:

echo 'check' >/sys/block/md0/md/sync_action


А есть ли какие-то опции запрещающие mdadm в raid_1 читать файлы кусками с разных дисков для ускорения, и указывающие на чтение с всех участвующих в рейде дисков синхронно и сверку прочитанного?

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #1 Ответы: #3, #4

3. Сообщение от Ann None (?), 17-Фев-22, 10:16   +/
каша не на диске, каша в голове. марш учить матчасть что такое файл и что такое блочное устройство.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #2

4. Сообщение от izyk (ok), 18-Фев-22, 12:53   +/
> А есть ли какие-то опции запрещающие mdadm в raid_1 читать файлы кусками
> с разных дисков для ускорения, и указывающие на чтение с всех
> участвующих в рейде дисков синхронно и сверку прочитанного?

Нет, не должно и не будет. Цель raid1 заменить(удалить из массива) вышедший из строя диск(если raid1 смог понять что он вышел из строя), другим, рабочим, а не проверять целостность данных и их синхронность. Если нужна целостность, это делается на уровне ФС, а не дисков. И даже если бы такая возможность была, это не гарантировало бы целостность на уровне ФС. Так что и не нужно это в общем-то.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #2

5. Сообщение от Кукундер (?), 18-Фев-22, 16:13   +/
> Здравствуйте.
> Я ничего не знаю о рейд массивах, сейчас читаю про это, и
> возник вопрос на который ответ пока не нагуглил.
> Примет ли mdadm решение о том что результат должен быть 1 и
> укажет неисправный диск или просто будет ошибка?

Нет, RAID1 просто перепишет данные с мастера на слейв, если и когда найдёт несоответствие.

Следует посмотреть в сторону таких решений, как нелинейные файловые системы, типа zfs, или btrfs. Они тоже умеют располагаться на разных физических дисках и работать в режиме "raid1", однако, благодаря встроенным контрольным суммам данных, способны понять какой вариант данных был правильный, и синхронизовать не с матера на слейв. А из правильной реплики, на неправильную.

Ответить | Правка | Наверх | Cообщить модератору

6. Сообщение от pokpokpok3 (?), 19-Фев-22, 00:08   +/
Благодарю муу, izyk и Кукундера за ответы, буду изучать zfs и btrfs.
Ответить | Правка | Наверх | Cообщить модератору


Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру