LINUX.ORG.RU
ФорумAdmin

Debian: EXT4 journal и md RAID10 после выключения перестраивается зачем?!


0

0

Коллеги,

сделал MD RAID10
из 4-х дисков Seagate 500GB SATA2
общей емкостью соответственно 1 GB
поставил туда EXT4 с журналированием.
debian:/var/log# mount
/dev/md127 on /mnt/raid10 type ext4 (rw,acl)

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

dmesg | grep md127
[ 8.701813] md: md127: raid array is not clean — starting background reconstruction
[ 8.715151] raid10: raid set md127 active with 4 out of 4 devices
[ 8.715243] md: resync of RAID array md127
[ 8.716257] md127: detected capacity change from 0 to 1000213577728
[ 8.716315] md127: unknown partition table
[ 12.784836] kjournald2 starting: pid 2001, dev md127:8, commit interval 5 seconds
[ 12.793917] EXT4 FS on md127, internal journal on md127:8
[ 12.891430] EXT4-fs: mounted filesystem md127 with ordered data mode

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

оно конечно не сильно критично в плане перестроения (90 минут на PhenomII 945) но что будет например с валидностью базы данных которая предположительно будет на этом массиве в таком случае?

debian:/var/log# uname -na
Linux debian 2.6.30-bpo.2-686 #1 SMP Fri Dec 11 18:12:58 UTC 2009 i686 GNU/Linux
debian:/var/log# mdadm --version
mdadm - v3.1.1 - 19th November 2009

CUround,
MarvinFS.

Весь массив грохнулся, а вы чего-то хотите?

RAID-10 не защищает от сбоев во всех носителях, а обнаруживает и локализует проблему одного и/или двух (в разных парах) винчестеров.

В вашем случае получился искусственный аппаратный сбой всех носителей.

iZEN ★★★★★
()

вероятно информация не на все диски успела записаться.

Atlant ★★★★★
()
Ответ на: комментарий от iZEN

не я всё понимаю, так ведь ЖУРНАЛИРОВАНИЕ!!!!
если транзакция файловой системы не прошла до конца, она не записывается на диск. в этом же весь и смысл!!!!
а raid10 в данном случае рассматривается как одиная файловая система с одним разделом... по идее массив выжить должен был... сейчас вот проверит тоже самое на RAID1 массиве таком же, просто рядом с такими же дисками тоже с EXT4+J, и чота всё замечательно выжило, ничо не рассыпалось.

MarvinFS
() автор топика

man mdadm на предмет bitmap чтобы быстро пересобиралось.

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

true_admin ★★★★★
()
Ответ на: комментарий от MarvinFS

>но что будет например с валидностью базы данных

Вы тут собрали всё в кучу. Разные уровни, разные понятия надёжности. Журналирование файловой системы бывает разных типов (данные или только метаданные) и в общем случае не гарантирует целостность базы данных на ней. Вот, например, в PostgreSQL существует журнал транзакций. RAID не расчитан на вырубание питания, на аппаратных RAID'ах бывает отдельная батарейка, позволяющая не обесточивать контроллер.

mky ★★★★★
()
Ответ на: комментарий от mky

Господа, погодите, я наверное не совсем ясно изъясняюсь,

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

MarvinFS
() автор топика
Ответ на: комментарий от MarvinFS

что такое «перестроение»? Если ресинк рейда то он не потребуется только в двух случаях: тачку выключили корректно или есть батарейка на рейде.

Если файлухи то журнал накатывается всегда когда стоит dirty-флаг.

true_admin ★★★★★
()
Ответ на: комментарий от MarvinFS

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

Ещё раз - RAID и ФС работают на разных уровнях. RAID ничего не знает о том, что где-то там есть ФС. У него есть только массив с записанными на него данными, не имеющими никакого формата. Ext4 ничего не знает про RAID. Для неё существует только блочное устройство на котором можно читать/писать данные.

Deleted
()
Ответ на: комментарий от true_admin

перестроение т.е resync (reconstruction) самого массива.

да согласен, а почему тогда при некорректном выключении не делается resync на raid1? (на freebsd UFS на GEOM RAID1 если выключать некорректно, ресинк сессно всегда делается) а тут на EXT4 не делается!

MarvinFS
() автор топика
Ответ на: комментарий от Deleted

[quote]Ещё раз - RAID и ФС работают на разных уровнях. RAID ничего не знает о том, что где-то там есть ФС. У него есть только массив с записанными на него данными, не имеющими никакого формата. Ext4 ничего не знает про RAID. Для неё существует только блочное устройство на котором можно читать/писать данные.[/quote]

