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

Кластер по определению считается минимальным необходимым количеством памяти для одного документа. Память дробится на ячейки, в которых потом будут располагаться данные. Важным этапом является определение величины сектора, именно от этого будет зависеть количество ячеек для записи файла. Например, вместительность ячейки — 4096 байт, а записываемый файл весит 300 байт. В таком случае файл займет сектор целиком. Файл весом уже 4000 байт тоже займет весь сектор.

Вводная

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

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

Если размеры файлов не достигают четного кратного размера кластера, для хранения файла необходимо использовать дополнительное пространство (до следующего кратного размера кластера). В типичном разделе жесткого диска средний объем пространства, который теряется таким образом, может быть рассчитан с использованием уравнения:

(размер кластера) / 2 * (количество файлов)


Как в компьютере хранятся данные

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

Отдельно будет находиться каталог (карта диска), который нужен для того, чтобы система не пересматривала все «ящички», а сразу знала, например, что файл с определенной аудиозаписью находится в шкатулках с номерами от 45 до 62. Также может быть вариант, что при записи файла в память не нашлось пустых шкатулок, стоящих подряд, и компьютер записал файл в шкатулки от 45 до 50 и от 65 до 77.

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

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

Размер кластера в виде наглядного примера

Возможно последнее предложение и формула несколько Вас смутили. Давайте попробуем объяснить проще и нагляднее. Наверняка, открыв свойства какой-то папки, Вы сталкивались с такой картиной:

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

Еще раз, — кластер, — это наименьший логический объем дискового пространства, который может быть выделен для хранения файла. Теперь попробуйте представить, что Ваш диск состоит из множества множества ячеек со своей нумерацией, куда можно положить файл. Наиболее наглядно это видно при дефрагментации (хотя там наиболее часто показан блок файловой системы, а не кластер, но всё же):

Размер этих ячеек и есть размер кластера. Теперь о том, как с этим взлетать.

Насколько значителен прирост производительности при большем размере кластера

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

Как с этим взлетать и что стоит понимать

Визуально Вы думаю представили, как оно выглядит. Давайте разбираться как работает.

Предположим, что размер кластера равен 4 КБ (как правило, — это значение по умолчанию, не считая самых старших версий систем). Так устроено, что файл, меньшего размера, помещенный туда всё равно будет занимать 4 КБ. Наглядный пример:

Два файла меньшего размера уже 8 Кб:

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

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

Говоря проще, отсюда стоит вынести следующее:

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

Но это еще не всё. Для адептов последнего пути, далее приводится набор таблиц, которые используются Miscrosoft по умолчанию, в зависимости от размера носителя, т.е это значения по умолчанию, задаваемые системой. Пользоваться ими или нет, — дело Ваше.

Какие факторы влияют на производительность систем хранения и как?

Системы хранения данных для подавляющего большинства веб-проектов (и не только) играют ключевую роль. Ведь зачастую задача сводится не только к хранению определенного типа контента, но и к обеспечению его отдачи посетителям, а также обработки, что накладывает определенные требования к производительности. В то время, как при производстве накопителей используется множество других метрик, чтоб описать и гарантировать должную производительность, на рынке систем хранения и дисковых накопителей, принято использовать IOPS, как сравнительную метрику, с целью «удобства» сравнения. Однако производительность систем хранения, измеряемая в IOPS (Input Output Operations per Second), операциях ввода / вывода (записи / чтения), подвержена влиянию большого множества факторов.

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

Начнем с того, что IOPS вовсе не IOPS и даже совсем не IOPS, так как существует множество переменных, которые определяют сколько IOPS мы получим в одних и других случаях.

