Как можно реализовать фрагментатор диска? - PullRequest
5 голосов
/ 30 марта 2009

У меня есть несколько идей, которые я хотел бы попробовать на арене дефрагментации диска. Я пришел к выводу, что в качестве предшественника реализации было бы полезно иметь возможность поместить диск в состояние, где он был фрагментирован. Мне кажется, что это состояние, которое сложнее достичь, чем дефрагментированное. Я бы предположил, что коммерческие компании по дефрагментации, вероятно, решили эту проблему.

Так мой вопрос .....

Как можно реализовать фрагментатор? Что имеет смысл в контексте того, что он будет использоваться для тестирования дефрагментатора?

Ответы [ 5 ]

7 голосов
/ 30 марта 2009

Может быть, вместо того, чтобы фрагментировать реальный диск, вы должны действительно протестировать свой алгоритм дефрагментации на симуляционном / пробном диске? Только после того, как вы убедитесь, что сам алгоритм работает, как указано, вы можете выполнить тестирование на реальных дисках с использованием фактического API диска.

Вы даже можете сделать снимки фактических фрагментированных дисков (ваших или ваших знакомых) и использовать эти данные в качестве фиктивной модели для тестирования.

2 голосов
/ 30 марта 2009

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

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

2 голосов
/ 30 марта 2009

Как вы можете наилучшим образом fragement зависит от файловой системы.

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

Фрагментация существующих файлов - это другое дело. В основном, сделайте то же самое, но сделайте это на копии существующих файлов, выполнив удаление оригинала и переименовав копию.

1 голос
/ 05 марта 2012

Кто-то думал об этом. Вот и я, я не несу никакой ответственности, если это убьет ваш HD. Автор предупреждает об использовании только на здоровом оборудовании.

http://www.softpedia.com/get/System/Hard-Disk-Utils/Fragger.shtml

0 голосов
/ 30 марта 2009

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

...