Аннотация

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

Что такое фрагментация?

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

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

Характеристики HDD

Основные характеристики HDD:

-Объем, Гб;

-Линейная скорость чтения/записи(скорость считывания/записи после позиционирования), Mb/s ;

-Количество оборотов диска в минуту, rpm;

-Время перехода track to track, ms.

Возьмем для моделирования HDD со следующими характеристиками:

Рисунок 1. Характеристики HDD
Рисунок 1. Характеристики HDD

Зададимся условным тестируемым файлом, который будет читаться с HDD. Размер файла равен 1 МБ.

Построим модель работы HDD при чтении файла.

1) Файл состоит из кластеров. Количество кластеров в файле:

N{кластеров} = \frac {\text{Размер файла}}  {\text{Размер кластера}} \text{ (1)}

2) Время чтения кластера.

t{кластера} = \frac {\text{Размер кластера}} { \text{Скорость чтения}} \text{ (2)}

3) Время позиционирования.

t_{позиционирования} = t_{\text{ track to track}}+ t_{\text{задержка вращения}}\text{ (3)}

Теперь составим формулу по которой рассчитывается время чтения файла в зависимости от фрагментации:

t_{файла}=N_{кластеров}\cdot(t_{кластера}+t_{поз}\cdot \frac{fragmentation}{100}) \text{ (4)}

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

Посчитаем время чтения файла для разных степеней фрагментации и размера кластера:

Рисунок 2. Таблица с расчетами скоростей HDD в зависимости от фрагментации и размера кластера
Рисунок 2. Таблица с расчетами скоростей HDD в зависимости от фрагментации и размера кластера

Построим графики относительной скорости HDD в зависимости от степени фрагментации:

Рисунок 3. Относительная скорость HDD в зависимости от фрагментации файла и размера кластера.
Рисунок 3. Относительная скорость HDD в зависимости от фрагментации файла и размера кластера.

Рассчитаем таблицу как меняется скорость HDD в зависимости от размера кластера и фрагментации:

Рисунок 4. Расчет скорости HDD при изменении фрагментации файла для разных размеров кластеров.
Рисунок 4. Расчет скорости HDD при изменении фрагментации файла для разных размеров кластеров.

Как видно на маленьких размерах кластера быстродействие даже при незначительной фрагментации падает значительно. Например, при размере кластера 512 байт и фрагментации 5% быстродействие уже падает до ~1% относительно скорости линейного чтения.

На кластерах больших размеров быстродействие падает значительно медленнее, что объясняется тем, что диск затрачивает намного меньшее времени на операции позиционирования.

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

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

N_{\text{кластеров реальных }} = N_{\text{кластеров}}\cdot (1-k_{\text{попаданий в кеш}} ) (5)

Размер кеша, например, если с диска HDD читается база данных размером 1Гб, то чтобы обеспечить 10% попадания в кеш: нужен кеш размером 100Мб. Эта оценка не учитывает повторных попаданий, если учитывать повторные попадания в кеш, то коэффициент попаданий будет больше.

Чтобы получить большое быстродействие (ориентируясь на расчеты и Рисунок 3) нужно 0%-10% процентов фрагментации. Из чего можно сделать вывод, чтобы получать высокую скорость нужна дефрагментация данных и большой кеш, тогда быстродействие будет высоким.

Выводы

  1. Производительность HDD падает нелинейно с ростом фрагментации данных.

  2. Кеши не большого объема не сильно повлияют на рост скорости.

  3. Для повышения эффективности нужно дефрагментировать не только сами файлы, но и также файлы относительно друг друга.

  4. Желательно использовать кластеры большого размера при условии высокой утилизации данных при записи и чтении.

Комментарии (9)


  1. muhamuha
    11.01.2026 07:28


    1. eevg Автор
      11.01.2026 07:28

      Да в Досе это помогало ускорить диск. В многозадачных операционных системах сложнее. Там выгоднее запрашиваемые данные располагать на одной дорожке и читать дорожку целиком тем более объём современных кешей позволяет. Для HDD время чтения одной дорожки сравнимо с временем перемещения дорожки к дорожке.


      1. muhamuha
        11.01.2026 07:28

        по-моему, одиночные HDD остались в домашних системах, а в более-менее серьезном проде - RAID. И там уже с дефрагментацией всё иначе. Не говоря уже о системах, отличных от FAT/NTFS. Статья хорошая, устарела лет на 20, а так да, тёплая, ламповая :)


      1. HardWrMan
        11.01.2026 07:28

        Да в Досе это помогало ускорить диск.

        Не только в DOSе. Вот этот парень имел наилучшую стратегию и алгоритм для упорядочивания:

        Но он оказался заложником Win9x, где имел свой драйвер-прослойку для дисков. Когда майки всех вытолкнули на NT (с приходом XP), то я читал что для Norton Speed Disk M$ не сертифицировала этот драйвер и вынуждала использовать встроенный в систему API дефрагментации, это для которого сделали вот такой GUI сами M$:

        Позднее, этот GUI отключили вообще
        Позднее, этот GUI отключили вообще

        Тут ещё скорее всего наложился переход с FAT на NTFS и всё такое.

        Как по мне, для всех видов FAT для Win9x лучше, чем Norton Speed Disk 99/2000/2001 нет. Он быстр, у него отличный алгоритм сортировки, который заметно сокращает количество дисковых операций для переноса и упорядочивания данных. Да и сам процесс дефрагментации крайне быстр. А вот под NT лично я перепробовал много разных ныне доступных программ и только PerfectDisk смог упорядочить не только файлы, но и подкачку, гибернацию и даже MFT$, что так же влияет на скорость работы магнитного диска. Ну и стратегии у него хорошие, правда с оптимальностью сортировки не очень, но поддерживать дефрагментацию можно относительно быстро, хотя первичная может затянуться на много часов.


        1. Vitimbo
          11.01.2026 07:28

          Своими скриншотами отправили меня куда-то в начало века, спасибо :)


        1. vis_inet
          11.01.2026 07:28

          А что можете сказать про Defraggler ?


  1. aik
    11.01.2026 07:28

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

    Но после того, как все диски в юзерских компах заменили на ссд, вопрос закрылся. Ибо основное преимущество ссд перед винтами - это не скорости чтения/записи, а нулевое (ну, маленькое и везде одинаковое) время доступа. Пока диск не забит на 90%.

    Впрочем, черепичные винты...


    1. lex899
      11.01.2026 07:28

      Ибо основное преимущество ссд перед винтами - это не скорости чтения/записи, а нулевое (ну, маленькое и везде одинаковое) время доступа.

      SSD имеют разброс времени доступа в один порядок, видел это на графиках в разных статьях, специально поигрался с тестами на случай если информация устарела - для моего nvme от samsung примерно 3% запросов дают провал до 20ms, остальные операции укладываются в 2ms.

      Для одиночного ssd этим можно пренебречь, но собрав полку из 24 дисков - вы получите среднее время доступа ~11ms вместо 2ms при таких вводных.


  1. VT100
    11.01.2026 07:28

    Не указано, что (4) даёт оценку снизу. Как минимум - потому, что не все файлы фрагментированы. Далее - в ход могут вступить кэширования. Начиная с того, что в самом диске может оказаться в кэше вся дорожка.
    Классика Хабра