Совершенно с Вами согласен, и что из этого следует касаемо вопроса валидности данных при использовании журналирования файловой системы?

MarvinFS
() автор топика
Ответ на: комментарий от MarvinFS

Хорошо, а если немного по другому поставить вопрос:

независимо от необходимости и выполнения ресинка рэйда, останется ли консистентной база данных на журналируемой EXT4 при некорректном выключении питания?

MarvinFS
() автор топика
Ответ на: комментарий от MarvinFS

Не факт.
Именно по этому нужен ups, умеющий выключать сервак и бэкапы на незавитсимый носитель.
RAID мало даёт для сохранности данных, больше для устойчивости к сбоям.
Для сохранности данных нужно резервной копирование. Журнал при активном обращении к фс в момент отключения мало поможет.

CyberTribe ★★
()
Ответ на: комментарий от MarvinFS

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

Из этого следует то, что журнал ФС никаким образом не может (и не должен) помогать рассыпавшемуся RAID'у.

Deleted
()

могу добавить:

при настройках EXT4: (ядро 2.6.30, 2х500 raid1, 4x500 raid10)
data=ordered
barrier=1
-J size=1024

RAIDы собраны с параметрами BITMAP=INTERNAL
mdadm -C -v -l10 -n4 -b internal --name raid10 /dev/md1
mdadm -C -v -l1 -b internal -n2 --name raid1 /dev/md0

опции монтирования
/dev/md127 /mnt/raid10 ext4 defaults,rw,acl,nodelalloc 0 1
/dev/md126 /mnt/raid1 ext4 defaults,rw,acl,nodelalloc 0 1

если выключить питание во время интенсивной записи на эти массивы (запись идет одновременно на каждый массив, скорость записи на каждый из массивов 95 мегабайт\сек)
то ПЕРЕСТРОЕНИЕ (resync, rebuild, reconstruction) всего массива НЕ ПРОИСХОДИТ!!!!!! МАССИВЫ ВЫЖИВАЮТ!!!!! проверил 3 раза для верности... подряд...


вот для информации общение разработчиков по этому поводу
(описание и обсуждение barrier от разработчиков)
http://lwn.net/Articles/283161/
общее описание фич
http://ext4.wiki.kernel.org/index.php/Ext4...s_on_by_default

fsck никаких ошибок после этого не находит и ничего не перестраивается

что касается performance impact при включении этих фич, то на мой radi10 из 4по500GB Seagate SATA2
скорость записи составляет 95-105 мегабайт в секунду, что для меня более чем достаточно.

MarvinFS
() автор топика
Ответ на: комментарий от mky

> на аппаратных RAID'ах бывает отдельная батарейка, позволяющая не обесточивать контроллер.

тачку выключили корректно или есть батарейка на рейде.

Да вы чего... Батарейка на райде нужна для сохранения информации из кэша контроллера. Чтобы те 128/256/512 мегабайт данных, которые не успели записаться на винты, не потерялись и записались при включении питалова. Нужна для включения write caching.

Deleted
()

журналирование фс — помогает fsck'ею по-возможности быстрее и правильнее отработать.
Всё. Это не транзакции БД.

далее проверяю отказоустойчивость

во время записи данных на массив дергаю по питанию сервер.

Это тест проверки UPS. Он у тебя есть? Хочешь проверить РЕЙД — дергай диск во время работы.

sdio ★★★★★
()
Ответ на: комментарий от MarvinFS

Цитируем MarvinFS

если выключить питание во время интенсивной записи на эти массивы (запись идет одновременно на каждый массив, скорость записи на каждый из массивов 95 мегабайт\сек) то ПЕРЕСТРОЕНИЕ (resync, rebuild, reconstruction) всего массива НЕ ПРОИСХОДИТ!!!!!! МАССИВЫ ВЫЖИВАЮТ!!!!! проверил 3 раза для верности... подряд...

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

sdio ★★★★★
()
Ответ на: комментарий от Deleted

>Батарейка на райде нужна для сохранения информации из кэша контроллера.

Совершенно правильно. А в случает soft-raid батарейки нет, а кеш как бы есть (ОЗУ компьютера), поэтму при вырубании питания soft-raid рассыпается, а точнее система не знает, целостный ли он и делает синхронизацию входящих в него дисков.

P.S. Лучше бы топикстартер купил не 4 винта, а 1 винт, а на сэкономленные деньги можно было бы купить нормальный UPS.

mky ★★★★★
()
Ответ на: комментарий от MarvinFS

> останется ли консистентной база данных на журналируемой EXT4 при некорректном выключении питания?

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

Eshkin_kot ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.