Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Microsoft Windows 8 и 8.1 (http://forum.oszone.net/forumdisplay.php?f=116)
-   -   [решено] Фрагментация при записи на пустой том. (http://forum.oszone.net/showthread.php?t=277840)

littlefunnyevil 16-02-2014 19:29 2310030

Фрагментация при записи на пустой том.
 
Доброго времени суток!
Вчера решил переустановить систему на Win 8.1 x64 и переразбить тома. Решил использовать для этого EaseUS Partition Master. Тома оставил со стандартным размером кластера, а том под игры решил сделать с кластером на 8КБ, т.к. прочитал инфу, что при записи крупных файлов на кластеры бОльшего объёма повысится скорость чтения (верно ли это?? :) ). В итоге при установке игры (папка объёмом 28.9 ГБ, основные файлы - 20шт. по ~1 Гб) вся (!!) записалась фрагментами. Меня это очень удивило. Может кто обьяснит, в чём дело? Спасибо.

Tau_0 16-02-2014 20:47 2310085

Цитата:

Цитата littlefunnyevil
при записи крупных файлов на кластеры бОльшего объёма повысится скорость чтения (верно ли это?? ). »

В Microsoft считают оптимальный размер кластера = 4 KiB. Но при этом надо форматировать (создавать файловую систему) штатным Format Microsoft Win 8.1 x64.

Кстати версии NTFS для разных Windows различаются..., особенно сильные отличия наблюдаются в Widows 8. Следует учитывать, что и команда чекдиск крутися постоянно и порой может вступать в конфликт даже с ФС, созданной Windows 7. --- Чекает её на свой лад. Может и ФС, созданную EaseUS Partition Master, чекдиск рихтует на свой лад... Вот и получается много Run/отрезков/экстентов для одного файла.

Также учитывайте, что файл в NTFS это не поток байтов, а поток атрибутов файла...

Хотите разобраться --- читайте доку по внутреннему устройству NTFS. Используйте дисковые редакторы: --- DMDE, WinHex, ..., etc и вникайте в тонкости... Я таких исследований не проводил, а только по кусочкам случайно читал...

misha2 17-02-2014 10:25 2310384

Цитата:

Цитата littlefunnyevil
(папка объёмом 28.9 ГБ, основные файлы - 20шт. по ~1 Гб) вся (!!) записалась фрагментами »

Не удивительно. Файлы пишутся туда, где в данный момент времени спозиционирована головка винта. И понятно что за каждый поворот диска при их вращении головка не может писать всё чётко последовательно и находится физически на том же самом треке. Вот и выходят фрагменты отдельных файлов. Ну и самих головок чаще всего не 1 шт. стоит в винте.

littlefunnyevil 17-02-2014 11:53 2310427

O, вот оно как. Ясно. Крайне понятный и исчерпывающий ответ. Спасибо.
p.s. вчера решил провести эксперимент. Ту папку на 28 ГБ скопировал на соседний том и форматнул вышеназванный том со стандартным размером кластера с помощью Виндового format'a. Итог - при копировании папки заново - почти никакой фрагментации.
А уже последующие файлы начали опять получаться фрагментированными.

piligrimka 20-02-2014 17:32 2312568

Цитата:

Цитата misha2
Не удивительно. Файлы пишутся туда, где в данный момент времени спозиционирована головка винта. »

Это предположение или утверждение?
Хотите сказать что операционная система не занимается оптимизацией записи на диск, как об этом декларировано, и как должно быть по логике?
Или речь идёт о новоделе от Microsoft?

Tau_0 20-02-2014 21:39 2312622

piligrimka, независимо от самых оптимальных стратегий выделения внешней памяти и использования кэшей, при параллельном чтении/записи многих файлов (а именно так и происходит) фрагментация неизбежна...
Конечно, если каждому файлу предоставить по харду, то фрагментация уменьшится, но только где столько хардов взять...???...

Игорь Лейко 20-02-2014 22:50 2312671

Цитата:

Цитата littlefunnyevil
верно ли это?? »

Нет.
Цитата:

Цитата littlefunnyevil
Итог - при копировании папки заново - почти никакой фрагментации. »

Установка и копирование могут различаются довольно значительно.

misha2 21-02-2014 10:46 2312903

Цитата:

Цитата piligrimka
утверждение? »

Утверждение. Достачно почитать о работе и устройстве винта и принципе чередования головок, зонном распределении и методах внутренней трансляции (относится уже к программной архитектуре винта).
ОС и занимается этой самой дефрагментацией, правда невсегда эффективно. И понятие "дефрагментация" и есть подтверждение мной сказанного, что файлы неизбежно фрагментируются при записи на поверхность.

piligrimka 21-02-2014 11:52 2312946

Tau_0
Фрагментация неизбежна в случае если нет свободного цельного куска, в который можно записать требуемый файл.
Во всех остальных случаях всё пишется целиком - и это наглядно показывают операционки относящиеся к Linux.

misha2
Причём здесь внутренности винта если операционка имеет общение с другим уровнем представления?
Самостоятельно дефрагментацией занимается Виста и оследующие операционки. В ХР это не делалось автоматом и дефрагментация на нормально заполненных разделах практически отсуствовала. По крайней мере для небольших файлов. Означает ли это что более новые операционки, зная о том что потом будет дефрагментация, пишут где прийдётся, без всякой оптимизации?

misha2 21-02-2014 12:36 2312981

Цитата:

Цитата piligrimka
Причём здесь внутренности винта если операционка имеет общение с другим уровнем представления? »

А винту пофик виндовые и Осёвые представления. Он пишет туда куда спозиционированы головы в данную миллисекунду.
А винда не может указывать винту куда именно и по какому ЛБА писать данный файл. Винт это решает сам. И без вашего внешнего участия. Это потом вы можете повлиять на расположение фрагментов - лишь когда файл уже полностью записан. Тогда у ж сам дефрагментатор решает нужно дефрагментировать тот файл или нет.

Игорь Лейко 21-02-2014 13:15 2313003

Цитата:

Цитата misha2
А винту пофик виндовые и Осёвые представления. Он пишет туда куда спозиционированы головы в данную миллисекунду. »

Логично. Писать на дорожку, над которой не висят головы, винт не умеет. :)
Цитата:

