[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: сдетела геометрия диска :-(



В сообщении от 27 Сентябрь 2003 09:28 Alexandra N. Kossovsky написал:
> On Fri, Sep 26, 2003 at 06:00:57PM +0400, Artem Chuprina wrote:
> > DNN> ЗЫЫ по поводу fdisk'а если я правлю таблицу разделов, в которой хотя
> > бы DNN> один раздел примантирован, то мне нужно перегружать машину, чтобы
> > ядро DNN> синхронезировалось с таблицей разделов :-/ раньше такого
> > ограничения DNN> небыло, но когда оно появилось я точно сказать не могу
> > поскольку с DNN> таблицами разделов приходится иметь дело достаточно
> > редко... DNN> соответственно по пораметру "хочу перегрузиться" линукс
> > неуклонно DNN> движется в сторону "совместимости с виндой" что на мой
> > взгляд в корне DNN> неправильно...
> >
> > Сколько помню работу IDE в линуксах - всегда так было.
>
> Это - да.
Не правда ваша в ядрах 1.х  ядро нормально перечитывало таблицу разделов и не 
требовало перезагрузки. про ядра 2.0 и 2.2 уже не помню но на каких-то из 
этих ядер тоже не нужно было перегружаться
>
> > Это ограничение шины, кажется - для того, чтобы перечитать таблицу
> > разделов, надо проинициализировать устройство. А переинициализировать
> > устройство, с которого что-то смонтировано...
>
> Ограничением шины это не является, нулевой сектор можно читать в любой
> момент хоть до посинения (чем fdisk и занимается). Там скореее
> программно-техническая проблема.
>
> Дело в том, что (в нынешней реализации соответствующего куска linux
> kernel) обновить можно только _всю_ таблицу разделов. Если при этом
> границы смонтированных разделов двигали, то некоторые куски кода будут
> продолжать думать, что у смонтированных разделов прежняя геометрия,
> а другие куски кода уже будут знать про новую геометрию. Что может
> привести к задумчивым эффектам. 
это да и скорее всего текущее ограниченние просто напросто защита от дураков. 
хотя большой погоды это не делает, поскольку размер fs ядро берет не из 
таблицы разделов а из суперблока fs и если он отличается... я тут совсем 
недавно влетел в такую ситуацию:
- на разделе hda6 была ext3
- #umount /dev/hda6
- #fdisk /dev/hda
- удаляем раздел /dev/hda6
- на его месте создаем разделы hda6 и hda7
- прсим fdisk записать новую таблицу разделов на диск, fdisk записывает ее но 
говорит, что чтобы синхронизировать ее с ядром небобходима перезагрузка (!)
- перегружаю комп :-(
- после перегрузки ядро находит /dev/hda6 в fstab (ну забыл я поправить этот 
файлик пред тем как сказать reboot) и... монтирует его !!!! при этом оно 
скромно возмущается что размер партиции и размер fs, указанный в суперблоке, 
не совпадают... при этом оно естественно использует информацию из 
суперблока...  
-- Занавес!
вобщем какой смысл был перегружать комп, если в результате у меня 
подмонтированная партиция не совпадает с тем что написано в таблице разделов 
:-/ 
кстати вообще прикольно получится если поменять размер подмонтированной 
партиции: при перегрузке, когда ядро скажет этой fs sync перед тем как ее 
окончательно размонтировать вполне может слететь таблица для logical 
разделов!!!

> А никакой ре-инициализации ide (или scsi)
> девайса при перечитывании таблицы разделов не происходит.
>
> Я не пытаюсь сказать, что невозможно написать код так, чтобы
> перечитывание таблицы разделов было возможно при смонтированных
> разделах. Но это непросто и, видимо, никому не нужно. Особенно никому не
> нужно ловить блох, которые появятся при таком переписывании.

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

PS а что делать с геомертий (см начало треда) никто так и не сказал :-(
а без lilo вообще-то фигово 




Reply to: