Откройте любую серьёзную книгу о накопителях, и рано или поздно вас встретит триада CHS: цилиндр, головка, сектор. Для современного пользователя это безликие термины из древности, а между тем три этих слова когда-то были единственным способом сказать компьютеру, где именно на диске живёт его байт. Больше того: заговор трёх координат отозвался в устройстве таблиц разделов, файловых систем и загрузчиков так глубоко, что их отголоски мы разгребаем и в век твёрдотельных дисков, где никаких пластин и головок уже нет вовсе. Разобраться в геометрии CHS стоит хотя бы затем, чтобы понимать, почему компьютер делит диск именно так, а не иначе, и откуда растут ноги у знаменитых барьеров вместимости вроде 504 мегабайт и 8,4 гигабайта, которые когда-то стоили индустрии немало седых волос.
Физика вращающейся пластины и откуда взялись три координаты
Представьте себе классический жёсткий диск или дискету как стопку круглых магнитных блинов на общей оси. Каждый блин покрыт со слоем магнитного материала с обеих сторон, а над блинами на поводке ездит гребёнка считывающих головок. Вся эта карусель крутится сотнями оборотов в секунду, и чтобы описать точку на любом блине, нужно ответить на три вопроса: какая головка сейчас работает, на каком расстоянии от центра расположена дорожка и в каком месте этой дорожки лежит нужный кусок.
Отсюда и три координаты. Головка выбирает одну из рабочих поверхностей: верхний или нижний блин, а в пакете из нескольких пластин одну из многих. Цилиндр это вертикальный срез через все пластины на одном радиусе: когда головки не двигаются, их пронзает одна и та же воображаемая бочка, составленная из круговых дорожек на каждой поверхности. Пересечение головки и цилиндра даёт одну круговую дорожку с данными. Осталось рассечь дорожку на дугообразные доли, и мы получим сектора, мельчайшие адресуемые кусочки, исторически равные пятистам двенадцати байтам. Три числа, три измерения - и адрес любого кусочка диска собран.
Забавно, что даже выбор размера сектора имел долгую историю экспериментов. Дискеты и контроллеры пробовали сектора по 128, 256, 512 и даже 1024 байта, однако к восьмидесятым годам верх одержал формат 512 байт, который и закрепился как фактический стандарт индустрии. Полтысячи байтов, ни больше ни меньше - вот кирпич, из которого почти полвека строилось всё дисковое хозяйство.
Почему операционной системе вообще приходилось знать геометрию
У ранних накопителей не было собственной электронной начинки, способной управлять адресацией. Отдельная плата контроллера таскала команды между компьютером и диском, и система должна была описывать желаемый сектор в терминах физического строения конкретного накопителя. Программист буквально спрашивал у пользователя или у документации: сколько у вашего диска цилиндров, головок и секторов на дорожке? В файле настройки записывалась геометрия, и по этому описанию работала адресация.
Отсюда вся драматургия поколений. Стоило набрать геометрию неправильно, диск либо не читался, либо читался с тарарамом, и весь служебный аппарат ранней эпохи ПК был усеян таблицами параметров накопителей. Установка нового диска напоминала заочное знакомство со схемой его внутреннего мира, и каждый техник носил в голове таблицы популярных моделей как карточную колоду.
С конца восьмидесятых накопители обзавелись встроенными контроллерами, которые знали свой рисунок сами и даже сумели морочить компьютер выдуманной геометрией ради увеличения адресуемого объёма. Физика окончательно ушла во внутреннюю жизнь диска, а на сцене остались логические значения, удобные для подсчётов и далёкие от реального расположения данных на пластинах. С этого момента CHS начала превращаться из физической карты в истоптанную условность.
Арифметика дискеты и вдохновенный предел в 1,44 мегабайта
Раз мы уж разговариваем о геометрии, позавтракаем для наглядности с самым известным её детищем, дискетой 3,5 дюйма на 1,44 мегабайта. Её расклад известен каждому ветерану: восемьдесят дорожек на стороне, головки две, секторов на дорожке восемнадцать, размер сектора 512 байт. Перемножая, получаем аккуратную классику: 80 x 2 x 18 x 512, итого 1 474 560 байт. Именно это число видела операционная система как предельную вместимость, списывая округлённое значение до привычного маркетингового 1,44.
Тот же арифметический фокус вписывался в цельную систему мира: каждый дисковый носитель девяностых имел объявленную геометрию, и файловая система строилась относительно неё. Знаменитая FAT12 на дискетах размечала свои кластеры на физических границах секторов, а загрузочный сектор дискеты первым делом объявлял, сколько секторов на дорожке и сколько головок у носителя, чтобы адресация могла лечь ровно.
Стена 504 мегабайт и стена 8,4 гигабайта откуда брались пределы
Людям, воду не мутившим в те времена, легко подумать, будто знаменитые компьютерные барьеры рождались из косности, но правда тоньше: барьеры выходили из математики адресных полей. Укоренившееся распределение битов под координаты давало максимум в 1024 цилиндра, 16 головок и 63 сектора, при 512 байтах на сектор итог сходится к знаменитым 504 мегабайтам. Позднее договор с контроллерами перекроил распределение: из BIOS-вызова INT 13h максимальная комбинация 1024 цилиндра на 255 головок на 63 сектора давала предел около 8,4 гигабайт. Эти числа преследовали целое поколение администраторов, чьи большие диски упирались в смысловую стену великанского прошлого геометрии.
Настоящий прорыв случился с логической блочной адресацией LBA: вместо трёх координат сектор получил просто линейный номер, и никакой геометрии на поверхности не осталось. С середины девяностых жёсткие диски говорили с компьютером по LBA, BIOS получила расширенные вызовы, и старые стены остались позади. Но эхо CHS продолжало звучать десятилетиями: утилиты разметки по-прежнему приравнивали границы разделов к фиктивным границам цилиндров, а загрузочная запись MBR годами содержала поля для трёх координат, просто потому что иначе было нельзя.
Как геометрия наследует в современных файловых системах
Сегодня физика пластин ушла из поля зрения, а её наследство живёт в терминологии. Архитектура таблицы разделов MBR первым делом спрашивает про адрес начала раздела в терминах цилиндра-головки-сектора, и лишь потом добавляет линейный адрес. Современные твердотельные накопители работают по линейным адресам, но саму идею выравнивания разделов по границам удобных блоков они унаследовали именно от времён физической геометрии, просто теперь блоки решают проблему износа Flash-памяти, а не дорожек магнитных пластин.
Трудно переоценить и другую тонкую линию наследования. Сектор по 512 байт доминировал полвека, и только в 2010 году индустрия медленно перешла на сектора по 4096 байт в рамках подхода Advanced Format, причём даже новые диски поначалу притворялись старыми, эмулируя сектора по 512 байт для совместимости. За этой схемой стояла расчётливая же мысль: слишком много программного обеспечения было зацементировано под привычный кирпич, чтобы пытаться его поменять за один приём. Снова та же логика: реальность диска изменилась, но договор с системой менялся с уважением к прежнему наследству.
Уроки геометрии для понимающего читателя
История CHS преподаёт инженерные уроки, которые не устаревают:
- Любая технология адресации это в первую очередь отражение устройства физического мира, и его ограничения рядом с нами даже после того, как само устройство ушло;
- Каждая стена вместимости это всего лишь математика битов на адресные поля, и стоит один раз увидеть эту математику, как перестаёшь удивляться числам вроде 504 и 8,4;
- Совместимость требует носить наследие в интерфейсах столетиями, а потому хорошие интерфейсы стоит строить с запасом на случай непредвиденного роста;
- Между физикой и логикой полезно проложить слой перевода: контроллер диска, знающий свою геометрию сам, освободил операционную систему от самого болезненного её знания.
Для системных администраторов и любопытных пользователей вывод предельно простой: когда утилита разметки осторожничает с выравниванием или когда старый загрузчик требует старомодных полей, не смотрите на это как на каприз. За каждым таким требованием стоит какая-то старая геометрия, просевшая через десятилетия, и понимание этой подкладки показывает, почему дисковое хозяйство выглядит именно так.
Зональная запись и другие хитрости, сломавшие идеальную картину
Честная геометрия CHS предполагала мир с совершенными пропорциями: на каждой дорожке лежит одинаковое число секторов, и вся пластина аккуратно расчерчена словно тетрадный лист. Производители дисков эту картину истребили ради ёмкости. Внешние дорожки физически длиннее внутренних, и записывать на них то же число секторов, что и на коротких внутренних, значит даром тратить драгоценное место. Технология зональной побитовой записи поделила пластину на зоны с разным числом секторов на дорожку, и идеальная цилиндрическая картина внутри диска перестала соответствовать тому, о чём диск рассказывал компьютеру снаружи.
Это различие между докладом диска и его настоящим устройством породило длинную эпоху логических геометрий. Контроллер снимал геометрию, преумножал головки и цилиндры к выгодным значениям и пересчитывал координаты налету. Пользователь мог влево настраивать параметры и неправильно попадать в адресацию, потому и появилась целая наука работы с переводами, со страшными приметами вроде необходимости "пересадить" диск в другой компьютер только с той же настройкой трансляции. Вся эта инженерная переписка имела единственный смысл: вписывать новые диски в старое число доступных координат.
Особого упоминания заслуживает то, как ту же задачу решали дисковые утилиты. Старые менеджеры накопителей сами ставили свои драйверы-мороженщики, прятали вопросы трансляции за фирменными загрузочными модулями и тянули совместимость за уши. Мир CHS был настолько сложным в последние годы своей власти, что пожилой системный администратор и поныне вспоминает его с уважительной дрожью, как армию соглашений, придуманных чтобы никого не переписывать и чтобы всё продолжало работать.
Что с этим делать сегодняшнему технику и зачем помнить старую геометрию.
Даже в эпоху NVMe-дисков, разговаривающих с памятью по шине PCI Express, понимание CHS полезно как грамотность в письменности. Столкнётесь ли вы со старой виртуальной машиной, требующей геометрию для своего образа диска, будете ли восстанавливать давний архив с программой, вышедшей в девяностых, или просто разгадывать, почему некоторый загрузчик пугается нечётных выравниваний разделов - везде пригодится та же двадцатисекундная ясность: цилиндр это радиус, головка это сторона пластины, сектор это дуга на дорожке, и вся эта конструкция когда-то была единственным календарём дискового пространства.
Кроме познания предмета, CHS оставляет и мысленный инструмент: страхование соединения старого и нового. Каждый инженер, который сегодня строит новый слой поверх старых интерфейсов, находится в той же позиции, что и авторы трансляторов геометрии тридцать лет назад. Приходится решать: притворяться ли наследником ради совместимости или ломать ради честности. История геометрии поучительна именно тем, что показывает цену обоих решений без прикрас и позволяет увидеть, как долго на самом деле умирает хорошо проработанный старый порядок.
Эпилог на долгую память о трёх координатах.
Цилиндр, головка и сектор когда-то были не терминами, а самим запахом диска: звук поиска головок, шорох вращения, счастье услышать правильный отклик дорожки. Эта физическая конкретность породила набор понятий, на котором выросла вся наука о хранении данных. Сегодня вся геометрия сведена в функциональные таблицы и линейные адреса, но если однажды вы откроете старую дискету и представите себе восемьдесят колец на её коричневой плёнке, вы почувствуете красоту самой первой и очень честной навигации по пространству данных, и, возможно, скажете спасибо трём координатам, которые научили цифровой мир иметь адрес.