Согласно спецификации, разделы NTFS могут иметь до 263 - 1 логический кластер. Но когда я попытался подсчитать, какой размер диска мне понадобится для тестирования значений больше 32 бит, я столкнулся с проблемой.
По математике, размер кластера 4k с кластерами 0xFFFFFFFF + 1 дает 17 592 186 044 416 байт. Это большое, но не такое уж невозможное.
Однако, по мнению этот, Диски 16 ТБ не могут использовать кластер размером 4 КБ, но должны использовать 8 КБ.
Повторно прогоняя математику, 8192 * (0xffffffff + 1) дает 35 184 372 088 832. Однако на этой странице говорится, что диски 32 ТБ не могут использовать кластеры 8 КБ, но должны использовать 16 КБ.
Вы начинаете понимать мою проблему. Если эта страница верна, то, несмотря на то, что указано в спецификации для NTFS, Windows на самом деле не позволяет LCN превышать 32 бита.
Возможно, эта страница устарела? Это конкретно говорит об этом Applies To: Windows 10
, а может это просто неправильно? Я не считать Я неправильно это читаю.
Поскольку "чтение документации" не дает мне надежного ответа, есть ли у кого-нибудь на самом деле диск емкостью 16 ТБ (или больше) для экспериментов (примечание: должно быть не менее 17 592 186 048 512 используемых байтов)? Что произойдет, если вы попытаетесь отформатировать его с размером кластера 4k? А может еще 2к?
Переход на кластеры 8k - это просто "рекомендуемый" параметр для дисков 16TB? Или это обязательно / принудительно?
Изменить: я предполагаю, что ответ вращается вокруг разделов MBR (которые имеют эти ограничения) и разделов GPT (которые, по-видимому, не имеют), но я еще не смог это доказать.
Изменить: Итак, я, похоже, не добился большого прогресса здесь. Да, MBR ограничен 32-битными LCN. Да, спецификации для поддержки GPT 263 кластеры.
Однако, когда я пытаюсь отформатировать раздел GPT таким образом, чтобы количество кластеров превышало 0xffffffff, я просто получаю (странную) ошибку:
C:\Windows\system32>format f: /q /fs:ntfs /a:512 /v:vn
The type of the file system is NTFS.
Enter current volume label for drive F: New Volume
WARNING, ALL DATA ON NON-REMOVABLE DISK
DRIVE F: WILL BE LOST!
Proceed with Format (Y/N)? y
QuickFormatting 4.8 TB
Allocation unit size changed to 1000 bytes. <------------------
Creating file system structures.
Format complete.
4.8 TB total disk space.
4.8 TB are available.
C:\Windows\system32>fsutil fsinfo ntfsinfo f:
NTFS Volume Serial Number : 0x1808cec808cea3da
NTFS Version : 3.1
LFS Version : 2.0
Number Sectors : 0x0000000262596fff
Total Clusters : 0x000000004c4b2dff
Free Clusters : 0x000000004c49e59f
Total Reserved : 0x0000000000000400
Bytes Per Sector : 512
Bytes Per Physical Sector : 512
Bytes Per Cluster : 4096
Bytes Per FileRecord Segment : 1024
Clusters Per FileRecord Segment : 0
Mft Valid Data Length : 0x0000000000040000
Mft Start Lcn : 0x00000000000c0000
Mft2 Start Lcn : 0x0000000000000002
Mft Zone Start : 0x00000000000c0000
Mft Zone End : 0x00000000000cc820
Max Device Trim Extent Count : 0
Max Device Trim Byte Count : 0x0
Max Volume Trim Extent Count : 62
Max Volume Trim Byte Count : 0x40000000
Resource Manager Identifier : 8B803C36-14BE-11EA-A11E-0800276F6C4C
Какого черта это говорит Allocation unit size changed to 1000 bytes
? 1000 байт не является допустимым размером кластера. Кроме того, он изменил его на 4096.
В интересах полного раскрытия информации я упомяну, что этот тест проводился с использованием VirtualBox, но я не вижу причин, которые должны иметь значение.
Так что я все еще придерживаюсь своего исходного вопроса: Каков максимально возможный номер логического кластера (LCN) на томе NTFS? И несмотря на то, что спецификации для NTFS и GPT могут заставить меня ожидать, я все еще ограничен 32-битной версией.
Мне не удалось найти точный источник, но я считаю, что есть достаточно доказательств, чтобы поддержать вывод.
Код для форматирования NTFS (расположенный в uNTFS.dll) использует "устаревший" метод чтения информации о разделах (IOCTL_DISK_GET_DRIVE_GEOMETRY) и поэтому не может видеть разделы, размер которых превышает поддерживаемый MBR (т.е. 32-битные LCN).
Тот факт, что такое поведение согласуется с опубликованными ограничениями на размер томов NTFS, приводит меня к выводу, что это ограничение является намеренным.
С точки зрения кодирования, обновление uNTFS.dll для поддержки до 263 БАЙТЫ (не кластеры) кажутся простой задачей, и для этого потребуется поддержка более 32-битных LCN. Но поскольку ReFS является предпочтительной файловой системой MS для чрезвычайно больших объемов в будущем, я не ожидаю, что это когда-либо произойдет.
Итак, исходя из того, что я видел, нет (поддерживаемого) способа протестировать тома NTFS с более чем 32-битными номерами LCN. Теоретически это может измениться в будущем, но, вероятно, этого не произойдет.