Также следует принять во внимание, что системы хранения используют функции чтения и записи и обеспечивают различное количество IOPS для этих функций в зависимости от архитектуры и типа приложения, в особенности в случаях, когда операции ввода / вывода происходят в одно и тоже время. Различные рабочие нагрузки предъявляют различные требования к операциям ввода / вывода (I/O). Таким образом, системы хранения, которые на первый взгляд должны были бы обеспечивать должную производительность, в действительности могут не справится с поставленной задачей.
Для того, чтоб приобрести полноценное понимание в вопросе, начнем с основ. IOPS, пропускная способность (MB/s или MiB/s) и время отклика в миллисекундах (мс) являются общепринятыми единицами измерения производительности накопителей и массивов из них.
IOPS обычно рассматривают в ключе измерения способности устройства хранения производить чтение / запись блоками размером 4-8КБ в случайном порядке. Что типично для задач онлайн-обработки транзакций, баз данных и для запуска различных приложений.

Понятие пропускной способности накопителя обычно же применимо при чтении / записи крупного файла, к примеру, блоками 64КБ и более, последовательно (в 1 поток, 1 файл).

Время отклика — время, которое необходимо накопителю для того, чтоб начать производить операцию записи / чтения.

Преобразование между IOPS и пропускной способностью может быть выполнено следующим образом:

IOPS = пропускная способность / размер блока; Пропускная способность = IOPS * размер блока,

где размер блока — количество информации, переданное на протяжении одной операции ввода / вывода (I/O). Таким образом, зная такую характеристику жесткого диска (HDD SATA), как пропускную способность — мы с легкостью можем вычислить количество IOPS.

К примеру, возьмем стандартный размер блока — 4КБ и стандартную пропускную способность, заявленную производителем для последовательной записи или чтения (I/O) — 121 Мбайт / с. IOPS = 121 МБ / 4 КБ, в результате чего получим значение порядка 30 000 IOPS для нашего жесткого диска SATA

. Если же размер блока увеличить и сделать равным 8 КБ, значение будет порядка 15 000 IOPS, то есть снизится практически пропорционально увеличению размера блока. Однако нужно четко понимать, что
тут мы рассматривали IOPS в ключе последовательной записи или чтения.
Все меняется драматическим образом для традиционных жестких SATA дисков, если чтение и запись будут случайными.

Тут начинает играть роль задержка (latency), которая очень критична в случае жестких дисков HDDs (Hard Disk Drives) SATA / SAS, а порой даже и в случае твердотельных накопителей SSD (Solid State Drive). Хотя последние зачастую обеспечивают производительность на порядки лучшую, чем у «вращающихся» накопителей, за счет отсутствия движущихся элементов, но все же могут возникать ощутимые задержки при записи, в виду особенностей технологии, и, как следствие, при использовании их в массивах. Глубокоуважаемый amarao провел довольно полезное исследование по использованию твердотельных накопителей в массивах, как выяснилось, производительность будет зависеть от latency самого медленного из дисков. Более подробно с результатами Вы можете ознакомиться в его статье: SSD + raid0 — не всё так просто.

Но вернемся к производительности отдельно взятых накопителей. Рассмотрим случай с «вращающимися» накопителями. Время, требуемое для выполнения одной случайной операции ввода / вывода будет определятся такими составляющими:

T(I/O) = T(A)+T(L)+T(R/W),

где T(A) — время доступа (access time или seek time), также известное, как время поиска, то есть время, требуемое для того, чтоб считывающая головка, была помещена на дорожку с нужным нам блоком информации. Зачастую в спецификации диска производителем указываются 3 параметра:

— время, требуемое, чтоб переместиться с самой дальней дорожке к самой ближней; — время, требуемое для перемещения между смежными дорожками; — среднее время доступа.

Таким образом мы приходим к волшебному выводу, что показатель T(A) может быть улучшен, если мы размещаем наши данные на как можно более близких дорожках, а все данные располагаются как можно дальше от центра пластины (требуется меньше времени для перемещения блока магнитных головок, а на внешних дорожках данных больше, так как больше длина дорожки и она вращается быстрее, нежели внутренняя). Теперь становится понятно почему дефрагментация может быть так полезна. Особенно с условием размещения данных на внешних дорожках в первую очередь.