Цитата misha2
А винда не может указывать винту куда именно и по какому ЛБА писать данный файл. »

Может и указывает.

Tau_0 21-02-2014 13:15 2313004

Цитата:

Цитата piligrimka
Фрагментация неизбежна в случае если нет свободного цельного куска, в который можно записать требуемый файл. »

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

Хотя у Linux и Windows разные файловые системы, но и файлы Linux тоже фрагментируются…

Игорь Лейко 21-02-2014 13:17 2313006

Цитата:

Цитата piligrimka
и это наглядно показывают операционки относящиеся к Linux »

Линукс во многих отношениях сделан правильнее, чем Windows, а Windows - оптимальнее чем линукс.

Цитата:

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

Насчет неизбежности в Windows Вы несколько погорячились.

mwz 21-02-2014 13:28 2313014

Цитата:

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

1. Если при модификации размер файла не увеличивается (и даже если увеличивается, но не переходит за границу последнего кластера файла) -- фрагментация файла не меняется.

2. Запись, в т.ч. модификация одного файла не может привести к повышению фрагментации другого уже записанного.

3. По ряду положений, в т.ч. высказанных misha2, в дискуссию вступать не хочу, хотя руки и чешутся; поскольку произошёл переход от понятия "логическая фрагментация" (которую показывает в т.ч. Windows) к понятию "физическая фрагментация" (расположению файла на диске: да, дефрагментированный с точки зрения Windows и других программ дефрагментации файл может "физически" располагаться даже на разных блинах).

