Назад | Перейти на главную страницу

Влияет ли место на жестком диске на производительность?

Несколько лет назад я видел презентацию, в которой говорилось, что жесткие диски имеют лучшую производительность, когда они заполнены <50%, и что для загруженных серверов вы хотите, чтобы ваши диски использовались <80%. Причина заключалась в том, что дорожки записываются изнутри и что доступ, особенно произвольный, для внутренних дорожек был быстрее, чем для внешних. Задержка вращения была ниже.

С другой стороны, с сегодняшним кешированием и иногда с опережением в таких продуктах, как SQL Server, более длинный внешний трек без отслеживания движения может быть отрицательными факторами.

Это правда? Есть ли причина оставлять свободное место на современном жестком диске? В Windows он отличается от * Nix?

По моему опыту, беспокойство о внешней дорожке по сравнению с внутренней дорожкой больше не стоит усилий. Разница в производительности слишком мала по сравнению с другими факторами, влияющими на производительность (RAID, кеширование, фрагментация файловой системы и т. Д.).

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

Эта статья / сообщение в блоге больше нацелены на фрагментацию файлов, чем на производительность диска, но она предлагает одно из лучших объяснений, которые я нашел для фрагментации файлов и того, почему доступное свободное пространство влияет на нее: Почему Linux не требует дефрагментации?

Чем больше заполняется диск, тем больше файлов (особенно больших файлов) становится фрагментированным, и их чтение и доступ становятся медленнее. Это также причина того, что файловые системы Linux резервируют процент пространства (обычно 5%), доступного только для root. Это зарезервированное пространство очень полезно в чрезвычайных ситуациях (когда пользователь не может полностью заполнить диск и вызвать проблемы), но в первую очередь предназначено для уменьшения фрагментации диска по мере его заполнения. При работе с очень большими файлами, как это часто бывает с базами данных, проблема фрагментации может быть уменьшена путем предварительного выделения файлов данных (при условии, что база данных (или другое приложение) поддерживает это).

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

Я согласен с г-ном Кашеллом (и проголосовал за него), но хотел бы добавить два других фактора.

Во-первых, в зависимости от вашей ОС системе потребуется немного свободного места для файлов подкачки и других временных файлов. В Linux, конечно, есть выделенный том подкачки, но Windows, OS X и Netware хотят использовать системный том для своего временного хранилища. Постоянно оставлять на системном томе не менее 10% (и до 20%, если вы можете управлять ими) на системном томе - хорошая практика.

Во-вторых, правило для серверов сейчас и всегда будет заключаться в том, что вы боретесь с низкой производительностью диска с помощью большего объема оперативной памяти. Планировщики ОС становятся все более изощренными и будут сохранять чтение в ОЗУ до тех пор, пока не наступит удобное время для обратной записи на диск. Некоторые приложения в интересах целостности данных также будут записывать на диск временные файлы «отката», которые в конечном итоге будут объединены с набором основных данных. Чем больше у вас ОЗУ, тем меньше операций чтения должно происходить с диска (поскольку часто используемые файлы обычно кэшируются в ОЗУ) и тем больше ОС может скрывать медленную запись.