T(L) — задержка, вызванная вращением диска, то есть время, требуемое для того, чтоб считать или записать конкретный сектор на нашей дорожке. Легко понять, что оно будет лежать в пределах от 0 до 1/RPS, где RPS — количество оборотов в секунду. К примеру при характеристике диска в 7200 RPM (оборотов в минуту) мы получим 7200/60 = 120 оборотов в секунду. То есть один оборот происходит за (1/120) * 1000 (количество миллисекунд в секунде) = 8,33 мс. Средняя же задержка в этом случае, будет равна половине времени, затрачиваемому на один оборот — 8,33/2 = 4,16 мс.

T(R/W) — время чтения или записи сектора, которое определяется размером выбранного при форматировании блока (от 512 байт и до… нескольких мегабайт, в случае с более емкими накопителями — от 4 килобайт, стандартный размер кластера) и пропускной способностью, которая указана в характеристиках накопителя.

Среднюю задержку вращения, которая приблизительно равна времени, затраченному на половину оборота, зная скорость вращения 7200, 10 000 или 15 000 RPM, легко определить. И выше мы уже показали как.

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

Для расчета количества случайных IOPs жесткого диска возможно применить следующую формулу, при условии когда количество одновременных операций чтения и записи одинаково (50%/50%):

1/( ( (среднее время поиска чтения + среднее время поиска записи) / 2) / 1000) + (средняя задержка вращения / 1000)).

Многие интересуются, почему именно такое происхождение формулы? IOPS — количество операций ввода или вывода в секунду. Именно потому мы делим в числителе 1 секунду (1000 миллисекунд) на время с учетом всех задержек в знаменателе (выраженное также в секундах или миллисекундах), требуемое для осуществления одной операции ввода или вывода.

То есть формула может быть записана и таким образом:

1000 (мс) / ((среднее время поиска чтения (мс) + среднее время поиска записи (мс)) /2) + средняя задержка вращения (мс))

Для накопителей с различным количеством RPM (вращений в минуту), мы получим следующие значения:

Для 7200 RPM накопителя IOPS = 1/(((8,5+9,5)/2)/1000) + (4,16/1000)) = 1/((9/1000) + (4,16/1000)) = 1000/13,16 = 75,98; Для 10K RPM SAS накопителя IOPS = 1/(((3,8+4,4)/2)/1000) + (2,98/1000)) = 1/((4,10/1000) + (2,98/1000)) = 1000/7,08 = 141,24; Для 15K RPM SAS накопителя IOPS = 1/(((3,48+3,9)/2)/1000) + (2,00/1000)) = 1/((3,65/1000) + (2/1000)) = 1000/5,65 = 176,99.

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

И уже, при стандартном размере сектора в 4КБ, и наличию столь малого числа IOPS, мы получим значение пропускной способности отнюдь не в сотню мегабайт, а менее, чем в мегабайт.

Эти примеры также иллюстрируют причину незначительных изменений в номинальных дисковых IOPS от разных производителей для дисков с одним и тем же показателем RPM.

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

7200 RPM (Rotate per Minute) HDD SATA — 50-75 IOPS; 10K RPM HDD SAS — 110-140 IOPS; 15K RPM HDD SAS — 150-200 IOPS; SSD (Solid State Drive) — десятки тысяч IOPS на чтение, сотни и тысячи на запись.

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

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

Единственное, хотелось бы добавить:

Мы уже поняли, что для «вращающихся» накопителей, время, требуемое для случайного чтения или записи, складывается из следующих компонент:

T(I/O) = T(A)+T(L)+T(R/W).

И далее даже рассчитали производительность при случайном чтении и записи в IOPS. Вот только параметром T(R/W) мы там по сути пренебрегли, и это не случайно. Мы знаем, что допустим, последовательное чтение может быть обеспечено на скорости в 120 мегабайт в секунду. Становится понятным, что блок в 4КБ, будет считан за примерно 0,03 мс, время на два порядка меньшее, нежели время остальных задержек (8 мс + 4 мс).

Таким образом, если при размере блока в 4КБ мы имеем 76 IOPS

(основная задержка была вызвана вращением накопителя и временем позиционирования головки, а не самим процессом чтения или записи),
то при размере блока в 64КБ, падение IOPS будет не в 16 раз, как при последовательном чтении, а лишь на несколько IOPS
. Так как время, затрачиваемое на непосредственно чтение или запись, возрастет на 0,45 мс, что составляет лишь порядка 4% от общего времени задержки.

