Пошаговые руководства, шпаргалки, полезные ссылки...
БлогФорумАвторы
Полезные Online-сервисы
Перечень Бесплатного ПО
Подписка на RSS-канал
Одним из этапов подготовки нового дискового раздела для файлового сервера на базе Windows Server является форматирование раздела. При форматировании раздела важно правильно подобрать размер кластера (Bytes Per Cluster / Allocation unit size). От этого, так или иначе, зависит дальнейший уровень производительности и утилизации дисковой ёмкости дискового раздела. Чтобы определить правильный размер кластера, можно отталкиваться от файлового контента, который планируется записать на дисковый раздел.
Предположим, у нас есть некий файловый сервер с уже имеющимся файловым контентом, где хранится множество файлов разного размера. Мы планируем подключить к файловому серверу новый дисковый раздел, отформатировать его в NTFS и перенести на этот раздел имеющийся файловый контент. Чтобы определить то, с каким размером кластера лучше провести форматирование нового размера, мы можем предварительно проанализировать то, какое количество файлов входит в разные категории по размеру.
Простой пример PowerShell-кода, который позволит выполнить подсчёт файлов и рассортировать их по количеству на разные размерные группы:
$path = 'D:\'; $TooSmall = $2K = $4K = $8K = $16K = $32K = $64K = $128K = $256K = $TooBig = 0 $files = Get-ChildItem $path -Recurse -File ForEach ($file in $files) { $size=0; $size=$file.Length If ($size -le 2048) {$TooSmall = $TooSmall + 1} ElseIf (($size -ge 2049) -and ($size -le 4096)) {$4K = $4K + 1} ElseIf (($size -ge 4097) -and ($size -le 8192)) {$8K = $8K + 1} ElseIf (($size -ge 8193) -and ($size -le 16384)) {$16K = $16K + 1} ElseIf (($size -ge 16385) -and ($size -le 32768)) {$32K = $32K + 1} ElseIf (($size -ge 32769) -and ($size -le 65536)) {$64K = $64K + 1} ElseIf (($size -ge 65537) -and ($size -le 131072)) {$128K = $128K + 1} ElseIf (($size -ge 131072) -and ($size -le 262144)) {$256K = $256K + 1} ElseIf ($size -ge 262145) {$TooBig = $TooBig + 1} } write ("Files up to 2K : " + $TooSmall) write ("Files from 2K to 4K : " + $4K) write ("Files from 4K to 8K : " + $8K) write ("Files from 8K to 16K : " + $16K) write ("Files from 16K to 32K : " + $32K) write ("Files from 32K to 64K : " + $64K) write ("Files from 64K to 128K : " + $128K) write ("Files from 128K to 256K : " + $256K) write ("Files from 256K to large : " + $TooBig)
Пример вывода скрипта:
Files up to 2K : 41032 Files from 2K to 4K : 3632 Files from 4K to 8K : 3507 Files from 8K to 16K : 5816 Files from 16K to 32K : 6606 Files from 32K to 64K : 6410 Files from 64K to 128K : 4319 Files from 128K to 256K : 2426 Files from 256K to large : 4703
Из этого вывода следует, что наш файловый контент имеет больше всего маленьких файлов размером до 2KB. При условии того, что весь контент используется с приблизительно одинаковой интенсивностью, можно прийти к выводу, что оптимальным размером кластера для дискового радела под такой контент будет - 2048 байта.
При этом следует помнить, что по умолчанию в Windows Server при форматировании раздела в NTFS используется размер кластера в 4KB. А для некоторых специфичных вещей есть собственные рекомендации по размеру кластера. Например, для баз данных SQL Server рекомендуемым является 64KB. Эти же 64KB являются рекомендуемым значением для разделов под хранение виртуальных дисков Hyper-V.
Проверено на следующих конфигурациях:
Автор первичной редакции: Алексей Максимов Время публикации: 16.06.2023 18:18