/etc/cron.weekly/99-raid-check: WARNING: mismatch_cnt is not 0 on /dev/md0

N
На сайте с 06.05.2007
Offline
419
#131
myhand:
Если вам так все очевидно - где баг?

может быть нигде. в конце концов, write cache на дисках включен (он у многих включен)

как бы ни старался md, часть данных может не записаться.

манипуляции с md, после которых reiserfs начинает работать как задумано, на мой взгляд, исключают проблему в reiserfs.

Кнопка вызова админа ()
M
На сайте с 16.09.2009
Offline
278
#132
netwind:
может быть нигде. в конце концов, write cache на дисках включен (он у многих включен)
как бы ни старался md, часть данных может не записаться.

Тогда это тоже баг - либо в md, либо где-то уже ниже (вплоть до прошивки контроллера). По идее, write cache не должен мешать md, "if the programmers make the right call(s)" (тм).

barrier=1 (правда, md тоже должен их поддерживать, как и ФС, и LVM - если есть) должны исключить ситуацию с порчей данных ФС при резете из-за подобных вещей - но на это вроде не похоже.

netwind:
манипуляции с md, после которых reiserfs начинает работать как задумано, на мой взгляд, исключают проблему в reiserfs.

Да, если бы вы исключили "манипуляции" с reiserfs непосредственно на дисках (загрузчик).

Абонементное сопровождение серверов (Debian) Отправить личное сообщение (), написать письмо ().
Raistlin
На сайте с 01.02.2010
Offline
247
#133
myhand:
А вы хотите офигенную отказоустойчивость бесплатно? Если "не много" по сравнению с контроллером - может и не стоит заморачиваться? - защита явно экономически малооправданна.

Гм. Ситуации бывают разные. Если я не хочу покупать адаптек за 60 тыс. рублей и в резерве держать еще один такой же - вполне понятно, почему. Кроме экономической целесообразности есть еще и другие факторы. Давайте оставим этот пустой разговор.

myhand:
А что, теперь известно? Можно пример?

Дооо... Я почему-то считал, что RAID1 Это RAID1. Не больше и не меньше. но когда почему-то могут 1000 секторов различать на дисках - это не рейд. Я, к своему стыду, даже не могу сказать, какие это секторы. Ну у меня /boot отдельно. Как и /var и /tmp и /home. Странно, да?

myhand:
Допустим, у меня mismatch_cnt = 1000 за месяц. Товарищ телепат, вам это что-то сказало об "активности использования" swap?

Я оценивал активность работы со swap по mismatch_cnt? Пожалуйста. процитируйте, где. Я оцениваю интенсивность работы swap другими средствами, у меня за этим смотрит мониторинг.

myhand:
Поясните почему, пожалуйста.

В данном случае гарантировать время записи данных на диск можно, к примеру, используя PIO. Или писать данные с задержками, не полагаясь на электронику винта. Или считывать данные с винта сразу после записи для верификации.

myhand:
А что, теперь известно? Можно пример?

Мдэ. А что, у меня данные на двух слабоиспользуемых винтах разные - ничего, да? Причем сразу же после ребилда массива. Это нормально, видимо, софт просто глючит и показывает мне бред, а на самом деле данные просто идентичны?

myhand:
По какой причине - выяснили?

Как раз это мне и интересно. Винты в порядке. Записи почти нет.

myhand:
Странно, что у вас отваливается только второй диск. Мягко говоря.

Отваливаются оба. А вот синхронизация начинается с первого. man md.

myhand:
killall -s 9 kvm
(в случае нагрузки - может поломаться, а для пустой виртуалки у меня получилось только что 3 из 3 взлетело нормально)

Да? А вы рейд внутри виртуалок поднимаете? Или чего? Я вот свой сервер резетом выдергивал.

myhand:
А зачем у ФС журнал - вам понятно? Не затруднит изложить это понимание здесь?

Гм. Журнал ФС бесполезен, если повреждено целевое устройство. Он защищает только от пропадания питания. Собственно говоря, журнал существует для того, что в него записываются изменения в ФС, которые можно откатить в случае проблем.