misha2 21-02-2014 13:30 2313017

Цитата:

Цитата Игорь Лейко
Может и указывает. »

А мож не по ЛБА, а по INDX ? Ведь это как раз её прерогатива знать какие заняты.
Цитата:

Цитата Tau_0
модификация/изменение ранее созданного файла (пусть ранее он не был фрагментированным) неизбежно ведёт к его фрагментации »

И схранение одного и того же файла, например в ворде создаст его новую копию в другом физически месте и будет присвоен новый INDX. Если б винда умела обращаться по ЛБА впрямую, то при анализе доступного пространства ЛБА винта и восстановлении файлов мы б не видели дубликатов одного и того же файла в разных физически местах.

mwz 21-02-2014 13:45 2313027

Цитата:

Цитата misha2
И сохранение одного и того же файла, например в ворде создаст его новую копию в другом физически месте »

Ну так это не операционка "виновата" -- а Word. Который не заменяет файл по месту, а создаёт новый, удаляет старый и переименовывает новый.

Очень хорошо такие моменты проявляются при работе с копиями в виде жёстких ссылок (hardlinks): если после работы с такой ссылкой файл стал независимым -- то произошла не модификация файла, а создание нового с удалением старого (пример -- модификация RAR-архива). А при правке, например, текстовых файлов с помощью Akelpad жёсткие ссылки не теряются, т.е. происходит модификация "по месту".

Игорь Лейко 21-02-2014 13:49 2313030

Цитата:

Цитата misha2
А мож не по ЛБА, а по INDX ? »