В результате мы получим 76-4% = 72,96 IOPS, что согласитесь, совсем не критично при расчетах, так как падение IOPS не в 16 раз, а лишь на несколько процентов! И при расчетах производительности систем куда важнее не забыть учесть другие важные параметры.

Волшебный вывод:

при расчете производительности систем хранения, основанных на жестких дисках, следует подбирать оптимальный размер блока (кластера), для обеспечения нужной нам максимальной пропускной способности в зависимости от типа данных и используемых приложений, причем падением IOPS при увеличении размера блока с 4КБ до 64КБ или даже 128КБ можно пренебречь, либо учитывать, как 4 и 7% соответсвенно, если в поставленной задаче они будут играть важную роль.

Также становится понятным, почему не всегда есть смысл использовать очень большие блоки. Скажем, при видеостриминге, двухмегабайтный размер блока может оказаться далеко не самым оптимальным вариантом. Так как падение количества IOPS будет более, чем в 2 раза. Помимо прочего добавятся другие деградационные процессы в массивах, связанные с многопоточностью и вычислительной нагрузкой при распределении данных по массиву.

Оптимальный размер блока нужно учитывать в зависимости от характера нагрузки и типа используемых приложений. Если идет работа с данными небольшого размера, к примеру с базами данных — следует выбрать стандартные 4 КБ, если же речь идет о стриминге видеофайлов — размер кластера лучше выбирать от 64 КБ и более.

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

Для многих накопителей, в особенности твердотельных, значения производительности, к примеру записи, начиная с 4 КБ, становятся оптимальными, это видно из графика:

В то время, как на чтение, скорость также довольно существенна и более менее сносна начиная с 4 КБ:

Именно по этой причине 4 КБ размер блока очень часто применяют за стандартный, так как при меньшем размере идут большие потери производительности, а при увеличении размера блока, в случае работы с небольшими данными, данные будут распределены менее эффективно, занимать весь размер блока и квота накопителя будет использоваться не эффективно.

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

Так, при RAID0, на каждую операцию ввода будет расходоваться лишь 1 IOPS, ведь данные будут распределены по всем накопителям без дублирования. В случае же зеркала (RAID1, RAID10), каждая операция записи будет потреблять уже 2 IOPS, так как информация должна быть записана на 2 накопителя.

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

RAID5 используется вместо RAID4 в большинстве случаев, так как распределяет четность (контрольные суммы) по всем дискам. В массиве RAID4 один из дисков ответственен за всю четность, в то время как данные распространены более чем на 3 диска. Именно потому мы применяем штрафной коэффициент 4 в массиве RAID5, так как мы читаем данные, читаем четность, затем пишем данные и пишем четность.

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

Казалось бы, что в таком массиве, как RAID-DP все будет аналогично, так как это по сути модифицированный массив RAID6. Но не тут то было… Хитрость заключается в том, что применяется отдельная файловая система WAFL (Write Anywhere File Layout), где все операции записи последовательны и производятся на свободное место. WAFL в основном напишет новые данные в новое местоположение на диске и затем переместит указатели на новые данные, устраняя таким образом операции чтения, которые должны иметь место. Кроме того идет запись журнала в NVRAM, который отслеживает транзакции записи, инициирует запись и может восстановить их при необходимости. Идет запись в буфер в начале, а затем они уже «сливаются» на диск, что ускоряет процесс. Вероятно эксперты в NetApp могут просветить нас более подробно в комментариях, за счет чего достигается экономия, я пока что еще не до конца разобрался в этом вопросе, но запомнил, что штрафной коэффициент RAID будет всего лишь 2, а не 6. «Хитрость» весьма существенна.

При больших массивах RAID-DP, которые состоят из десятков дисков, существует понятие уменьшения «штрафа четности», который возникает при записи четности. Так при росте массива RAID-DP, требуется меньшее количество дисков, выделяемых под четность, что приведет к снижению потерь, связанных с записями четностей. Однако в небольших массивах, либо с целью повышения консерватизма, мы можем пренебречь этим явлением.

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