myhand:
Вот только почему-то в reiserfs есть механизмы для обеспечения целостности данных+метаданных, аналогичные ext3, например барьеры. Может перечислите эти самые дополнительные "предположения", требуемые от аппаратной части?

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

Ну и на засыпку. Чем объяснить то, что уже во время синхронизации намечается mismatch_cnt ?

cat /proc/mdstat
Personalities : [raid1] [raid0]
md4 : active raid1 sdc[0] sdd[1]
976762496 blocks [2/2] [UU]

md0 : active raid1 sdb1[1] sda1[0]
521984 blocks [2/2] [UU]

md2 : active raid0 sdb3[1] sda3[0]
20964352 blocks 256k chunks

md3 : active raid1 sda5[2] sdb5[1]
923809664 blocks [2/1] [_U]
[============>........] recovery = 64.0% (592067648/923809664) finish=684.8min speed=8072K/sec

md1 : active raid1 sdb2[1] sda2[0]
41945600 blocks [2/2] [UU]

unused devices: <none>
[root@nemo ~]# cat /sys/block/md3/md/mismatch_cnt
1280
HostAce - Асы в своем деле (http://hostace.ru)
N
На сайте с 06.05.2007
Offline
419
#134
myhand:
Тогда это тоже баг - либо в md, либо где-то уже ниже (вплоть до прошивки контроллера). По идее, write cache не должен мешать md, "if the programmers make the right call(s)" (тм).

из-за кеша записи на одном винте данные могут успеть записаться, а на втором могут не успеть.

хотя у меня не происходит пропадания питания - у меня внезапная перезагрузка.

myhand:
Да, если бы вы исключили "манипуляции" с reiserfs непосредственно на дисках (загрузчик).

я не представляю зачем grub legacy писать по диску. надо код смотреть.

писать файлы можно на устройство md с reiserfs, а загрузчик размещать в mbr /dev/sda и /dev/sdb. трогать файловые системы на sda и sdb вроде бы и не нужно.

M
На сайте с 16.09.2009
Offline
278
#135
Raistlin:
Кроме экономической целесообразности есть еще и другие факторы.

Больше нет. Цена - основной критерий, определяющий риски и бюджет защиты.

Raistlin:
Не больше и не меньше. но когда почему-то могут 1000 секторов различать на дисках - это не рейд.

Заявляется, что подобная ситуация возникает только в двух случаях:

1) кто-то трогает явно один из дисков, минуя рейд

2) приложение работает с сильно временными данными, в ситуации когда оно *в принципе* не собирается их позднее читать (mmap, swap и т.п.)

Обе в принципе, не позволяют утверждать наглость "это не рейд".

Raistlin:
Я, к своему стыду, даже не могу сказать, какие это секторы.

А вот это мне тоже не нравится. Не знаю, однако, может последние ядра дают администратору больше информации (например, в /sys/). Надо бы почитать...

Вроде только в тодо:

http://neil.brown.name/blog/20110216044002#12

Raistlin:
Я оценивал активность работы со swap по mismatch_cnt?

Нет, конечно. Просто "большие" по абсолютной величине mismatch_cnt (~1k) - ровно ничего не говорят порой об интенсивности использования swap.

Raistlin:
Мдэ. А что, у меня данные на двух слабоиспользуемых винтах разные - ничего, да? Причем сразу же после ребилда массива. Это нормально, видимо, софт просто глючит и показывает мне бред, а на самом деле данные просто идентичны?

Это нормально в конкретной ситуации (использование swap и т.п.).

Raistlin:
Как раз это мне и интересно. Винты в порядке. Записи почти нет.

Начните с того, что отключите swap.

Raistlin:
Да? А вы рейд внутри виртуалок поднимаете? Или чего?

Это простой тест, забыли? kill -9 как раз приблизительно эквивалентен внезапному отключению питания. С физической железкой, конечно, лучше - но не думаю что есть принципиальная разница в данном случае.

Raistlin:
Гм. Журнал ФС бесполезен, если повреждено целевое устройство. Он защищает только от пропадания питания.

Неуд.

Raistlin:
Как они помогут, эти барьеры, если на низком уровне ахинея?

