Все чаще и чаще встречаюсь с этим недугом, везде собираешь информацию по крупицам, потому решил написать общий FAQ на эту тему. Просьба добавить в путеводитель, иначе так никогда не размеремся что такое, с чем есть и как лечить.
Вначале я думал, что этим страдают только переносные хранители информации - флешки и съемные диски. Самый простой пример - выдернуть во время записи, и появится ошибка. Если её увидев воткнуть обратно, винды подумав закончат начатое, ошибка исчезнет и информация запишется.
Но я был не прав, на несъемных эта проблема тоже возникает, и с каждым днем все чаще и чаще. Первоначально я предполагал что если винт новый то с ним по определению все будет в порядке - я оказался неправ.
Сначала как оно возникает. Во время записи информации, винды кешируют все операции, ДАЖЕ при отключенном кешировании в настройках диска. Т.е. берем некий фаил и качаем с одного диска на другой. Копирование не одна,а две операции, сначала чтение в память, потом уже запись куда положено. Фаил сидит в памяти, ДАЖЕ после успешного окончания записи. По современным стандартам там может висеть до гигабайта закешированных фаилов (На ХР, на висте не знаю), на случай если вам или программе вдруг срочно потребуется к ним ещё раз обратиться.
Разработчики микрософта всем известно люди криворукие, и они приподнесли очередной сюрприз. Если во время записи на целевой диск Б, на нем возникает ошибка, чтобы не терять производительность, система продолжает считывать фаил с исходного диска А, периодически повторяя попытки записи. С современной производительностью винтов часто возникает ситуация когда фаил уже полностью считан с диска А в память, но проблема записи на диск Б до сих пор не самоликвидировалась. Виндам требуется около полминуты чтобы понять, что увы ниче не выйдет, и выдать ошибку, ту самую что в названии темы, с указанием фаила который до сих пор висит в памяти.
Как можно потерять важную информацию:
Назойливый восклицательный знак через какое-то время так достает, что возникает желание перегрузить систему, чтобы от него избавиться, в результате теряем все что тока что записывали. плюс к тому, даже после появления завершающего экрана, система не хочет перегружаться, продолжая выдавать сообщения об ошибке записи, приходится жать резет.
Более того, если шла запись кучи мелких фаилов, сообщения об ошибке будут выдаваться подряд с периодичностью раз в 30 секунд, и перетащить все эти фаилы на другой диск (если ты наверняка не знаешь какие они) становится задачей не выполнимой. А если ещё и вся система подвисает эти каждые 30 секунд....
Теперь Почему возникает ошибка.
До недавнего времени я думал что причиной может служить только физический сбой винчестера. Т.е потеря питания/недостаточное питание/удар в момент работы/отключение внешнего накопителя/внутренние ошибки (плохие сектора)/перегрев.
Я был неправ.
Первая по популярности это естественно отключение в процессе записи. Когда на флешку скидывается много информации а она сама по себе медленная, надо выждать пару секунд, или воспользоваться "безопасное удаление устройства". Иначе часть информации так и останется висеть в памяти и вылетит ошибка.
Вторая - перегрев. Современные печки - процессоры и видеоускорители способны устроить в блоке питания такую африку что не выдержит ни один накопитель. Проверить просто - любая программа показывающая температуру, тот же everest.
Третья - брак диска. Или если время его уже подошло к концу, или если в процессе транспортировки стукнули (а продавцы очень любят по этому пункту отказывать в обмене). Во время записи фаила головка натыкается на бракованный участок диска и тоже совершает безуспешные попытки закончить начатое "а вдруг получиться".
Ещё вариант - при записи кучи мелких фаилов, или переносе/копировании фаила в пределах одного физического диска (например разные логические диски), головка носится между двумя разными частями диска с огромной скоростью. процесс механический и сопровождается хоть и мизерным но трением (в зависимости от того как производители эту проблему решили), в результате нагрев, металл меняет свою толщину, перестает попадать на дорожки. При этом все показания температуры могут быть в пределах нормы, потому что перегрелась маленькая часть устройства, а не все оно целиком. Отличить достаточно просто - винт не будет ни читаться, ни записываться, может быть даже не определяться до тех пор пока не остынет (от пары часов до дня). Так у меня работает внешний Seagate Freeagent 1.5tb.
Так же можно испортить винт из-за прецессии - начать вращать в руках, когда диск внутри ещё крутиться, но тогда скорее всего расцарапается и превратиться в плохие сектора
Четвертая причина.
Похоже что история с ошибкой 2000, когда операционные системы и материнские платы были неспособны обрабатывать такую дату повторилась теперь с винтами. Фаиловая система NTFS просто не расчитана на такие огромные объемы винчестеров, в результате одна таблица распределения фаилов должна у двухтеррабайтника занимать 2 гига памяти.
Микрософт эту догадку подтверждает
http://support.microsoft.com/kb/330174
# Большие дисковые тома NTFS и несколько больших томов (жесткие диски размером 60-100 ГБ, размещенные на RAID-массивах)
Фактически:
Купил hitachi на 2ТБ - HDS722020ALA работает все нормально, никаких нареканий.
Но сегодня весь день бился с ним, постоянно вылетала ошибка. Причем что очень странно, во время ошибки диск продолжал читаться, вся записанная информация цела, и можно смотреть с него видео, но записать ничего не получается. Похоже что системе банально не хватает памяти с таким огромным диском работать...
Но уверенности у меня пока нет, потому что диск во внешнем корпусе работать отказался, определялся и не форматировался. И при попытке его открыть winhex в прямом режиме начинают выскакивать ошибки чтения секторов.
Копаю дальше, чужое мнение всегда будет полезно (хотя я сомневаюсь кто-то пробовал двухтеррабайтники ставить, они совсем недавно появились)
Вначале я думал, что этим страдают только переносные хранители информации - флешки и съемные диски. Самый простой пример - выдернуть во время записи, и появится ошибка. Если её увидев воткнуть обратно, винды подумав закончат начатое, ошибка исчезнет и информация запишется.
Но я был не прав, на несъемных эта проблема тоже возникает, и с каждым днем все чаще и чаще. Первоначально я предполагал что если винт новый то с ним по определению все будет в порядке - я оказался неправ.
Сначала как оно возникает. Во время записи информации, винды кешируют все операции, ДАЖЕ при отключенном кешировании в настройках диска. Т.е. берем некий фаил и качаем с одного диска на другой. Копирование не одна,а две операции, сначала чтение в память, потом уже запись куда положено. Фаил сидит в памяти, ДАЖЕ после успешного окончания записи. По современным стандартам там может висеть до гигабайта закешированных фаилов (На ХР, на висте не знаю), на случай если вам или программе вдруг срочно потребуется к ним ещё раз обратиться.
Разработчики микрософта всем известно люди криворукие, и они приподнесли очередной сюрприз. Если во время записи на целевой диск Б, на нем возникает ошибка, чтобы не терять производительность, система продолжает считывать фаил с исходного диска А, периодически повторяя попытки записи. С современной производительностью винтов часто возникает ситуация когда фаил уже полностью считан с диска А в память, но проблема записи на диск Б до сих пор не самоликвидировалась. Виндам требуется около полминуты чтобы понять, что увы ниче не выйдет, и выдать ошибку, ту самую что в названии темы, с указанием фаила который до сих пор висит в памяти.
Как можно потерять важную информацию:
При переносе фаила выполняется сначала копирование, а потом в случае успеха оригинальный фаил удаляется. это ОЧЕНЬ ВАЖНО, можно потерять важную информацию. Криворукие индусы сделали так что винды рапортуют о удачной записи фаила системе (чтобы не потерять производительность) ещё до того как он физически оказался записан, и система удаляет оригинал. Все наш фаил висит в памяти, а на целевом диске его ещё нет потому что возникла какая-то ошибка записи. Через какое-то время начнет выскакивать назойливый восклицательный знак в желтом треугольнике, с указанием какой фаил висит в памяти. Он будет появляться до тех пор пока мы его не запишем куда-нибудь физически. При этом ВАЖНО в проводнике и всех фаиловых менеджерах, а так же любых других программах, фаил будет читаться совершенно нормально, создавая полное ощущение что на восклицательный знак можно не обращать внимания - вот же он лежит там куда я его качал и читается. Подумаешь что мне там в этой подсказке пишут... Если в этот момент систему перегрузить, то при чтении того же самого фаила, который только что вы своими глазами убеждались лежит на месте и содержит всю полезную информацию, выясниться что его содержимое состоит из нулей, или ещё в худшем случае, случайного мусора оставшегося после ранее удаленых других фаилов. ВЫ ФАИЛ ПОТЕРЯЛИ !
Объяснение этому простое. Пока фаил физически не записан куда ему положенно, при обращении к нему, система берет его из памяти, и возникает впечатление что с ним все в порядке. А мусор которым будет набит фаил впоследствии остается потому что при удалении стирается только запись о том что там когда-то фаил был, а сама информация там так и остается лежать. Собственно поэтому можно и восстановить удаленные фаилы. А когда происходит запись нового фаила, сначала создается такая же запись о том, где он будет расположен, а потом уже заполняется содержимое. И вот если ошибка возникла между последними двумя событиями, фаил внешне будет выглядеть впорядке, дата, время название все как надо, но при просмотре содержимого выясниться что он или целиком состоит из мусора, или где-то ближе к его концу.
Мало того, разработчики вдвойне криворуки, кэш фаилов один на всех, поэтому если он забьется большим количеством таких незаписанных фаилов, то все остальные программы начинают тормозить - не могут обратиться к винту, ждут своей очереди, ДАЖЕ если они обращаются к физически другому накопителю.Объяснение этому простое. Пока фаил физически не записан куда ему положенно, при обращении к нему, система берет его из памяти, и возникает впечатление что с ним все в порядке. А мусор которым будет набит фаил впоследствии остается потому что при удалении стирается только запись о том что там когда-то фаил был, а сама информация там так и остается лежать. Собственно поэтому можно и восстановить удаленные фаилы. А когда происходит запись нового фаила, сначала создается такая же запись о том, где он будет расположен, а потом уже заполняется содержимое. И вот если ошибка возникла между последними двумя событиями, фаил внешне будет выглядеть впорядке, дата, время название все как надо, но при просмотре содержимого выясниться что он или целиком состоит из мусора, или где-то ближе к его концу.
Назойливый восклицательный знак через какое-то время так достает, что возникает желание перегрузить систему, чтобы от него избавиться, в результате теряем все что тока что записывали. плюс к тому, даже после появления завершающего экрана, система не хочет перегружаться, продолжая выдавать сообщения об ошибке записи, приходится жать резет.
Более того, если шла запись кучи мелких фаилов, сообщения об ошибке будут выдаваться подряд с периодичностью раз в 30 секунд, и перетащить все эти фаилы на другой диск (если ты наверняка не знаешь какие они) становится задачей не выполнимой. А если ещё и вся система подвисает эти каждые 30 секунд....
Теперь Почему возникает ошибка.
До недавнего времени я думал что причиной может служить только физический сбой винчестера. Т.е потеря питания/недостаточное питание/удар в момент работы/отключение внешнего накопителя/внутренние ошибки (плохие сектора)/перегрев.
Я был неправ.
Первая по популярности это естественно отключение в процессе записи. Когда на флешку скидывается много информации а она сама по себе медленная, надо выждать пару секунд, или воспользоваться "безопасное удаление устройства". Иначе часть информации так и останется висеть в памяти и вылетит ошибка.
Вторая - перегрев. Современные печки - процессоры и видеоускорители способны устроить в блоке питания такую африку что не выдержит ни один накопитель. Проверить просто - любая программа показывающая температуру, тот же everest.
Третья - брак диска. Или если время его уже подошло к концу, или если в процессе транспортировки стукнули (а продавцы очень любят по этому пункту отказывать в обмене). Во время записи фаила головка натыкается на бракованный участок диска и тоже совершает безуспешные попытки закончить начатое "а вдруг получиться".
Ещё вариант - при записи кучи мелких фаилов, или переносе/копировании фаила в пределах одного физического диска (например разные логические диски), головка носится между двумя разными частями диска с огромной скоростью. процесс механический и сопровождается хоть и мизерным но трением (в зависимости от того как производители эту проблему решили), в результате нагрев, металл меняет свою толщину, перестает попадать на дорожки. При этом все показания температуры могут быть в пределах нормы, потому что перегрелась маленькая часть устройства, а не все оно целиком. Отличить достаточно просто - винт не будет ни читаться, ни записываться, может быть даже не определяться до тех пор пока не остынет (от пары часов до дня). Так у меня работает внешний Seagate Freeagent 1.5tb.
Так же можно испортить винт из-за прецессии - начать вращать в руках, когда диск внутри ещё крутиться, но тогда скорее всего расцарапается и превратиться в плохие сектора
Четвертая причина.
Похоже что история с ошибкой 2000, когда операционные системы и материнские платы были неспособны обрабатывать такую дату повторилась теперь с винтами. Фаиловая система NTFS просто не расчитана на такие огромные объемы винчестеров, в результате одна таблица распределения фаилов должна у двухтеррабайтника занимать 2 гига памяти.
Микрософт эту догадку подтверждает
http://support.microsoft.com/kb/330174
# Большие дисковые тома NTFS и несколько больших томов (жесткие диски размером 60-100 ГБ, размещенные на RAID-массивах)
Фактически:
Купил hitachi на 2ТБ - HDS722020ALA работает все нормально, никаких нареканий.
Но сегодня весь день бился с ним, постоянно вылетала ошибка. Причем что очень странно, во время ошибки диск продолжал читаться, вся записанная информация цела, и можно смотреть с него видео, но записать ничего не получается. Похоже что системе банально не хватает памяти с таким огромным диском работать...
Но уверенности у меня пока нет, потому что диск во внешнем корпусе работать отказался, определялся и не форматировался. И при попытке его открыть winhex в прямом режиме начинают выскакивать ошибки чтения секторов.
Копаю дальше, чужое мнение всегда будет полезно (хотя я сомневаюсь кто-то пробовал двухтеррабайтники ставить, они совсем недавно появились)