Что Вы имеете в виду под INDX? Что-то я ничего похожего в командах ATA не могу найти. :(

misha2 21-02-2014 13:57 2313039

Цитата:

Цитата mwz
произошёл переход от понятия "логическая фрагментация" (которую показывает в т.ч. Windows) к понятию "физическая фрагментация" (расположению файла на диске »

И то, и то есть логическая фрагментация в отношении указанных ЛБА. Всё равно доступ к файлам организуется по ЛБА через индексы. Про адресацию в PCHS бессмысленно говорить, т.к. это делается за счёт трансляции винта и только винту это ведомо. Никак не ОС.
Поэтому если говорить о фрагментации в этой теме, то только о логической.
Цитата:

Цитата Игорь Лейко
Что-то я ничего похожего в командах ATA не могу найти »

Потому что это относится к MFT, а не к АТА-стандарту.

Игорь Лейко 21-02-2014 14:02 2313043

Цитата:

Цитата misha2
Потому что это относится к MFT, а не к АТА-стандарту. »

Значит, никак не относится к диску. Он про MFT ничего не знает. Для него она - точно такие же секторы, как и любые другие. Велели записать - запишет, велели прочитать - прочтет. А что там эти байты означают - не в его компетенции.

mwz 21-02-2014 14:07 2313047

Цитата:

Цитата misha2
Поэтому если говорить о фрагментации в этой теме, то только о логической »

О чём я и сказал: что произошёл переход от логической к физической фрагментации.
Поскольку вопрос был "почему файлы стали фрагментированными" -- и ответ что "на диске файлы всегда фрагментированы" не имеет к этому никого отношения.

misha2 21-02-2014 14:33 2313067

Цитата:

Цитата mwz
вопрос был "почему файлы стали фрагментированными" -- и ответ что "на диске файлы всегда фрагментированы" »

Потому что на вопрос "почему файлы стали.." был и ответ - потому что файлы пишутся туда где в данный момент находится БМГ винта. И далее....А присваивать индекс местонахождения файла, чтоб знать где он расположен - дело ОС.
Так что "файлы при записи как правило становятся фрагментированы" наиболее уместно. Особенно если учесть что винт дисковое многоголовое устройство, а не магнитофонная лента с линейной записью.

mwz 21-02-2014 15:04 2313097

Цитата:

Цитата misha2
потому что файлы пишутся туда где в данный момент находится БМГ винта »

Это была не просто запись файлов (которая происходит в частности при копировании), а работа установщика, который распаковывает файлы не запрашивая у Windows выделения места под файл целиком. Если бы запросило (примерно что и происходит при копировании: Windows сначала выделяет место под файл, а затем уже копирует туда) -- то было бы не фрагментировано (если бы на диске были подходящие участки; иначе -- слабофрагментировано).

То же самое что и с торрентами: некоторые не ставят галку "Выделить место под файл целиком", а затем удивляются, что файлы состоят из тысяч фрагментов.

Кроме того, "файлы пишутся туда где в данный момент находится БМГ винта"... А если головка находится над местом, где лежит файл? Таки сначала запрос обрабатывается Windows, которая смотрит куда можно разместить данный кусок, если ему не было заранее выделено место.

misha2 21-02-2014 15:42 2313117

Цитата:

Цитата mwz
Windows сначала выделяет место под файл »

То есть размечает и вносит записи индексов в MFT, не так ли ?
А вот в записях можно уже поместить номера ЛБА, пространство в ЛБА (от n- до n+xxxx), правда ж ?
Выходит винда работает со своей индексацией, а ЛБА-пространство вторично для неё.
А то как быть тогда с копированием папок и файлов на винт/раздел другого обьёма ? Там и МФТ то другая. Впрямую по номерам ЛБА то не выйдет...
Цитата:

Цитата mwz
А если головка находится над местом, где лежит файл? »

Для этого и существуют индексные записи и карта занятого/незанятого пространств. Это всё речь об обработке виндовсом. А речь реально шла о размещении файлов и их фрагментации при этом самом размещении. И винда тут причём конечно, т.к. она инициатор присваивания индексов, записей в МФТ и прочая-прочая... Но управлять именно чётким расположением в ЛБА-пространстве полностью она не может. (Поэтому и придуманы меры онлайн-дефрагментации). Иначе б в природе исчезло бы (и никогда б не было) понятия фрагментации.

Tau_0 21-02-2014 16:05 2313135

Цитата:

Цитата misha2
А то как быть тогда с копированием папок и файлов на винт/раздел другого обьёма ? Там и МФТ то другая. Впрямую по номерам ЛБА то не выйдет... »

Вообще то Windows на уровне кластеров, а не секторов, хотя Бох его знает, как там драйвер I/O устроен.

В NTFS у файла есть атрибут атрибут $INDEX_ROOT, но он для внутренних потребностей Windows предназначен. А на другом харде будет по-другому --- сильно фрагментированный файл может стать нефрагментированным или наоборот --- от свободного места на другом томе это зависит …. А том/раздел может быть и на том же харде.

misha2 21-02-2014 16:23 2313150

Цитата:

Цитата Tau_0
$INDEX_ROOT, но он для внутренних потребностей Windows предназначен. »

Ну мы ж и говорим о внутренних возможностях винды.
Цитата:

Цитата Tau_0
А на другом харде будет по-другому --- сильно фрагментированный файл может стать нефрагментированным или наоборот »

Вот-вот и я ж о том. Потому что сам винт пишет эти самые файлы, а не винда их располагает как надо и сразу.

Tau_0 21-02-2014 17:06 2313187

Цитата:

Цитата misha2
а не винда их располагает как надо и сразу. »

Если при открытии вновь создаваемого файла Windows не знает его размер (файл "из воздуха" может создаваться...), то выделяет ему по дефолту некий экстент, и другим файлам тоже, а потом добавляет по мере надобности другие. Когда файлов много, то они растут и друг друга фрагментируют. Это я и имел в виду, когда первый раз писал.

А mwz полностью расписал --- когда файл копируется, то Windows его размер знает (сложит все экстенты этого файла и получит размер), поэтому заранее для него точный размер зарезервирует. Постарается одним экстентом под него место выделит, если такая возможность есть...

mwz 21-02-2014 17:16 2313196

Цитата:

Цитата misha2
Потому что сам винт пишет эти самые файлы, а не винда их располагает как надо и сразу »

Да, пишет диск (винда сама не умеет). Но Винда даёт команду диску, в какие LBA и что писать: самому-то диску-то наплевать, где у него что лежит и куда писать, не тот у него уровень в иерархии.

По принципу:
"Я -- метатель молота.
Приказано метать -- и я мечу."
(с) В.Высоцкий

misha2 21-02-2014 17:21 2313200

Цитата:

Цитата mwz
в какие LBA »

Мне думается всё же - "с какого ЛБА" (незанятого) ближе будет.

Игорь Лейко 21-02-2014 17:26 2313207

Цитата:

Цитата Tau_0
Вообще то Windows на уровне кластеров, а не секторов, »

Вообще-то Windows пишет блоками - и размер этих блоков с размером кластеров никак не связан.
Цитата:

Цитата misha2
Потому что сам винт пишет эти самые файлы »

Винт не пишет никаких файлов, он про файлы ничего не знает. Он пишет отдельные секторы или группы секторов. Сказали ему - такой-то блок данных разместить по такому-то LBA - он и выполняет.
Больше того, на нижнем уровне драйвера файловой системы даже сама Windows не знает, какому файлу принадлежит тот или иной блок.

mwz 21-02-2014 17:35 2313217

Цитата:

Цитата misha2
Мне думается всё же - "с какого ЛБА" (незанятого) ближе будет. »

Не факт. И уж тем более -- если речь о выделении заданного пространства.

Но это уже надо знать алгоритмы, заложенные в Windows (да и в Линух, BeOs и т.д.: у каждого разработчика свой подход, как [разумно, в т.ч. без избыточных потерь времени] выделить место так, чтобы при последующем добавлении или удалении файлов снизить вероятность фрагментации новых файлов).

Игорь Лейко 21-02-2014 17:49 2313226

Цитата:

Цитата misha2
Мне думается всё же - "с какого ЛБА" (незанятого) ближе будет. »

Там алгоритм не особенно простой и не описанный. Простой алгоритм был только в DOS.

Tau_0 21-02-2014 18:55 2313269

Цитата:

Цитата Игорь Лейко
Вообще-то Windows пишет блоками - и размер этих блоков с размером кластеров никак не связан. »

Да, пожалуй Вы правы...:), но тогда блок связан с размером сектора.
--- Вычитал у М. Русиновича См.

Цитата:

Внутренне NTFS работает только с кластерами. (Однако NTFS инициирует низкоуровневые операции ввода-вывода на томе, выравнивая передаваемые данные по размеру сектора и подгоняя их объем под значение, кратное размеру секторов.) NTFS использует кластер как единицу выделения пространства для поддержания независимости от размера физического сектора. Это позволяет NTFS эффективно работать с очень большими дисками, используя кластеры большего размера, и поддерживать нестандартные диски с размером секторов, отличным от 512 байт.

Игорь Лейко 21-02-2014 19:09 2313281

Цитата:

Цитата Tau_0
но тогда блок связан с размером сектора. »

Ну да, винт же не может записать только часть сектора. Минимальная единица чтения-записи - сектор.

Цитата:

Цитата Tau_0
Вычитал у М. Русиновича »

Первое предложение игнорируйте. Очередной случай, когда он не сумел внятно выразить свою мысль. :(

Vadikan 22-02-2014 09:27 2313519

О, раз все гуру собрались, у меня есть вопрос на засыпку :) Допустим, есть файл, и точно известен номер сектора диска, в который он записан (или по крайней мере его фрагмент).

Файл не:
открывался
изменялся
редактировался
копировался
перезаписывался
переносился
делился
почковался :)