В случае пренебрежения этими факторами, формула будет следующей:

Функциональные IOPS = (Исходные IOPS * % операций записи / штрафной коэффициент RAID) + (Исходные IOPS * % чтения), где Исходные IOPS = усредненный IOPS накопителей * количество накопителей.

Рассчитаем для примера производительность массива RAID10 из 12 дисков HDD SATA, если известно, что одновременно происходит 10% операций записи и 90% операций чтения. Допустим, что диск обеспечивает 75 случайных IOPS, при размере блока 4КБ.

Исходные IOPS = 75*12 = 900; Функциональные IOPS = (900*0,1/2) + (900*0,9) = 855.

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

В целях консерватизма я рекомендую добавлять от 20% от нужного числа IOPS, при проектировании систем.

Производительность нашего решения очень сильно может зависеть от приложений, которые будут исполнятся впоследствии. Так это может быть обработка транзакций — «структурированных» данных, которые организованы, последовательны и предсказуемы. Зачастую в этих процессах можно применить принцип пакетной обработки, распределив эти процессы во времени так, когда нагрузка минимальна, тем самым оптимизировав потребление IOPS. Однако в последнее время появляется все больше и больше медийных проектов, где данные «не структурированы» и требуют совсем иных принципов их обработки.

По этой причине подсчет необходимой производительности решения для конкретного проекта может стать весьма сложной задачей. Некоторые из производителей сторедж-хранилищ и экспертов утверждают, что IOPS не имеют значения, так как клиенты в подавляющем большинстве используют до 30-40 тысяч IOPS, в то время, как современные системы хранения обеспечивают сотни тысяч и даже миллионы IOPS. То есть современные хранилища удовлетворяют нужды 99% клиентов. Тем не менее это утверждение может быть справедливо далеко не всегда, лишь для бизнес-сегмента, который размещает хранилища у себя, локально, но не для проектов, размещаемых в дата-центрах, которые зачастую, даже при использовании готовых решений хранения, должны обеспечивать довольно высокую производительность и отказоустойчивость.

В случае размещения проекта в дата-центре, в большинстве случаев, все же более экономично строить системы хранения самостоятельно на основе выделенных серверов, нежели использовать готовые решения, так как становится возможным более эффективно распределить нагрузку и подобрать оптимальное оборудование для тех, либо других процессов. Помимо прочего, показатели производительности готовых систем хранения, далеки от реальных, так как в большинстве своем основаны на данных профилей синтетических тестов производительности, при применении 4 или 8 КБ размера блока, в то время как большинство клиентских приложений работает сейчас в средах с размером блока от 32 до 64 КБ

.

Как видим из графика:

Менее, чем 5% систем хранения, настроены с применением блока менее 10 КБ и менее, чем 15% используют блоки с размером менее 20 КБ. Кроме того, даже для определенного приложения, редко когда возникает потребления I/O лишь одного типа.

К примеру у базы данных будут различные профили I/O для различных процессов (файлы с данными, логирование, индексы …). А значит, заявленные синтетические тесты производительности систем, могут быть далекими от истины.

А что на счет задержек?

Даже если мы будем игнорировать тот факт, что инструменты, применяемые для измерения latency, имеют тенденцию измерять средние времена ожидания и упускают то, что один единственный I/O в каком-то из процессов, может занимать куда больше времени, чем другие, таким образом замедляя ход всего процесса

, то совсем не учитывают то,
насколько время ожидания I/O изменится в зависимости от размера блока
. Помимо прочего это время также будет зависеть от конкретного приложения.

Таким образом мы приходим к еще одному волшебному выводу, что не только размер блока является не очень хорошей характеристикой при измерении производительности IOPS систем, но и latency может оказаться вполне бесполезным параметром.

Хорошо, если ни IOPS, ни время ожидания не являются хорошей мерой измерения производительности системы хранения, то что тогда?

Только реальный тест исполнения приложения на конкретном решении…

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

