drPeps
Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Ну вот, кажется разобрался. Сейчас опишу в чём было дело - может кому-то это и пригодится на будущее... Дело, действительно, оказалось в этой самой метке "dirty bit". Вот выдержка из Справки по использованию утилиты CMD.EXE (файл этой Справки находится в: <СисДиск:\WINDOWS\Help\ntcmds.chm>): - «Если «грязный» бит тома задан, это может означать, что файловая система находится в неустойчивом состоянии. «Грязный» бит может быть задан, потому что том находится в подключенном состоянии и в нем имеются незаконченные изменения, из-за того что компьютер был выключен до того, как сделанные изменения были переданы на диск, или из-за обнаруженных повреждений тома. Если «грязный» бит задается при перезагрузке компьютера, командой chkdsk будет проведена проверка целостности тома.
- При каждом запуске Windows XP ядро вызывает файл Autochk.exe для сканирования всех томов и проверки, заданы ли «грязные» биты томов. Если «грязный» бит задан, программа autochk.exe немедленно запускает команду «chkdsk /f» для этого тома. Команда «chkdsk /f» проверяет целостность файловой системы и пытается устранить все возможные неисправности тома.»
Проверить, стоит ли на к-л диске метка "dirty" можно, введя в командной строке команду «fsutil dirty query C:», Где «C:» - буква интересующего нас диска. После нажатия клавиши <enter> появится к-л одно из 2 возможных сообщений : «Том - O: помечен как "грязный"» или «Том - F: не помечен как "грязный"». В моём случае выяснилось, что диск O: как раз и был "грязным". (Note: в вышеупомянутой Справке сказано, что сообщения о статусе "грязный" имеют вид типа: «Том - C: изменен» или «Том - С: не изменен», но у меня сообщения были именно такими, как я указал выше. Суть дела, конечно, от этого не меняется). Итак, как я и подозревал, из-за принудительных перезагрузок (через кнопку Reset на сис блоке) на диске O: что-то сбилось, Win пометила его флагом "dirty" и поэтому при загрузке он проверяется, - тут всё ясно. Но вот чего я до недавних пор никак не мог понять, так это то, почему проверка диска во время загрузки (т.е. команда «chkdsk /f», запускаемая autochk.exe при обнаружении на диске метки "dirty") НЕ снимает эту метку?! У меня в голове вертелась мысль, что ведь я где-то вроде читал/слышал, что эта метка снимается после того, как команда «chkdsk /f» проверит диск... А я уже писал в моём прежнем посте, что выполнение проверки через Проводник не прекращает перезагрузки... Но стоило мне выполнить проверку не через Проводник, а через командную строку, - как я тут же всё и понял! (Note: в WinXP проверку диска можно запустить либо через Проводник - тогда она выполнится при следующей загрузке, либо через CMD.EXE - тогда возможны 2 вар-та: или, аналогично тому, как это происходит в Проводнике, назначить её на следующую перезагрузку, или блокировать диск и выполнить её прямо сейчас.) Выполняю проверку (командой «chkdsk O: /f») прямо в системе (т.е. с блокированием диска), а затем проверяю статус метки "dirty" («fsutil dirty query O:») - получаю ответ: «Том - O: не помечен как "грязный"». Да, вот так, значит проверка диска, действительно, снимает эту метку! Теперь подходим к самому главному. Перезагружаюсь - и опять выскакивает эта долбаная проверка диска :(. В загруженной вновь системе проверяю статус "dirty" - метка стоит! И вот тут-то я до всего и допёр(!): диск постоянно проверяется при перезагрузке НЕ потому, что предыдущие аналогичные проверки НЕ снимали метку (так я думал раньше), а потому, что эта метка именно в момент загрузки и ставится! Я сразу вспомнил одну фигню, которую раньше как-то не связывал с этими вконец доставшими перепроверками: время от времени (не всегда) у меня сразу после загрузки выскакивало такое желтенькое окошечко с примерно таким предупреждением (дословно не помню, но суть такова): «файл sqlserv.exe повреждён и не читается», а уменя этот "sqlserv.exe" как раз стоит, как подлежащий к загрузке во время старта Win, и установлен SQL Server 2000 как раз на диск O:! Если убрать его из автозагрузки, то затем при 1-вой перезагрузки после этого, как и положено, выскочит проверка диска, а вот при 2-рой её уже НЕ будет! Т.о. дело, по всей видимости, в том, что на диске O: что-то перекосилось таким образом, что при загрузке как-то не так читался этот "sqlserv.exe" - и Win из-за этого уже при загрузке ставила на O: метку "dirty"... А не обращал я раньше вимания на всё это потому, что несмотря на "нечитаемость" SQL Server 2000 прекрасно работал, так что меня это нисколько не тревожило... Значит, что я сделал в итоге: (1) "sqlserv.exe" всё-таки вернул обратно в автозагрузку, т.к. всё время запускать его руками лень - (ясно, что при этом диск O: обречён быть "грязным"_) - поэтому: (2) чтобы не лицезреть синее окно проверки диска O: при загрузке (очень, знаете ли бесит) просто исключил его из проверки посредством команды «chkntfs /x O:» (отдельный респект г-ну EVLE, подсказавшему мне в своём посте о существовании этой команды ;)). Note: команда «chkntfs /x O:» НЕ предотвращает пометку системой диска флагом "dirty", если система сочтёт это нужным, - эта команда просто устанавливает, чтобы при загрузке Win autochk.exe, обнаружив на диске эту метку, НЕ запускал для него проверку. Если кому-то это будет нужно - ещё раз повторю, подробно все эти команды расписаны в: <СисДиск:\WINDOWS\Help\ntcmds.chm> |