В результате каких операций номер сектора может измениться?

Игорь Лейко 22-02-2014 12:29 2313577

Цитата:

Цитата Vadikan
О, раз все гуру собрались, у меня есть вопрос на засыпку »

Формулировку вопроса уточните, будьте так любезны. ;)
Ибо, например, процесс дефрагментации можно считать переносом файла, а можно и не считать.

mwz 22-02-2014 12:29 2313578

Цитата:

Цитата Vadikan
В результате каких операций номер сектора может измениться? »

В результате дефрагментации -- в т.ч. фоновой.

Tau_0 22-02-2014 12:51 2313583

Цитата:

Цитата Игорь Лейко
процесс дефрагментации можно считать переносом файла »

Дефрагментация слишком очевидно. А вот по такой причине, как появление плохо читаемых клаcтетеров (секторов) сама NTFS может безо всякого чекдиска перенести отдельные Run/отрезки или какие-то кластеры в другое место. Ведь вроде в $BadClus плохие кластеры помещаются и без чекдиска...???...

Игорь Лейко 22-02-2014 13:10 2313590

Цитата:

Цитата Tau_0
Ведь вроде в $BadClus плохие кластеры помещаются и без чекдиска...???... »

Эксперимент на обычном диске провести все никак не соберусь, а во "внутреннем устройстве" описано мутновато и другими путями точную информацию получить не удалось. В ряде ситуаций это возможно, но уверенности, что это будет происходить на любом диске и любом контроллере у меня нет.
Впрочем, chkdsk /r и плохой сектор вполне под условия Вадима подходят.
Сжатие-расжатие файла могут подойти, а могут и нет - опять-таки формулировка вопроса расплывчата. То ли "данные этого сектора окажутся в другом секторе", то ли "этот сектор уже не будет принадлежать данному файлу".

