Проблема 2 TB: борьба с призраками прошлого продолжается

23 февраль, 2006 - 00:00Сергей Грицачук

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

Ты помнишь, как все начиналось?..

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

Действительно, ставший анекдотичным тезис Билла Гейтса о том, что «640 KB ОЗУ хватит каждому пользователю», в сравнении с запросами современных приложений не вызывает даже улыбки, а жесткие диски MFM объемом в 5–20 MB давно стали музейными экспонатами. И любой владелец домашнего ПК с легкостью может позволить себе записать интересную телепрограмму или «домашнее видео» с видеокамеры. Для этих целей вполне хватает ресурсов даже несверхмощной (по нынешним меркам, разумеется) системы.

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

Файловые системы, история и ограничения

Появление операционных систем семейства Windows предопределило уход от MS-DOS, тем не менее сохранив в качестве наследия файловую систему FAT, появившуюся в 1981 г. Предназначенная исключительно для хранения информации на гибких дисках первая версия этой ФС (FAT12) поддерживала разделы до 16 MB благодаря 12-битовой адресации и кластеру размером в 4 KB.

Несколько позже вышла FAT16. Наличие 16-битовой адресации и максимального размера кластера в 32 KB дало возможность создавать разделы до 2 GB, хотя на практике организация хранилища такого размера представлялась невероятной. Следующим шагом стало внедрение очередной (по сути, косметической) модификации, получившей название VFAT, – в ней впервые были реализованы поддержка длинных имен файлов (до 255 символов) и сохранение регистра символов в названии.

Конечно, все эти нововведения не могли решить основные проблемы, например такие, как ограниченное количество файлов в корневом разделе диска (который фактически представлял собой файл с идентификаторами вложенных файлов и каталогов) и ограниченный размер раздела. Допустимое значение последнего параметра не могло превышать 4 GB, что было недостаточным для существующих HDD того времени.

Эти (и другие) факторы привели к необходимости внедрения FAT32. В целях обратной совместимости в ней были введены незначительные изменения по сравнению с VFAT. Так, 32-битовая адресация теоретически позволяла работать с разделами до 2 TB. Проблема корневого каталога была решена за счет нового представления «корневого файла» – теперь он не располагался в определенном месте, а представлял собой обычную цепочку кластеров. Загрузочный сектор раздела дублировался для обеспечения отказоустойчивости.

Впрочем, предоставлялась возможность альтернативного выбора – те, кто пользовался ОС Windows NT, могли применять журналируемую файловую систему NTFS, намного более продвинутую с точки зрения надежности и возможностей, но, к сожалению, весьма требовательную к ресурсам – даже на самых быстрых ПК того времени она не могла обеспечить скоростных характеристик.

Впрочем, это ограничение продержалось недолго – интенсивное наращивание производительности персональных компьютеров привело к тому, что в новых версиях ОС (начиная с Windows 2000) NTFS стала практически повсеместной ФС. Исключение в пользу FAT32 делается только для совместимости со старыми приложениями.

Это и неудивительно, поскольку NTFS обеспечивает мощную и сложную систему распределения прав доступа к файлам и папкам, поддерживает длинные имена (255 символов, регистр в названии сохраняется, но не различается), а размер файла теоретически ограничен 16 EB (экзабайтами). Но на практике самая современная ОС Windows 2003 ограничивает объем файла 16 TB, а раздела – 256 TB. Размер кластера варьируется от 512 байт и до 64 KB, позволяя пользователю самостоятельно решать, что для него важнее: экономия места на диске или скорость работы (стандартным значением является 4 KB).

А на самом деле...

На самом деле пользователи, которым в силу профессиональной необходимости пришлось столкнуться с реальными файлами солидных размеров, были весьма разочарованы: приобретение высокоемких хранилищ не решало поставленной задачи, поскольку их возможности ограничивались размером файла «всего» в 2 TB. А ведь многоточечная система видеонаблюдения даже при немаксимальном качестве изображения способна достаточно быстро заполнить и бо2льшие объемы: в ряде случаев для этого достаточно двух суток.

Проблема 2 TB борьба с призраками прошлого продолжается
Пользователь может выбрать один из двух режимов для создания томов большого объема

В чем же дело? Ведь, по идее, доступно не менее 16 TB? Вот тут придется обратиться к элементарной математике... и не совсем элементарной логике.

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

512*2^[разрядность]=[ограничение в байтах]

Так, нетрудно подсчитать, что для 32-разрядной системы эта характеристика составит искомые 2 TB. В общем-то, если учесть, что многие современные системы способны поддерживать не только режим LBA32, но и LBA48, можно предположить, что для организации больших томов достаточно подобрать материнскую плату со включенной поддержкой этого режима. Но не все так просто – именно здесь заканчивается область чистой математики и начинается область логики.

В частности, уместно вспомнить о том, как хранится информация в файловой системе NTFS. А именно, о главном разделе диска – MBR. Но прежде стоит отметить, что приведенная выше формула рассчитана на то, что размер блока файловой системы составляет 512 байт. Это число выбрано неслучайно, поскольку именно MBR накладывает ограничения на размер создаваемого файла (логического тома): он может содержать не более чем 232 блоков.

Где искать решение?

Проще всего было бы заявить, что проблема разрешается установкой последней версии Windows Server 2003 Service Pack 1 (SP1) или Windows XP 64-bit Edition (x64). В самом деле, там добавлены изменения, позволяющие адресовать значительно большие объемы информации – до 264 блоков, что в конечном пересчете позволит оперировать файлами размером до 256 TB.

В любом случае при организации (или расширении) хранилищ можно добиться увеличения пространства за счет организации динамических томов. Такой подход даст возможность адресовать объем до 16 TB.

Кроме того, имеет смысл отказаться от использования MBR в пользу перехода на новую схему GUID Partition Tables (GPT), позволяющую создавать до 128 первичных (primary) разделов, помимо увеличения адресуемой области. Эта система разметки дисков изначально ориентирована на 64-разрядную архитектуру и предназначена для работы на платформах Intel Itanium (подробно о переходе на GPT можно прочитать на сайте Microsoft

Проблема 2 TB борьба с призраками прошлого продолжается
С помощью Areca SATA RAID Controller можно создать том размером до 512 TB (предоставлен Entry)

Но самым универсальным решением может стать использование внешнего RAID-контроллера, в котором проблемы уже решены. Один из первых примеров – Areca SATA RAID Controller. Это устройство располагает двумя методами, предназначенными для создания томов размером более 2 TB.

Первый предназначен исключительно для Windows-систем. Он основан на принципе увеличения размера блока данных с 512 до 4 KB. Учитывая, что он является нестандартным, конвертация диска в динамический невозможна, поэтому такое решение позволит создать том размером не более 16 TB. Еще одним побочным фактором станет достаточно неоптимальное размещение мелких файлов, но в рассматриваемом случае нам предстоит хранить файлы очень большого объема, так что эта проблема неактуальна.

Второй метод более универсален. Заключается он во включении режима LBA64, при котором используется 16-байтовый CDB (Command Descriptor Block) вместо 10-байтового. В этом режиме можно создавать тома размером до 512 TB, при этом нет ограничений на тип используемой операционной системы. В частности, единственное ограничение – поддержка 16-байтового CDB в применяемой ОС. Таким свойством обладают Windows 2003 SP1, Linux kernel 2.6.x, FreeBSD 5.2.1 или более новые.

Пользователи систем Windows 2000 SP4 и Windows XP SP2, к сожалению, смогут воспользоваться только первым режимом, поскольку на сегодняшний день эти ОС не поддерживают LBA64.

Как дружно рубили канаты...

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