[Sysadmins] (fwd) ext3 sux
Michael Shigorin
=?iso-8859-1?q?mike_=CE=C1_osdn=2Eorg=2Eua?=
Пн Апр 3 18:04:08 MSD 2006
JFYI
-- forwarded message --
Message-ID: <slrne2oaa3.3i7jl.ilan/krondor.astelecom.ru>
From: Ilya Anfimov <ilan/astelecom.ru>
Newsgroups: fido7.ru.linux
Subject: ext3 sux
Date: Thu, 30 Mar 2006 18:54:31 +0000 (UTC)
Огрёб я тут геморроя. Некоторого. Решыл вот описать, можэт кого
на путь истинный наставит.
Суть в чём -- была файлуха, жыла, практически никого не трогала,
ext3. Писались туда файлики по-маленьку, место заполняли. Надо
было как-то ещё места им подкинуть.
Ну, отмонтировал, fsck -f, снёс журнал debugfs'ом, fsck -f,
(раздел к тому времени давно расшырен был), resize2fs, fsck -f,
примонтировал в режыме ext2, посмотрел, отмонтировал, добавил
журнал (э-э-э. Не помню, скорее tune2fs'ом), fsck -f,
примонтировал mount -a, порадовался.
Всё было замечательно недели две. До ребута по питанию. После
чего (я заметил это не сразу, а через день. Но, надо думать,
пришло это сразу) -- данные за те две недели испарились. Молча.
То есть вот ровно с такого-то момента -- как отрезало. До него --
всё замечательно. Очень вероятно -- что момент этот как раз
изменение размера. И продолжается всё только после ребута. А до
факта ребута они совершэнно точно там были (их многие видели).
При этом это явно не lvm колбасит. Поскольку в эту fs обычно
данные только пишутся, и не удаляются, да ещё и по одному
файлику -- то мне хорошо видно, что сразу за последним занятым
блоком идёт то, что туда писалось две недели назад. С
аккуратно забитыми нулями блоками, ровно на тех местах, где и
дожны быть block indexes и directories. То есть данные туда
были записаны, а затем дровами fs поваплены.
PS Да, я не на все 100% уверен, что занимался изменением размера
именно в тот момент, с которого всё исчезло. Это могло быть и на
неделю раньшэ. Хотя и маловероятно.
PPS Кстати, в связи с этим -- думаю, на какую fs мне
ориентироваться. Ну, не только в связи с этим, конечно. Бывало,
что и postgres после подъёма начинал орать про битые страницы.
Учитывая, что после kill -9 он себе такого не позволял и
стояло там data=journal -- надо думать, это не совсем его вина.
Тут надо заметить, что я сунулся в исходники ext3 -- посмотреть,
можэт можно что-нибудь выпрямить. Хм. Ну, теоретически... А на
практике -- горбатого могила исправит. То есть где-нибудь ещё это
был бы достаточно чистый и приятный код. В таком месте -- это
как-то херово выглядит.
Сунулся в ext2 -- всё выглядит проще и прямее. Но тожэ не
фонтан. Да и русская рулетка при некорректных выключениях здесь
гарантированна авторами. Правда, я для баз данных всё-таки ужэ
давно включил ext2. Нет, не из-за скорости. Но не так давно --
повыкидывал проверки кодов fsck из init-scripts. Чтобы ребут
поднимал машыну с бОльшэй вероятностью. Любителям давать ЦУ
замечу: я знаю, как сделать, чтобы было fsck -y, но не хочу.
Пока остановился вроде на xfs. В смысле -- новые сервисы
постараюсь поднимать на ней. Комментарии в коде понятны :-).
Количество фич прикольно. Пинки приветствуются.
-- end of forwarded message --
--
---- WBR, Michael Shigorin <mike на altlinux.ru>
------ Linux.Kiev http://www.linux.kiev.ua/
Подробная информация о списке рассылки Sysadmins