Vadikan 22-02-2014 13:59 2313612

Я даже не сомневался, что формулировка не устроит и уверен, что после уточнения она тоже будет негодной :) Подразумевается прямое взаимодействие пользователя с файлом с помощью прикладных программ, например, редактор для этого типа файлов или файловый менеджер. Но при желании запущенную пользователем дефрагментацию тоже сюда можно записать :)

С дефрагом понятно, отсюда и выбор темы для вопроса. Интересуют другие варианты. chkdsk при наличии поврежденного сектора - да. А еще что-нибудь?

Цитата:

Цитата Игорь Лейко
То ли "данные этого сектора окажутся в другом секторе", то ли "этот сектор уже не будет принадлежать данному файлу". »

Гм... по-моему, при дефраге верно оба, если я правильно понимаю формулировку второго варианта :)

По поводу сжатия. Если файл сжимался, как я понимаю, декомпрессия выполняется в память, а в ФС резервируется пространство, необходимое для записи распакованного файла (точнее, compression unit'а). Но если файл не изменялся после декомпрессии, он разве записывается в ФС заново, оказываясь в другом секторе?

Игорь Лейко 22-02-2014 14:16 2313624

Цитата:

Цитата Vadikan
по-моему, при дефраге верно оба, если я правильно понимаю формулировку второго варианта :) »

Да, конечно. Или оба неверны, если файл не затронут.
Цитата:

Цитата Vadikan
Подразумевается прямое взаимодействие пользователя с файлом с помощью прикладных программ, например, редактор для этого типа файлов или файловый менеджер. »

Автоматическое выполнение дефрагментации, внесенное пользователем в планировщик и запущенное планировщиком - это прямое взаимодействие пользователя или непрямое?

Сжатие файла - тоже прямое взаимодействие. :)
Но в этом случае данные сектора размазываются по 16 кластерам, так что даже если сектор и продолжит принадлежать данному файлу, прежних данных в нем уже не будет.

Давай оставим эту затею, тем более что к теме она имеет весьма отдаленное отношение. ;)

Vadikan 22-02-2014 14:24 2313629

Цитата:

Цитата Игорь Лейко
Автоматическое выполнение дефрагментации, внесенное пользователем в планировщик и запущенное планировщиком - это прямое взаимодействие пользователя или непрямое? »