Тем не менее учет приведенных выше факторов, влияющих на производительность наших систем, может быть весьма полезным при подборе хранилища или построении определенной инфраструктуры на основе выделенных серверов. С определенной степенью консерватизма становится возможным подобрать более-менее реальное решение, исключить некоторые технические и программные изъяны в виде не оптимального размера блока при разбивке или не оптимальной работы с дисками. Решение, конечно, не будет на 100% гарантировать расчетную производительность, но в 99% случаев можно будет говорить, что решение справится с нагрузкой, особенно, если добавлять консерватизм в зависимости от типа приложения и его особенностей в расчет.

Тип файловой системы

Как уже говорилось, диапазон доступного размера кластера зависит от файловой системы. Узнать её можно, нажав правой кнопкой мыши на диске в проводнике («Мой компьютер»), и выбрав пункт «Свойства».

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

Чтобы узнать текущий размер файла, запустите командную строку («поиск — cmd» или «WIN+R» на клавиатуре — cmd) и введите:

fsutil fsinfo ntfsinfo X:

Результат не заставит себя ждать (не кликабельно):

Двигаемся далее.

Как узнать размер кластера диска или флешки

Простая команда, выполненная в командной строке, позволит вам узнать, какой размер кластера используется на подключенном к компьютеру диску. Примечание: для выполнения этой команды вам нужна учетная запись с правами Администратора. Если ваш профиль не имеет этих прав, система попросит ввести пароль Администратора.

  • Откройте меню Пуск и введите команду cmd. В поисковой выдаче отобразится Командная строка. Кликните правой кнопкой мыши по ней и выберите Запустить от имени Администратора.
  • В Командной строке введите fsutilfsinfontfsinfoX:. В этом случае Х – буква вашего диска.

  • Система отобразит вам подробные сведения о вашем диске. Поле Байт на кластер отображает размер вашего кластера. На скриншоте он равен 4 096 байт или 4 Кб.
  • Теперь вы знаете для чего нужен размер кластера и из какого принципа исходить при форматировании диска или флешки.

    Доброго времени суток, дорогие друзья, знакомые, читатели, почитатели и прочие личности. Сегодня мы говорим, что логично из заголовка, про размер кластера и сопутствующие тому нюансы с дисковым пространством.

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

    Сам по себе этот размер задаётся при уже упомянутом форматировании или создании самого раздела. Доступные размеры зависят от файловой системы ( NTFS, FAT, exFAT , если мы рассматриваем Windows) и влияют не только на количественные, но и на скоростные характеристики дисковой подсистемы.

    Впрочем, давайте обо всём по порядку.

    Обучим, расскажем, покажем, трудоустроим! Станьте опытным пользователем, администратором серверов и сетей, веб-дизайнером или кем-то из смежной сферы!

    Размер кластера по умолчанию для NTFS

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

    Размер томаWindows NT 3.51Windows NT 4.0Windows 10, Windows 8, Windows 7, Windows Server 2008 R2, Windows Server 2008, Windows Vista, Windows Server 2003, Windows XP, Windows 2000 7 МБ — 512 МБ512 байт4 КБ4 КБ >512 МБ — 1 ГБ1 КБ4 КБ4 КБ 1 GB — 2 GB2 КБ4 КБ4 КБ 2 ГБ — 2 ТБ4 КБ4 КБ4 КБ 2 ТБ — 16 ТБНе поддерживается*Не поддерживается*4 КБ 16 ТБ — 32 ТБНе поддерживается*Не поддерживается*8 KB 32 ТБ — 64 ТБНе поддерживается*Не поддерживается*16 KB 64 TB — 128 TBНе поддерживается*Не поддерживается*32 КБ 128 TB — 256 TBНе поддерживается*Не поддерживается*64 КБ > 256 ТБНе поддерживаетсяНе поддерживаетсяНе поддерживается

    Звездочка (*) означает, что она не поддерживается из-за ограничений основной загрузочной записи (MBR).

    Какой выбрать размер кластера при форматировании флешки в NTFS

    Если открыть окно форматирования и выбрать файловую систему NTFS, то в поле размер кластера становятся доступными варианты в диапазоне от 512 байт до 64 Кб.

    Давайте разберемся, как влияет параметр «Размер кластера» на работу флешки. По определению, кластер представляет собой минимальный объем, выделенный для хранения файла. Для оптимального выбора этого параметра при форматировании устройства в файловой системе NTFS нужно учитывать несколько критериев.

    Данная инструкция понадобится Вам при выполнении форматирования съемного накопителя в NTFS.

    Критерий 1: Размеры файлов

    Определитесь с тем, файлы какого размера вы собираетесь хранить на флешке.

    Например, размер кластера на флешке 4096 байт. Если скопировать файл размером 1 байт, то он займет на флешке все равно 4096 байт. Поэтому для небольших файлов лучше использовать размер кластеров поменьше. Если же флешка предназначается для хранения и просмотра видео и аудио файлов, то размер кластера лучше выбрать побольше где-то 32 или 64 кб. Когда флешка предназначена для различных целей, то можно оставить значение по умолчанию.

    Помните, что неправильно выбранный размер кластера приводит к потере пространства на флешке. Система выставляет стандартный размер кластера 4 Кб. И если на диске есть 10 тысяч документов по 100 байт каждый, то потери составят 46 Мб. Если вы отформатировали флешку с параметром кластера 32 кб, а текстовый документ будет всего 4 кб. То он все равно займет 32 кб. Это приводит к нерациональному использованию флешки и потере части пространства на ней.

    Корпорация Microsoft для расчета потерянного пространства использует формулу:

    (размер кластера)/2*(количество файлов)

    Критерий 2: Желаемая скорость обмена информацией

    Учитывайте тот факт, что от размера кластера зависит скорость обмена данных на вашем накопителе. Чем больше размер кластера, тем меньше операций выполняется при обращении к накопителю и тем выше скорость работы флеш-накопителя. Фильм, записанный на флешке с размером кластера 4 кб, будет воспроизводиться медленнее, чем на накопителе с размером кластера 64 кб.

    Критерий 3: Надежность

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

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

    Некоторые пользователи на форумах советуют при размерах флеш-накопителя более 16 Гб, разделять его на 2 тома и форматировать их по разному. Том меньшего объема отформатировать с параметром кластера 4 Кб, а другой под большие файлы под 16-32 Кб. Таким образом будет достигнута и оптимизация пространства и нужное быстродействие при просмотре и записи объемных файлов.

    Итак, правильный подбор размера кластера:

    • позволяет эффективно размещать данные на флешке;
    • ускоряет обмен данными на носителе информации при чтении и записи;
    • повышает надежность эксплуатации носителя.

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

    Отблагодарите автора, поделитесь статьей в социальных сетях.

    При форматировании диска или флешки вы наверняка замечали, что система предлагает вам выбрать размер так называемого «кластера». Его размер варьируется от типа файловой системы диска. К примеру, для NTFS минимальный размер кластера составляет 512 Байт, а максимальный – 64 Кб. Для FAT32 – от 4 до 64 Кб. Зачастую на выбор доступно много вариантов, которые могут поставить неподготовленного пользователя перед логичным вопросом: какой размер кластера выбрать при форматировании флешки, диска или любого другого накопителя?

    Размер кластера по умолчанию для FAT32

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

    Размер томаWindows NT 3.51Windows NT 4.0Windows 7, Windows Server 2008 R2, Windows Server 2008, Windows Vista, Windows Server 2003, Windows XP, Windows 2000 7 МБ — 16 МБНе поддерживаетсяНе поддерживаетсяНе поддерживается 16 МБ — 32 МБ512 байт512 байтНе поддерживается 32 МБ — 64 МБ512 байт512 байт512 байт 64 МБ — 128 МБ1 КБ1 КБ1 КБ 128 МБ — 256 МБ2 КБ2 КБ2 КБ 256 МБ — 8 ГБ4 КБ4 КБ4 КБ 8 ГБ — 16 ГБ8 KB8 KB8 KB 16 ГБ — 32 ГБ16 KB16 KB16 KB 32 ГБ — 2 TБ32 КБНе поддерживаетсяНе поддерживается > 2 ТБНе поддерживаетсяНе поддерживаетсяНе поддерживается

    Идем далее.

    Размер кластера по умолчанию для FAT16

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

    Размер томаWindows NT 3.51Windows NT 4.0Windows 7, Windows Server 2008 R2, Windows Server 2008, Windows Vista, Windows Server 2003, Windows XP, Windows 2000 7 МБ — 8 МБНе поддерживаетсяНе поддерживаетсяНе поддерживается 8 МБ — 32 МБ512 байт512 байт512 байт 32 МБ -64 МБ1 КБ1 КБ1 КБ 64 МБ — 128 МБ2 КБ2 КБ2 КБ 128 МБ — 256 МБ4 КБ4 КБ4 КБ 256 МБ — 512 МБ8 KB8 KB8 KB 512 МБ -1 ГБ16 KB16 KB16 KB 1 ГБ — 2 ГБ32 КБ32 КБ32 КБ 2 ГБ — 4 ГБ64 КБ64 КБ64 КБ 4 ГБ — 8 ГБНе поддерживается128 КБ *Не поддерживается 8 ГБ — 16 ГБНе поддерживается256 KB *Не поддерживается > 16 ГБНе поддерживаетсяНе поддерживаетсяНе поддерживается

    Звездочка (*) означает, что она доступна только на носителе с размером сектора более 512 байт.

    Профилактика и уход

    Изредка, проводя подобные процедуры, можно существенно повысить срок работы носителя информации:

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

    Рекомендуется также следить за температурным контролем и вибрацией как встроенного диска, так и съемного.

    Избегайте механических повреждений и не пренебрегайте дефрагментацией время от времени.

    Размер кластера по умолчанию для exFAT

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

    Размер томаWindows 7, Windows Server 2008 R2, Windows Server 2008, Windows Vista, Windows Server 2003, Windows XP 7 МБ — 256 МБ4 КБ 256 МБ — 32 ГБ32 КБ 32 ГБ — 256 ТБ128 КБ > 256 ТБНе поддерживается

    Ну и напоследок послесловие, которое немного резюмирует всё это дело. Еще раз, да.

    Зачем выполнять форматирование

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

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

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

    Послесловие

    С точки зрения эффективности пространства, т.е сохранения свободного места на диске, конечно маленький кластер выглядит очень привлекательно и позволяет не терять большие объемы на ровном месте. С другой стороны, собственно, диски чем дальше, тем больше и дешевле, посему порой можно и принебречь потерями в угоду производительности, и, меньшей фрагментированности данных. С другой стороны, стоит ли заморачиваться, если есть SSD. С другой, — маловерятно, что на SSD вы храните терабайты фильмов, музыки, фото и других файлов, размером более мегабайта.

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

    Как и всегда, если есть какие-то вопросы, разумные мысли и послезные дополнения, то добро пожаловать в комментарии к этому материалу.

    Какой размер кластера выбрать — решение принимать вам

    Как же все-таки разрешить возникшую дилемму и выбрать оптимальный размер кластера при форматировании NTFS? Да очень просто и здесь есть три варианта:

    • Прикинуть, с какими файлами вы собираетесь работать. Если они преимущественно небольшие – можно выбрать размер кластера поменьше. Так же можно разбить диск на несколько разделов и каждый отформатировать со своим размером кластера. Например, установить максимальный для места хранения мультимедийных файлов;
    • Установить вместительный жесткий диск с достаточным запасом по объему. И произвести его форматирование, выбрав наибольший размер кластера;
    • Вообще не париться по этому поводу и при форматировании установить стандартные настройки по умолчанию. А они напрямую зависят от объема винчестера или SSD;

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

    Возможно в будущем как-нибудь напишу подробную обзорную статью о том как влияет скорость работы накопителя при разных размерах кластеров.

    Кстати, вот ещё одна статья на тему формат-я, гляньте может и это вам интересно: //profi-user.ru/raznica-formatirovaniya/

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

    До скорых встреч в новых темах моего блога.