На низком уровне _не может_ быть ахинеи, когда этот самый уровень (или уровни, к примеру если у вас между ФС и диском еще и LVM есть) барьеры поддерживает. Вы бы познакомились немного с предметом.

Raistlin:
Чем объяснить то, что уже во время синхронизации намечается mismatch_cnt ?

Поподробнее. Опишите свои действия.

Объяснение покуда штатное из man md "SCRUBBING AND MISMATCHES", в частности учтите то что пишет рейд в ответ на check/repair. Например, после repair c исправленными mismatch_cnt!=0 - показатель md/mismatch_cnt будет ненулевым! Судя по приведенному выводу команд - для вас это неожиданность.

netwind:
из-за кеша записи на одном винте данные могут успеть записаться, а на втором могут не успеть.

Ну и плевать. ФС с барьерами просто не посчитает такую транзакцию.

netwind:
я не представляю зачем grub legacy писать по диску. надо код смотреть.

да хоть savedefault?

netwind:
трогать файловые системы на sda и sdb вроде бы и не нужно.

Трогать определенно нужно, вопрос лишь в том - только ли на чтение.

N
На сайте с 06.05.2007
Offline
419
#136
myhand:

netwind:
из-за кеша записи на одном винте данные могут успеть записаться, а на втором могут не успеть.

Ну и плевать. ФС с барьерами просто не посчитает такую транзакцию.

Так ведь запишется разная информация на винты и получится рассинхронизация, которую нельзя определить по метке.

myhand:
да хоть savedefault?

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

M
На сайте с 16.09.2009
Offline
278
#137
netwind:
Так ведь запишется разная информация на винты и получится рассинхронизация, которую нельзя определить по метке.

Не запишется, учим матчасть.

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

Это *пример*.

N
На сайте с 06.05.2007
Offline
419
#138
myhand:
Не запишется, учим матчасть.

Какую еще матчасть?

Есть два отдельных физических диска. Блины на них крутятся сами по себе. Одни и те же команды выполняются за разное время.

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

В моем случае еще не известно прерывает ли. Питание-то никуда не пропадает.

Для исключения этой проблемы железные контроллеры делают с памятью и батарейкой.

Тут, вообще-то, должна сработать метка грязности в dmraid, но из-за ncq не известно записалась ли она раньше или позже данных и записалась ли вообще. Пока мне не известно есть ли у dmraid какие-то собственные барьеры. Скорее всего нет, потому что это ухудшит производительность.

В принципе еще до появления ncq подобное поведение было у scsi-устройств и даже до появления барьеров в ядре как таковых. Так что dmraid должен бы учитывать эту ситуацию.

Raistlin
На сайте с 01.02.2010
Offline
247
#139
myhand:
Это нормально в конкретной ситуации (использование swap и т.п.).

На показанном выше примере swap нет. swap находится на md3 (RAID0). Остальные массивы НЕ используются... Вот так вот всё просто.

myhand:
Поподробнее. Опишите свои действия.

Объяснение покуда штатное из man md "SCRUBBING AND MISMATCHES", в частности учтите то что пишет рейд в ответ на check/repair. Например, после repair c исправленными mismatch_cnt!=0 - показатель md/mismatch_cnt будет ненулевым! Судя по приведенному выводу команд - для вас это неожиданность.

Этот рейд-массив НЕ использовался ещё ни разу. Собственно, массив собирается в первый раз.

M
На сайте с 16.09.2009
Offline
278
#140
netwind:
Пока мне не известно есть ли у dmraid какие-то собственные барьеры.

Есть, конечно. Их md и пользует.

netwind:
Скорее всего нет, потому что это ухудшит производительность.

Потому по-умолчанию все и выключено. Как минимум, для ext3/reiserfs. ext4 вроде уже включает по-умолчанию.

Raistlin:
Этот рейд-массив НЕ использовался ещё ни разу. Собственно, массив собирается в первый раз.

Как воспроизвести проблему? На уровне "для идиотов", пожалуйста: берем то-то, выполняем такие-то команды, делаем то-то, смотрим на вывод таких-то команд...

(Совсем хорошо, если получится без реальной железки, в qemu/kvm - железки трогать влом ;))

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий