Raistlin

Raistlin
Рейтинг
247
Регистрация
01.02.2010
myhand:
Гарантия. Бекап. Цена контроллера << стоимости данных.

Данные в данном случае стоят не много. Здесь другая ситуация. Сам по себе контроллер - дополнительные грабли при восстановлении, случись что с аппаратной начинкой. Система построена так, что нужно её быстро запустить и она не должна вызывать коллизий. До текущего момента мне было не известно о проблемах рассинхронизации md. Придётся пересматривать этот момент.

myhand:
Важно. Система с метаданными fs, с ее журналом - должна работать иначе. Ее драйвер явно будет интересовать в нужных местах: что данные записаны.

Но не ReiserFS. Она работает несколько быстрее, как раз и за счет того, что пологается на аппаратную начинку. Здесь даже не от ФС зависит. Несколько странно было бы после каждой записи делать Verify.

myhand:
Должен. Программы люди пишут, а не олимпийские боги.

В штатном случае своп использоваться НЕ должен. Если он настолько активно используется - это значит, что системе не хватает ресурсов и их НАДО добавить. Т.е. использование свопа сигнализирует о проблеме.

myhand:
"Вы мне запрещаете?" // mysql

В данном случае - даже MySQL не пишет несколько раз в секунду на диск данные в один и тот же сектор в течении продолжительного времени. Специфика MySQL такова, что он в основном производит много чтений, которые как раз забиваются в кеш ОС. А отложенной записи опять же на правильно настроенной системе нет.

myhand:
В том смысле, что хоть не должен допускать скрытой рассинхронизации массива.

Софт-рейд в данном случае убьет производительность к чертям. Собственно, поэтому и не делает. Я так понимаю, этот момент там организован хуже даже чем в Fake-RAID.

---------- Добавлено в 09:08 ---------- Предыдущее сообщение было в 08:26 ----------

Итак, на вполне работающем массиве наблюдается mismatch. При перезагрузке данные разные на дисках, но всё же синхронизируется у меня с первого рейда. Я так и не смог симулировать ситуацию, когда рейд будет запущен после резета в синхронизированном состоянии. А вот замечательный фэйл: виртуальная машина после резета на ext2 полностью разрушила свою ФС. не смотря ни на какие рейды... 70% данных находятся в lost+found. Очень занимательная ситуация... Активно скриптом вставлялись данные в MySQL, ФС была примонтирована с Defaults. Много думаю...

myhand:
С метаданными fs такого, по идее, случиться не должн

какая разница? Метаданные - те же часто меняющиеся данные. И не важно, файл это или нет.

myhand:
Проблема в том, что "цитата" не сводится к простому упоминанию "вумного слова". Дело вовсе не в DMA, а в том как система работает в подобном сценарии.

Я разве сказал, что дело только в дма? Кстати, это не является проблемой в обычном случае. От обрыва питания рейд спасать и не должен, а представить проблему в другом случае мне пока не удается. Свопа в правильно настроенной системе быть не должно. Как и прерванной записи. А если приложение по несколько раз в секунду пишет один и тот же файл - с ним что-то не то...

netwind:
при внезапной перезагрузке любой raid1 будет считаться грязным и поэтому работа будет идти только с одним диском.

нет. Об этом написано в мане. нет.

myhand:
Отказала фантазия?

вы предлагаете держать тонну контроллеров и запчасти к ним? Или что делать с этим барахлом, когда через 5 лет выйдет из строя контроллер? закупать еще 2 новых? та не вопрос. Прошу понять, что под надежностью понимается не только вероятность выхода из строя детальки, но так же вероятность проблем любых.

myhand:
Можете просветить нас подробнее насчет "ясности". Можно даже по-буржуйски

дма-запись на винты. В разный момент времени там могут быть разные данные. Т.е. при работе массива они там на винтах не синхронны, например это своп, частоизменяемый файл, прерванная запись. собственно, это и есть в цитате. При потере питания это может быть фатально...

---------- Добавлено в 00:29 ---------- Предыдущее сообщение было в 00:28 ----------

netwind, да ничего я от вас не хочу. Нужны вы мне. Можете спать идти.

myhand:
А как еще, если оба хорошо читаются?

при репэйр - с первого диска. а вообще вот вам ля размышлений. собсна картина с рейзером чуть яснее:

Suppose I memory-map a file and often modify the mapped memory.

The system will at some point decide to write that block of the file

to the device. It will send a request to raid1, which will send one

request each to two different devices. They will each DMA the data

out of that memory to the controller at different times so they could

quite possibly get different data (if I changed the mapped memory

between those two DMA request). So the data on the two drives in a

mirror can easily be different. If a ‘check’ happens at exactly this

time it will notice.

Normally that block will be written out again (as it is still ‘dirty’)

and again and again if necessary as long as I keep writing to the

memory. Once I stop writing to the memory (e.g. close the file,

unmount the filesystem) a final write will be made with the same data

going to both devices. During this time we will never read that block

from the filesystem, so the filesystem will never be able to see any

difference between the two devices in a raid1.

So: if you are actively writing to a file while ‘check’ is running on

a raid1, it could show up as a difference in mismatch_cnt. But you

have to get the timing just right (or wrong).

I think it is possible in the above scenario to truncate the file

while a write is underway but with new data in memory. If you do

this, the system might not write out that last ‘new’ data, so the last

write to the particular block on storage may have written different

data to the two different drives, and this difference will not be

corrected by the filesystem e.g on unmount. Note that the inconsistent

data will never be read by the filesystem (the file has been

truncated, remember) so there is no risk of data corruption.

In this case the difference could remain for some time until later

when a ‘check’ or ‘repair’ notices it.

---------- Добавлено в 00:14 ---------- Предыдущее сообщение было в 00:12 ----------

netwind:
В md так делать не надо. Нужно пометить диск как свободный. Потом подать команду на отключение в порт sata и уже потом выдергивать.

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

netwind:
поставьте нормальный raid с батарейкой.

Это не тот вариант. Не надежно по другим параметрам.

myhand:
md при repair просто выберет один блок случайным образом.

Случайным ли?

netwind, Блок питания сгорит? Контроллер на мамке умрёт? И т.п.? А система рассчитана так, что диск выдергивается немедленно и втыкается в другой аналогичный аппарат. И дисков там в RAID1 аж 4 штуки стоят... И система эта используется совсем не для размещения сайтов. Долгий простой может и жизни стоить. Хватит давать глупые советы. Мне сейчас придётся пачку экспериментов поставить, только и всего.

GreenBee, Отдельный сервер или ФТП для резервирования данных надо держать. Желательно у другого прова. Ну, а случившееся - форс-мажор, если вы не поняли.

P.S> Паркинг - золотой партнёр майкрософта и по величине входят в пятерку крупнейших. Так что прежде чем кидаться говном в этого хостера - следует поразмыслить.

netwind, А если питание пропадёт? Тогда как?

Всего: 4674