Что такое размер единицы распределения на жестком диске
Что такое размер кластера жёсткого диска, и как его изменить без форматирования раздела
Что средства Windows, что сторонние программы для распределения места на диске и форматирования разделов по умолчанию настроены так, чтобы за нас оптимально решать вопрос, какого размера должен быть кластер выделенной части дискового пространства. Что такое кластер, что такое его размер, какой размер лучше выбрать в той или иной ситуации, как изменить размер кластера, в том числе без потери данных на разделе диска – во всех этих вопросах попробуем разобраться ниже.
1. Что такое кластер дискового пространства
Размер кластера, отличный от предлагаемого по умолчанию, мы можем выбрать при форматировании раздела средствами Windows.
Windows 7 и 8.1 позволяют установить размер кластера максимум 64 Кб. В среде же Windows 10 можно выбрать больший размер – от 128 до 2018 Кб.
Указываем размер тома.
И на этапе форматирования тома выбираем размер кластера.
2. Насколько значителен прирост производительности при большем размере кластера
Рассчитывать на какой-то весомый прирост производительности HDD даже при максимально возможном размере кластера не стоит. Сам по себе механизм работы HDD имеет массу условностей, и гораздо больше толку в этом плане будет от регулярной процедуры дефрагментации. Прирост в скорости работы с данными будет исчисляться секундами, а то и вовсе миллисекундами. Тем не менее и за них, возможно, стоит побороться при формировании разделов для хранения файлов с весом, исчисляемым преимущественно в мегабайтах или вовсе в гигабайтах.
3. Какой размер кластера для каких целей лучше
А вот с несистемными разделами можно поэкспериментировать. Но прежде необходимо оценить текущую ситуацию и узнать, какой размер кластера у раздела сейчас. Чтобы потом сделать выводы о приросте производительности.
4. Как узнать размер кластера
Существующий ныне размер кластера на нужном разделе диска отображают сторонние программы для работы с дисковым пространством. Но на скорую руку можно обойтись и без них, для этого нам понадобится всего лишь запущенная с правами админа командная строка.
В неё вводим команду по типу:
fsutil fsinfo ntfsinfo C:
Где вместо C в конце подставляем букву нужного раздела. И смотрим графу «Байт на кластер».
5. Как изменить размер кластера
Как упоминалось в первом пункте статьи, для изменения размера кластера необходимо либо отформатировать раздел, либо удалить его и создать заново. Хоть средствами Windows, хоть сторонним софтом для работы с дисками от Acronis, AOME, Paragon и т.п. Если на разделе имеются данные, их можно временно перенести на другой раздел, другое устройство информации или в облако на крайний случай. И это будет самый правильный вариант.
5.1. MiniTool Partition Wizard
В любой из коммерческих редакций MiniTool Partition Wizard можем изменить размер кластера без форматирования и пересоздания раздела, с сохранностью данных. Кликаем в окне программы нужный раздел, выбираем функцию изменения кластера.
Смотрим, какой у нас текущий размер. И в выпадающем списке выбираем новый. Затем жмём «Да».
Штатные средства Windows при задании размера кластера предусматривают выбор их показателей в байтах, килобайтах и в случае с Win10 в мегабайтах. Сторонние программы могут предусматривать выбор показателей в иной метрике – в секторах на кластер. Это число в степени двойки. Как ориентироваться? Просто делим на 2. Если хотим выбрать размер кластера, скажем, 64 Мб, указываем число 128. Если 32 Кб, выбираем число 64. Если 16 Кб – 32. И так далее по этому же принципу.
В главном окне MiniTool Partition Wizard применяем операцию и ожидаем её завершения.
При оперировании системного раздела С или несистемного, но такового, к которому обращаются фоновые системные процессы, программа попросит перезагрузиться. И будет проводить операцию в предзагрузочном режиме без активных системных процессов.
5.2. Acronis Disk Director
Платный Acronis Disk Director, мастодонт на рынке ПО для оперирования дисковым пространством, также предусматривает возможность изменения размера кластера без потери данных. В окне программы выбираем нужный раздел, кликаем соответствующую операцию.
Смотрим, какой сейчас у раздела размер кластера. И из выпадающего перечня выбираем новый.
И, опять же, если оперируемый раздел будет занят обращениями к нему фоновых системных процессов, потребуется перезагрузка и работа программы в предзагрузочном режиме.
Какой размер блока размещения лучше всего подходит для форматирования диска
При форматировании жесткого диска один из вариантов, который вы можете сделать, — это размер единицы размещения. Большинство людей просто оставляют рекомендованное значение по умолчанию и продолжают жить своей жизнью.
Однако задумывались ли вы, какой эффект будет иметь изменение размера этого числа? Номер по умолчанию лучше всего подходит для ваших нужд? Давайте посмотрим, какой размер единицы размещения лучше всего подходит для вас. На самом деле это менее сложно, чем вы думаете!
Ускоренный курс по форматам дисков
Прежде чем мы конкретно перейдем к единицам распределения, нам нужно кратко коснуться форматов дисков. Когда диск не отформатирован, физическое пространство диска похоже на широкое открытое поле. Когда вы форматируете диск, он упорядочивается по адресам, как если бы это широкое открытое поле было разделено на небольшие участки земли.
У разных форматов разные системы организации доступного пространства, у каждого свои плюсы и минусы, но это отдельная статья.
Что такое размер единицы распределения?
Если форматирование диска похоже на преобразование открытого поля в меньшие участки земли, то единицей распределения будет один из этих участков. Иногда его также называют размером «кластера». Единица распределения — это наименьший бит данных, который может хранить диск.
Это означает, что даже если размер отдельного файла меньше размера единицы распределения, он все равно займет все содержимое. Таким образом, любое оставшееся физическое пространство тратится впустую.
Как определяется размер единиц распределения по умолчанию?
Выбор оптимального размера единицы распределения зависит от ряда факторов. От общего размера диска до конкретной операционной системы, которую вы используете. Размер единиц размещения следует выбирать так, чтобы обеспечить хороший баланс между производительностью диска и эффективным использованием пространства.
Однако типы файлов, которые хранятся на системном диске, могут сильно отличаться от файлов на диске, который будет использоваться только для хранения файлов мультимедиа, например.
Тогда у нас есть проблема твердотельные накопители, которые не страдают от потери производительности при фрагментации файлов. Фрагментация также частично зависит от размера выделения. Таким образом, размер выделения по умолчанию, который вам предлагается при форматировании диска, является размером общего назначения, который должен работать для большинства людей большую часть времени.
Какое влияние на производительность оказывает размер единицы распределения?
Размер единицы размещения действительно влияет на производительность накопителя. Особенно механические жесткие диски. По сути, чем больше вы сделаете размер единицы распределения, тем меньше будет общее количество единиц распределения. Это имеет смысл, потому что ваши «участки» подъездной недвижимости больше. Поэтому, когда вашему компьютеру нужно найти физическое местонахождение ваших данных, адресная книга становится намного тоньше.
Это сокращает «время поиска» привода. То есть, сколько времени требуется, чтобы найти местоположение файла в таблице размещения файлов, а затем получить доступ к правильным единицам размещения. Опять же, на механических дисках это серьезная проблема, поскольку необходимо физически переместить головки чтения / записи жесткого диска в то место, где вы хотите получить доступ к блоку распределения.
Очень маленький размер выделения также может привести к крайней фрагментации. Это потому, что любые файлы, размер которых превышает размер единицы распределения, будут записаны в несколько единиц. Проблема здесь в том, что открытые блоки могут быть разбросаны по всему диску, поскольку файлы со временем записываются и удаляются.
Какое влияние оказывает размер единицы размещения на дисковое пространство?
Отформатированное пространство жесткого диска отличается от общего необработанного пространства, указанного на упаковке. Основная причина этого не имеет ничего общего с размерами единиц распределения. Это из-за довольно глупого факта, что все определяют мегабайт как 1024 килобайта, за исключением производителей жестких дисков, которые округляют его до 1000. Это связано с тем, что компьютерная память и хранилище измеряются в двоичных единицах, а не в десятичных, но это не строго связано с распределением. размер блока.
В другиеПричина, по которой реальный размер файла и количество места, которое он занимает на диске, различаются, связана с размером единиц распределения. Размер блока определяет наименьшее количество места, которое файл может занять на диске. Так что, если размер вашего блока составляет 4 КБ, а файл — 2 КБ, вы получите 2 КБ данных-заполнителей. Если бы каждый файл на диске имел размер всего 2 КБ, вы потратили половину дискового пространства!
Проблема в том, что файлы бывают любого размера. Особенно на системных дисках, где могут быть миллионы небольших текстовых файлов, содержащих данные конфигурации, а также большие мультимедийные файлы, такие как презентации или фотографии с высоким разрешением.
Если вы сделаете размер выделения слишком большим, вы потратите впустую пространство, так как многие единицы окажутся частично заполненными. Сделайте их слишком маленькими, и вы получите файлы, разделенные на множество разных единиц размещения. Хотя современные жесткие диски настолько велики, что опасения по поводу потраченного впустую места для размещения файлов больше не имеют значения.
Рекомендуемые размеры единиц размещения
Итак, теперь вы знаете, что такое единица распределения, почему она существует и какое влияние она оказывает на производительность и пространство при ее изменении. Остается вопрос, стоит ли менять его на современном компьютере.
Честный ответ заключается в том, что это, вероятно, не будет иметь заметного значения для вас, как для пользователя, на стандартном настольном компьютере. Это может иметь значение, когда мы говорим о специализированных дисках в кластере серверов или в специально созданном массиве дисков. Для вас лучший вариант — просто оставить то, что ваша операционная система требует по умолчанию.
Могут быть исключения. Например, предположим, что у вас есть внешний механический USB-накопитель, который будет использоваться только для хранения больших медиафайлов. Если вы знаете, что практически все ваши файлы на этом диске будут больше, чем размер самой большой единицы распределения, вам не нужно беспокоиться о потраченном впустую пространстве. Увеличение размера блока до максимального размера, меньшего, чем размер обычного файла на этом диске, позволит вам наслаждаться более быстрым поиском.
Попробуем другой сценарий. У вас есть ультрабук или нетбук с крошечным SSD в качестве основного диска. Что-то вроде блока на 16 или 32 ГБ. Пространства очень мало, поэтому, уменьшив размер единицы размещения, вы можете сократить ненужное пространство. Поскольку это SSD, на самом деле не имеет значения, фрагментированы ли данные на диске, потому что нет головки чтения / записи. Доступ мгновенный.
Стоит ли выжать сок?
Что касается точных цифр, мы не можем сказать вам, какой размер единицы распределения будет работать на 100% для какой цели. Если у вас нет времени или возможности поэкспериментировать, то вы можете просто использовать значение по умолчанию.
Для NTFS-дисков Windows это число составляет 4096 байт. Какой размер Microsoft считает лучшим универсальным для типичных пользователей. Изменять значение по умолчанию следует только в том случае, если вы знаете, что это улучшит ваш конкретный вариант использования.
Размер кластера по умолчанию для файловых систем FAT, NTFS и exFAT
Аннотация
Во всех файловых системах, используемых Windows, дисковое пространство организовывается с учетом размера кластеров (или размера единицы распределения). Размер кластера — минимальный объем дискового пространства, который может быть выделен для хранения файла. Таким образом, если размер файла не кратен размеру кластера, для его хранения необходимо использовать дополнительное пространство (кратное размеру кластера). При обычном разделении пространства на жестком диске средний объем памяти, потерянной в таком случае, можно рассчитать по формуле (размер кластера)/2 * (количество файлов).
Если размер кластера не задан во время форматирования раздела, используются значения по умолчанию, зависящие от размера раздела. Эти значения выбираются с учетом оптимального соотношения теряемого объема и числа кластеров в разделе.
Дополнительная информация
Раздел (том) жесткого диска можно отформатировать под файловую систему NTFS, FAT или exFAT. В зависимости от метода форматирования раздела в Windows могут использоваться следующие значения по умолчанию.
С помощью команды FORMAT без указания размера кластера.
С помощью программы Windows Explorer, когда в поле Единица размещения в диалоговом окне Формат оставлено значение Стандартный размер размещения.
По умолчанию размер кластера для файловой системы NTFS в Windows NT 4.0 и более поздних версий равен 4 КБ. Это обусловлено тем, что сжатие файлов в NTFS невозможно для дисков с большим размером кластера. Команда форматирования не использует размер кластера больше 4 КБ, кроме случая, когда пользователь переопределяет значения по умолчанию. Вы можете сделать это, используя /А: переключение вместе с командой Format или с помощью указания большего размера кластера в соответствующем поле при форматировании с помощью проводника.
Размеры кластера по умолчанию для файловой системы NTFS
В следующей таблице описаны размеры кластера по умолчанию для NTFS.
Windows 7, Windows Server 2008 R2, Windows Server 2008, Windows Vista, Windows Server 2003, Windows XP и Windows 2000
Форматирование диска: какой размер кластера предпочтителен
Приветствую своих читателей и сегодня мне очень приятно перейти от теории поближе к практике. Сегодня мы будем выяснять, какой размер кластера выбрать при форматировании NTFS. Именно НТФС зачастую стоит у большинства пользователей, поэтому коснёмся её. Эта реальная задача постоянно возникает при подготовке жесткого диска к переустановке Windows. А так же в других ситуациях.
Для начала вспомним, что такое кластер и NTFS и какая связь между этими понятиями. Итак, память компьютера (или флешки, или карты памяти) разбивается на отдельные сектора объемом 512 байт или 4 Кб, которые в свою очередь группируются в кластеры. Соответственно, размер кластера кратен объему сектора.
Файловая система среди прочих функций определяет возможный размер кластера:
Вводная
Для начала разберемся, что есть кластер. Все файловые системы, которые используются Windows, организуют ваш жесткий диск на основе такой штуки как размер кластера (также известного как размер блока распределения).
Размер же кластера представляет собой наименьший объем дискового пространства, который можно использовать для хранения файла.
Если размеры файлов не достигают четного кратного размера кластера, для хранения файла необходимо использовать дополнительное пространство (до следующего кратного размера кластера). В типичном разделе жесткого диска средний объем пространства, который теряется таким образом, может быть рассчитан с использованием уравнения:
(размер кластера) / 2 * (количество файлов)
Профилактика и уход
Изредка, проводя подобные процедуры, можно существенно повысить срок работы носителя информации:
Рекомендуется также следить за температурным контролем и вибрацией как встроенного диска, так и съемного.
Избегайте механических повреждений и не пренебрегайте дефрагментацией время от времени.
(0 голосов, среднее: 0 из 5)
Поделитесь с друзьями!
Размер кластера в виде наглядного примера
Возможно последнее предложение и формула несколько Вас смутили. Давайте попробуем объяснить проще и нагляднее. Наверняка, открыв свойства какой-то папки, Вы сталкивались с такой картиной:
Т.е размер папки с файлами и фактический размер занятого пространства на диске, собственно, отличаются в большую или меньшую сторону. Это как раз связано с размером кластера, выбранным Вами (или системой) при форматировании/создании раздела.
Еще раз, — кластер, — это наименьший логический объем дискового пространства, который может быть выделен для хранения файла. Теперь попробуйте представить, что Ваш диск состоит из множества множества ячеек со своей нумерацией, куда можно положить файл. Наиболее наглядно это видно при дефрагментации (хотя там наиболее часто показан блок файловой системы, а не кластер, но всё же):
Размер этих ячеек и есть размер кластера. Теперь о том, как с этим взлетать.
Зачем выполнять форматирование
В первую очередь эта операция делается для полной очистки диска. Если его пространство занято множеством файлов, то при обычном их удалении система будет стирать их по очереди, что в некоторых случаях может повлиять на скорость выполнения всей процедуры в целом.
Если же выполнять форматирование, то не обязательно физически удалять данные из каждой ячейки отдельно – можно выбрать такой параметр, как «быстрая очистка оглавления». При этом способе стирается не содержимое диска в целом, а только записи из каталога. Системе будет дана команда воспринимать кластеры как не содержащие данных, соответственно, при записи нового файла старые данные будут просто замещены на новые. Это используют некоторые программы, восстанавливающие удаленные файлы – пока в кластеры не записано что-то новое, их бывшее содержимое еще можно извлечь.
Второй причиной, при которой и нужно решить вопрос, какой размер кластера при форматировании необходимо выбрать, будет изменение файловой системы.
Как с этим взлетать и что стоит понимать
Визуально Вы думаю представили, как оно выглядит. Давайте разбираться как работает.
Предположим, что размер кластера равен 4 КБ (как правило, — это значение по умолчанию, не считая самых старших версий систем). Так устроено, что файл, меньшего размера, помещенный туда всё равно будет занимать 4 КБ. Наглядный пример:
Два файла меньшего размера уже 8 Кб:
Т.е, условно говоря, в показанном выше примере, — Вы теряете место, — ибо хранение небольших файлов в файловой системе с большими (чем размер файлов) кластерами приведет к, условно, потери (простою) места на диске.
Но при этом хранение больших файлов на малом размере кластера привет к излишней фрагментации (не критично для SSD) этого файла на много маленьких кусочков, что потребует большего времени доступа к нему и скажется на производительности. При этом, зачастую (но не всегда), свободное место теряться не будет.
Говоря проще, отсюда стоит вынести следующее:
Но это еще не всё. Для адептов последнего пути, далее приводится набор таблиц, которые используются Miscrosoft по умолчанию, в зависимости от размера носителя, т.е это значения по умолчанию, задаваемые системой. Пользоваться ими или нет, — дело Ваше.
Как в компьютере хранятся данные
Чтобы понять, какой лучше выбирать оптимальный размер кластера диска, нужно рассмотреть его работу в целом. Если очень сильно все упростить, то можно образно представить память накопителя в виде комнаты, по стенам которой расположено множество пронумерованных маленьких ящичков.
Отдельно будет находиться каталог (карта диска), который нужен для того, чтобы система не пересматривала все «ящички», а сразу знала, например, что файл с определенной аудиозаписью находится в шкатулках с номерами от 45 до 62. Также может быть вариант, что при записи файла в память не нашлось пустых шкатулок, стоящих подряд, и компьютер записал файл в шкатулки от 45 до 50 и от 65 до 77.
Соответственно, это отображается в каталоге, и когда системе нужно достать файл для работы, она «смотрит» в карту диска и «достает» нужную запись из ящичков. Размер кластера при этом можно образно сравнивать с величиной шкатулки.
Здесь нужно принять во внимание тот факт, что компьютер не может в один ящик положить кусочки разных файлов, иначе будет путаница в каталоге. Соответственно, файл или его часть может занимать весь объем шкатулки, а может быть меньше. Из приведенного примера ясно, что объем одной шкатулки — это минимально возможная единица памяти, выделяемая для хранения кусочка файла, которую и называют «размер кластера».
Тип файловой системы
Как уже говорилось, диапазон доступного размера кластера зависит от файловой системы. Узнать её можно, нажав правой кнопкой мыши на диске в проводнике («Мой компьютер»), и выбрав пункт «Свойства».
В соответствующей колонке вы увидите, что за файловая система у Вас выбрана при форматировании для диска или внешнего накопителя (если Вы работаете с ним).
Чтобы узнать текущий размер файла, запустите командную строку («поиск — cmd» или «WIN+R» на клавиатуре — cmd) и введите:
fsutil fsinfo ntfsinfo X:
Результат не заставит себя ждать (не кликабельно):
Различия между разметками дисков
Если продолжить аналогию с комнатой, уставленной шкатулками, то будет понятно, что могут быть различные способы упорядочить данные в них, а также систематизировать записи в каталоге. Каждый из таких методов будет называться отдельной файловой системой, со своими преимуществами и недостатками.
Какая из них будет использоваться, зависит в первую очередь от операционной системы и того, как планируется использовать сам компьютер, и какой величины файлы будут храниться в его памяти.
Здесь нужно отметить, что понятие «кластер» относится к разметкам, созданным для ОС семейства Windows и некоторым Mac от Apple.
Размер кластера по умолчанию для NTFS
В следующей таблице описаны размеры кластера по умолчанию для упомянутой в подзаголовке файловой системы:
Размер тома | Windows NT 3.51 | Windows NT 4.0 | Windows 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 GB | 2 КБ | 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).
Определение объема сектора
Стандартный размер кластера напрямую зависит от выбранной файловой системы:
Для правильного определения вместительности ячейки следует заранее определиться, какие данные будут храниться на носителе, каков их тип и объем. Для фотографий, видеозаписей или музыки предпочтительнее выбирать максимальный объем ячейки. Если же диск будут использовать для документов, то рекомендуется остановить свой выбор на небольшом объеме.
Если есть сомнения, какой размер кластера выбрать при форматировании, рекомендуется оставить изначально предложенное значение по умолчанию.
На скорость работы носителя в первую очередь влияет размер кластера. Чем меньше объем, тем больше операций производится системой, и тем ниже скорость записи или удаления данных. Иными словами, скорость работы определяет размер сектора: чем он больше, тем быстрее работает носитель.
Форматирование диска немного отличается от флешки. Если вы форматируете данные на флешке, то систему и размер ячейки лучше оставить как есть.
Повреждение и восстановление кластеров
Из-за перепада напряжения или заводского брака появляются сбойные сектора жесткого диска, поэтому время от времени рекомендуется проверять HDD на наличие поврежденных ячеек, а в случае их обнаружения — восстановить.
Для восстановления битых секторов можно использовать программу Victoria, HDDRegenerator или стандартную утилиту Скандиск. Восстановление кластеров:
Размер кластера по умолчанию для FAT32
В следующей таблице описаны размеры кластера по умолчанию для упомянутой в подзаголовке файловой системы:
Размер тома | Windows NT 3.51 | Windows NT 4.0 | Windows 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 KB | 8 KB | 8 KB |
16 ГБ — 32 ГБ | 16 KB | 16 KB | 16 KB |
32 ГБ — 2 TБ | 32 КБ | Не поддерживается | Не поддерживается |
> 2 ТБ | Не поддерживается | Не поддерживается | Не поддерживается |
Почему не нужен TRIM в серверах
Для начала стоит разобраться с тем, как работает SSD, что такое сборка мусора, как работает TRIM и главное — почему он не нужен в серверах. SSD отличается от HDD не только ограниченным ресурсом ячеек. Есть еще множество архитектурных особенностей.
Размеры секторов
Стандартный размер сектора для большинства блочных устройств (жестких дисков и систем хранения данных) равен 512 байт (на некоторых SAS/SCSI дисках возможны 520/528 байт для дополнительного контроля целостности данных). Последние несколько индустрия пытается перейти на секторы 4096 байт (4 КиБ), т.н. Advanced Format.
Продвигается процесс медленно, все пока что остановилось на 512e
, т.е. дисках с 4K-секторами внутри, но с эмуляцией 512 байт секторов для хоста. На дисках
512e
могут возникать проблемы с производительностью: при необходимости записать блок данных размером меньше 4 КиБ контроллеру диска приходится считывать сектор, менять в нем данные и только потом записывать обратно.
Для SSD ситуация с записью небольших блоков еще сложнее:
Контроллер SSD по-прежнему вынужден прикидываться блочным устройством с 512 байт сектором. Но внутри все сложнее: ячейки объединены в страницы размером, как правило, 4-8 КиБ, т.е. это минимально доступный для чтения или записи объем.
Записать данные в ячейку/страницу просто так нельзя, для этого нужно предварительно выполнить операцию стирания, а стереть можно только целый блок, состоящий из нескольких десятков (например, 64 или 128, в зависимости от архитектуры SSD) страниц, т.е.
минимально доступный для стирания блок может оказаться размером, например, в 512 КиБ.
Write amplification (усиление записи)
Данный термин означает соотношение между объемом данных, который фактически приходится записывать на флеш-память, и объемом, который пишет хост. Предположим, что у нас есть блок 512 КиБ с данными и нужно поменять небольшой фрагмент. Для модификации сектора в 512 байт контроллеру SSD приходится делать несколько операций (ситуация напоминает write penalty для RAID-5/6):
Т.е. для размера транзакции в 512 байт на SSD с размером блока страниц в 512 КиБ получаем write amplification = 1024 раза. Это не самым лучшим образом сказывается а) на производительности
и
б) ресурсе, который по-прежнему составляет несколько тысяч циклов перезаписи для MLC SSD
.
Copy on write
Проблема усиления записи имеет простое решение: нужно стараться записывать данные в уже предварительно стертые блоки. На помощь приходит классический алгоритм copy-on-write, разновидности которого используются для оптимизации записи в RAID-DP у Netapp или в ZFS (только слоем выше — на уровне файловой системы).
Суть алгоритм copy-on-write заключается в записи в «выгодные» участки носителя, т.е. в случае SSD — на чистые (стертые) блоки. В нижеприведенном примере модифицируется содержимое страницы «B». Вместо чтения/стирания/записи всего большого блока достаточно лишь прочитать содержимое страницы, модифицировать ее и записать в другое место. При этом необходимо поменять указатель, чтобы те же LBA указывали на новое физическое место размещения данных.
В качестве дополнительного средства борьбы с write amplification большинство современных контроллеров SSD используют сжатие данных.
Где взять чистые блоки?
На новом SSD все блоки являются чистыми и готовыми к записи. Дальше есть резервная область, которая на самом деле, используется всегда, так как помимо оптимизации записи необходимо обеспечить еще и равномерность износа ячеек SSD.
Как быть, если после непрерывной записи чистых блоков уже не осталось? Для можно каким-либо образом узнать, где на SSD находятся пользовательские данные, а где размещены невалидные данные, оставшиеся после удаления файлов. Собственно, этим и занимается TRIM.
SSD, как и любое другое блочное устройство, ничего не знает, о том, какие именно данные на нем хранятся. ОС может взаимодействовать как со слоем файловой системы, так и с блочным устройством, т.е. после удаления файла ОС передает на SSD вместе с командой TRIM (или UNMAP для SCSI) список LBA, по которым находились удаленные данные.
SSD получает в распоряжение блоки с невалидными данными, и эти блоки можно в дальнейшем использовать для записи.
Background garbage collection (фоновая сборка мусора)
Второй очевидный способ обнаружения невалидных данных — повторные запросы на запись от хоста по тем же LBA. Для хоста это выглядит, как перезапись одних и тех же секторов, но SSD все время старается писать в разные блоки. В вышеприведенной иллюстрации работы copy-on-write актуальные данные содержатся в новой странице «B’», после чего в исходной странице остаются невалидные данные.
Области с невалидными данными могут быть сильно фрагментированы, т.е. содержать ячейки с нужными данными. Остается последний шаг — дефрагментировать эти области, получив набор целых свободных блоков и выполнить их стирание.
Собственно, за все это и отвечает сборка мусора.
«Правильные» SSD, рассчитанные на интенсивную запись, имеют достаточный over-provisiong (резервную область) в качестве «пространства для маневра» и эффективный контроллер с достаточным объемом кэша (разумеется, защищенного конденсаторами) для размещения метаданных и буферизации чтения/записи.
Если контроллер не успевает быстро подготовить место для быстрой записи, то это неминуемо отразится на производительности, будет периодический рост задержек в несколько раз относительно среднего значения, как на данной картинке с www.storagereview.com:
TRIM и реальность
Для работы TRIM помимо выполнения множества условий (поддержка со стороны ОС и файловой системы) необходимо разобраться с другими слоями абстракции, например, RAID.
Пересчитать адреса пришедшие на с TRIM на контроллер от хоста и раскидать их по отдельным дискам теоретически возможно, но никто (ни LSI, ниAdaptec by PMC) не торопится с реализацией.
Причина проста — за пределами домашних систем или рабочих станций такая простая вещь, как удаление файла встречается крайне редко. В серверах, как правило, встречаются совершенно другие нагрузки, к которым TRIM не может иметь никакого отношения:
Размер кластера по умолчанию для FAT16
В следующей таблице описаны размеры кластера по умолчанию для упомянутой в подзаголовке файловой системы:
Звездочка (*) означает, что она доступна только на носителе с размером сектора более 512 байт.
Размер, имеющий значение
Информация файла вносится в эти кластеры, каждый из которых имеет свой адрес. Это облегчает и определяет механизм ее считывания или записи. Важным для дальнейшего понимания процесса является условие, по которому в один кластер могут помещаться только данные одного файла.
Например, мы имеем файл размером 260 Кб и кластеры по 32 Кб. Значит, в 8-и из них будет храниться 32 х 8 = 256 Кб и еще 4 Кб в 9-ом. То есть, в данном случае на диске будет занят объем, соответствующий размеру девяти кластеров 288 Кб, а это уж никак не наши 260 Кб, а на целых 10% больше чем мы предполагали задействовать.
Процент здесь указан просто для иллюстрации того, что не все место диска эффективно используется. Будь у нас файлик поменьше, например 33 Кб (ну, чтоб не помещался в один кластер) это показатель был бы вообще пугающим: 2 кластера по 32 Кб = 64 Кб для хранения 33-ёх.
КПД памяти – чуть более 50%. Этот пример четко показывает, что размер кластера должен быть сопоставим с объемом используемых в системе файлов.
Но это скорее частный редкий случай. Поскольку сейчас используются относительно большие файлы, намного превышающие размер кластеризации. И вот здесь проявляют себя другие факторы:
Выше приведенный пример показывает, что в последнем кластере теоретически может быть использован всего 1 Кб, соответственно, чем больше его размер, тем больше остается незадействованной памяти. Данный эффект усиливается с ростом количества файлов. Поэтому вполне логично, что чем меньше размер кластера, тем более эффективно мы сможем использовать носитель информации;
Размер кластера по умолчанию для 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 вы храните терабайты фильмов, музыки, фото и других файлов, размером более мегабайта.
Что делать? Как и в случае с файлом подкачки, выбирать решение под свои цели, задачи и железо, либо попросту не заморачиваться, но тогда решительно не понятно зачем Вы это читали
Как и всегда, если есть какие-то вопросы, разумные мысли и послезные дополнения, то добро пожаловать в комментарии к этому материалу.
Какой класстер выбрать
В первую очередь чтобы определиться с тем, какой кластер выбрать при форматировании флешки, необходимо отталкиваться от размера носителя и от размеров данных, которые будут на него записываться и храниться.
Если флешка будет применяться для хранения крупных данных, например, игр, фильмов и музыки, то следует остановить свой выбор на большем размере кластера, от 32 Кб и больше, что позволит считывать данные более быстро. Если же носитель данных предназначен для работы с множеством файлов с небольшим размером, то целесообразно установить кластер меньшего объема, например, от 4КБ и ниже, при этом процесс введения и вывода данных будет максимально оптимизирован.