crypt of decay - это охуительно [entries|archive|friends|userinfo]
ketmar

[ userinfo | ljr userinfo ]
[ archive | journal archive ]

это охуительно [Jan. 31st, 2019|05:27 pm]
Previous Entry Add to Memories Tell A Friend Next Entry
kernel guys are absolutely awesome!

кому лень: если `fsync()` один раз вернуло ошибку, то ядро забывает об этом. и очищает у сбойной страницы флаг «dirty». и второй вызов `fsync()` во-первых, нихуя не запишет на диск, а во-вторых, вернёт флажок «я всё сделал, хозяин!»

нет, технически имеют право: стандарт говорит, что fsync без ошибки гарантирует, что на диск записалось всё с момента прошлого fsync. то есть, в нашем случае успешно записалось нихуя. но это тот случай, когда «вы ебанулись там нахуй все, что ли?»
Linkабырвалг!

Comments:
From:(Anonymous)
Date:January 31st, 2019 - 01:09 pm
(Link)
и что с тех пор? последнее сообщение треда датировано 2018 04 30, это гм 9 месяцев назад.
[User Picture]
From:[info]ketmar
Date:January 31st, 2019 - 01:11 pm
(Link)
да какая, в принципе, разница? даже если вдруг чего уже починили — in the wild осталась куча керналей со старым поведением, и с этим всем придётся жить ещё кучу лет.
[User Picture]
From:[info]tiphareth
Date:January 31st, 2019 - 08:45 pm
(Link)

вот продолжение
https://lwn.net/Articles/752613/
по идее, проблемы должны возникать (а) с битыми дисками
(но там доктор сказал в морг, значит в морг) и (б) с NSF,
но про нее и так известнo, что она во всех смыслах
сломана, так что никто приличного поведения не ожидает
[User Picture]
From:[info]tiphareth
Date:January 31st, 2019 - 09:16 pm
(Link)
/nsf/nfs/
[User Picture]
From:[info]ketmar
Date:January 31st, 2019 - 10:13 pm
(Link)
это (то, что в статье добавили) — такая же бесполезная хуйня, как и существующее, увы. там постгресники приводят пример того, как работает постгрес:
2 процесса. один — бд, другой — монитор-синкер. бд закрыла файл, монитор открыл. сделал fsync. получил залупу. закрыл файл. бд открыла. сделала fsync. ой — получила «всё заебись». но данные уже проёбаны.

то есть, ошибка не аттачится к иноде, и когда все дескрипторы закрыли — проёбывается. в общем, в POSIX написано про file, и не указаны sequence points. нормальные инженеры это поняли вполне однозначно:
• файл — инода, сквенс-поинт — последняя успешная запись.
а кернел дивилаперс поняли как обычно:
• файл — это открытый дескриптор, секвенс-поинт — это последний fsync вне зависимости от его успешности.

стандарт можно натянуть на оба эти толкования. только первое — толкование здорового человека, а второе — «да ну нахуй нормально ядро делать, так проще».
[User Picture]
From:[info]tzirechnoy
Date:February 1st, 2019 - 11:11 am
(Link)
(а) Если бы было руками написано -- никакого особенно "в морг" не прошло бы, транзакцыя откатилась с ошыбкой, админу вставили пистон чтобы он бежал менять диск.

(б) УМВР. NFS -- отлично работающий протокол для текущих применений.
(Ну, хранение постгресса среди них пока нет, ну и что?)
From:(Anonymous)
Date:January 31st, 2019 - 03:23 pm
(Link)
а откуда ошибка/сбойная страница взялись?
From:(Anonymous)
Date:January 31st, 2019 - 07:36 pm
(Link)
тут все хороши

If the server had been using ext3 or ext4 with errors=remount-ro, the
problem wouldn't have occurred because the first I/O error would've
remounted the FS and stopped Pg from continuing. But XFS doesn't have that
option.

у меня был похожий случай, на схд вылетело два диска подряд, и спар не успел еще впрячься. схд увела дик в оффлайн? фиг вам, отдала несколько ошибок по чтению и записи но мужественно продолжала работать. если бы лвм этот лун не отстрелил в stale, было бы интересно.
From:(Anonymous)
Date:January 31st, 2019 - 08:16 pm
(Link)
was ist схд?
[User Picture]
From:[info]ketmar
Date:January 31st, 2019 - 10:07 pm
(Link)
тут говорят, что даже при кривом fsync ext3 могла бы прийти на помощь, и данные не проебались бы. обсуждают, кому могло повезти. не более.

впрочем, ниже установили, что хуй там плавал, и этот ремаунт unreliable as fuck. так что не повезло никому вообще.
[User Picture]
From:[info]mcm
Date:February 1st, 2019 - 03:17 am
(Link)
все такие умные блядь "здесь у вас неправильно", а как ещё сбросить эту ебучую ошибку, ещё какие-то апи городить что-ли нахуй?

апи придумано чётко и лаконично, поумней вас криворуких уёбков люди сидели морщили лобики.

а если руки из жопы растут то нехуй вообще к компьютеру подходить.
[User Picture]
From:[info]ketmar
Date:February 1st, 2019 - 03:19 am
(Link)
>а если руки из жопы растут то нехуй вообще к компьютеру подходить.
вот и сделай это, пожалуйста.
[User Picture]
From:[info]tzirechnoy
Date:February 1st, 2019 - 11:14 am
(Link)
Никак не сбрасывай. Файл с ошыбкой, зачем её сбрасывать?

То есть совсем по-умному -- конечно, определить, что у нас там за причина ошыбки, и если она врЕменная -- то поспать с матюками, а если бэды -- то перераспределить файл в другое место. Но фиг бы с ним, да.
[User Picture]
From:[info]ketmar
Date:February 1st, 2019 - 11:20 am
(Link)
ну, recovery strategy — то такое. а вот идея просто проебать ошибку: «а чо, никто не спрашивал жы. а кто спрашивал — делал это без уважения» — это охуенная идея, у меня даже измеритель охуенности зашкалило.
[User Picture]
From:[info]tzirechnoy
Date:February 1st, 2019 - 12:59 pm
(Link)
Скорее -- я один раз ответил, сколько раз можно повторять?
[User Picture]
From:[info]ketmar
Date:February 1st, 2019 - 08:23 pm
(Link)
да если бы… хуй с ним уже, что sequence point на самом fsync. так он же один раз отвечает кому попало — и сразу забывает. а если файл успели закрыть, а потом открыли — то и вовсе никому ничего не расскажут. вот в чём основная беда, вот чего ребята из pg охуели: нет надёжного способа не проебать ошибку.
[User Picture]
From:[info]tzirechnoy
Date:February 1st, 2019 - 11:16 am
(Link)
Там, кажэтся, возвращать флаг DIRTY должны были ->writepage() в fs page mapping, но как-то они не все это делают.

Вообще, код ужасен. И я посмотрел код fsync/writepages с 2.6.32 до текущего 4.20 -- явно видно, как более логичный код превращается постепенно в говно со временем.
[User Picture]
From:[info]ketmar
Date:February 1st, 2019 - 11:23 am
(Link)
я давно уже не хожу код ядра читать, я с возрастом более впечатлительный стал, страшно.

в обсуждении ещё очень забавно смотреть, как на ходу изобретаются аргументы за: «текущее поведение лучшее из возможных! при всех остальных будет полная жопа!» а молча проебать юзерские данные — это, конечно, не жопа. так, мелочь, с кем не бывает.