Вот именно, поэтому идеальную формулировку придумать затруднительно. Не надо на ней концентрироваться, это не продуктивно... Лучше задавать уточняющие вопросы по конкретным процессам, протекающим в ОС.

Цитата:

Цитата Игорь Лейко
Но в этом случае данные сектора размазываются по 16 кластерам, так что даже если сектор и продолжит принадлежать данному файлу, прежних данных в нем уже не будет. »

Логично, а что по поводу декомпрессии файла, который впоследствии не изменялся? ^^

Цитата:

Цитата Игорь Лейко
Давай оставим эту затею, тем более что к теме она имеет весьма отдаленное отношение. ;) »

ТС получил исчерпывающий ответ. В качестве модератора форума я разрешаю дальнейшее обсуждение технических аспектов, связанных с моим вопросом ;)

Игорь Лейко 22-02-2014 14:30 2313631

Цитата:

Цитата Vadikan
Если файл сжимался, как я понимаю, декомпрессия выполняется в память, а в ФС резервируется пространство, необходимое для записи распакованного файла (точнее, compression unit'а). Но если файл не изменялся после декомпрессии, он разве записывается в ФС заново, оказываясь в другом секторе? »

К сожалению, точного описания работы сжатия (не самого алгоритма) я так и не смог найти, можно попытаться проверить, но пока других забот хватает.
Кстати, у меня сложилось устойчивое внутреннее убеждение, что если данные 16 кластеров не удалось сжать в 15 или меньше, то эти 16 кластеров пишутся несжатыми. Если Tau_0, misha2 или кто-то другой согласятся потратить время на экспериментальную проверку, я буду им искренне признателен.

Цитата:

Цитата Vadikan
Логично, а что по поводу декомпрессии файла, который впоследствии не изменялся? »

Ну так в нем сжатые данные восстанавливаются, так что содержимое секторов опять-таки будет изменено, даже если секторы останутся принадлежать этому файлу. Но опять-таки надо проверить, как будет вести себя расжатие.

Игорь Лейко 22-02-2014 14:58 2313646

По поводу сжатия. Похоже, надо будет учитывать версию ОС.
Взял сейчас в Win8 для пробы отлично сжимающийся файл размером (на диске) 2.220.032 байта, выполнил сжатие, и вместо ожидавшихся 34 фрагментов (2220032 / 4096 /16) получил два.
А размер файла вместо ожидавшихся 34 кластеров оказался равным 68.
Надо ковырять вглубь. :(

Vadikan 23-02-2014 16:20 2314259

Цитата:

Цитата Игорь Лейко
К сожалению, точного описания работы сжатия (не самого алгоритма) я так и не смог найти, можно попытаться проверить, но пока других забот хватает.
Кстати, у меня сложилось устойчивое внутреннее убеждение, что если данные 16 кластеров не удалось сжать в 15 или меньше, то эти 16 кластеров пишутся несжатыми. »

Я порылся в интернете на предмет того, откуда у меня отложилась информация о сжатии и нашел Understanding NTFS Compression, где как раз подтверждается этот тезис.
Цитата:

If the compression results in a reduction by one or more clusters, the compressed unit will be written to disk in its compressed format.

piligrimka 05-03-2014 13:37 2319428

Ничего себе, куда вы тему перекинули. Еле нашёл.
Так всё таки, на чём остановились и где решение того, почему у автора происходит фрагментация?

Цитата:

Цитата Tau_0
А mwz полностью расписал --- когда файл копируется, то Windows его размер знает (сложит все экстенты этого файла и получит размер), поэтому заранее для него точный размер зарезервирует. Постарается одним экстентом под него место выделит, если такая возможность есть... »

Что то это идёт в разрез с тем, что винт пишет туда, где располагаются головки.
:o Представил что головки находятся в зоне расположения другого логического раздела. :o


Время: 13:06.

Время: 13:06.
© OSzone.net 2001-