Поисковая система и все прочие сервисы Google – только верхушка айсберга. Немногие пока осознали главное: Google строит огромный универсальный суперкомпьютер, состоящий из сотен тысяч узлов. Над его уникальной операционной системой работают лучшие умы, в том числе авторы оригинальной версии Unix. О
ом, что сегодня создают в дата-центрах Google, другие и не мечтают. Подробности рассказывает в своей статье директор компании Topix.net Рич Скрента.
Однажды я писал, как Google генерирует выдержки из найденных страниц. Чтобы делать это, содержимое целого интернета должно быть загружено в оперативную память серверов Google. И всЈ это только для того, чтобы на странице с результатами поиска выдать чуть лучшие цитаты из найденных страниц, чем у других поисковиков.
Google воспользовался результатами научных исследований в области системного программного обеспечения, которые велись в университетах в течение последних десяти лет, и построил на их основе собственную закрытую систему промышленного качества. Понимаете, о чем идет речь? В Google создали распределенную операционную систему, которая управляет базами данных интернетовского масштаба на кластере, состоящем из ста тысяч узлов. В еЈ состав входит петабайтная распределенная файловая система, устойчивая к сбоям, распределенный код для запуска удаленных процедур, а также, вероятно, сетевая разделяемая память и поддержка переноса потоков. А еще система управления центрами хранения данных, которая позволяет незначительному штату технических специалистов справляться с сотней тысяч серверов.
Позвольте мне сделать некоторые предположения об устройстве Gmail.
У Hotmail шестьдесят миллионов пользователей. Судя по всему, конструкция Gmail должна иметь сравнимые возможности и поддерживать масштабирование до ста миллионов пользователей. Впрочем, в ближайший год системе придется поддерживать только пару миллионов пользователей.
Самая очевидная проблема, требующая решения – это хранение данных. Нельзя допустить потери чужой почты и падений, поэтому данные должны реплицироваться. RAID не годится. Когда жесткий диск отказывает, для его замены необходим человек, а если испортятся больше дисков, появится риск потери данных. Ситуация почти такая же, как в пятидесятые годы, когда техникам приходилось бегать по машинным залам доисторических компьютеров с тележкой электронных ламп и заменять перегоревшие, только в Google вместо ламп будут жесткие диски. Вдобавок, RAID требует более дорогого аппаратного обеспечения, по крайней мере, специальных салазок для горячей смены диска. И в любом случае, RAID не обеспечивает высокой доступности на серверном уровне.
Нет. В настоящий момент у Google 100 тысяч серверов. Когда сервер или диск ломается, его оставляют лежать в стойке и ждать планового ремонта или замены. О том, чтобы аппаратные неисправности не помешали работе, заботится программное обеспечение.
Google разработал собственную распределенную, сбоеустойчивую петабайтную файловую систему. Она идеально подходит для этой работы. К примеру, содержимое ящиков пользователей Gmail автоматически реплицируется в трех местах, и после отказа диска или сервера файловая система Google автоматически делает новую копию из уцелевших двух. Письма могут храниться сжатыми в три раза, так что хранение трех резервных копий практически не повлияет на расход дискового пространства.
Жесткие диски в серверах для Gmail не перевешивают всЈ остальное. ВсЈ равно процессор остается важен для индексирования и выдачи страниц. Никаких необычных RAID-плат или салазок для смены дисков без выключения сервера, просто один-два винчестера на одноюнитовый сервер.
Любой вменяемый сисадмин, скорее, предпочтет сервер за 5000 долларов “голым” материнской плате и дискам, засунутым в стойку, которые в сумме стоят долларов 500. Но суть заключается в десятикратной разнице в стоимости машинного времени. И она дает разработчикам алгоритмов свободу.
Без дешевого процессорного времени программисты могут даже не думать об алгоритмах, которые используют в Google. Такие алгоритмы обойдутся слишком дорого.
Впрочем, сейчас Google уже не использует голые материнки. Компания, по крайней мере, четырежды меняла дешевые аппаратные платформы. В Google теперь прекрасно разбираются в строительстве и поддержании серверов, которые стоят дешевле серверов, используемых всеми остальными. И для работы им нужен меньший штат.
Подумайте, что ведь для внедрения серверов Google нужна целая небольшая внутренняя фабрика. Представьте, какой уровень автоматизации нужен, чтобы обеспечивать работу такого количества машин. И при сетевой загрузке и с конвейером для предустановки образов дисков. Представьте серверы, которые самостоятельно настраиваются после загрузки, определяют свои сетевые установки и сами загружают последнюю версию программного обеспечения, которое будет на них работать. Нормальная практика ведения дел в центрах обработки данных просто не масштабируется до уровня Google.
Что все эти исследователи ОС делают в Google? Роб Пайк ушел работать в Google. Да-да, тот самый Роб Пайк, знаменитый разработчик операционных систем, один из создателей оригинальной Unix, работавших в семидесятых годах в Bell Labs. И не в качестве свадебного генерала, он на самом деле пишет код, много кода. Большие куски целой новой операционной системы наподобие Plan 9.
Посмотрите, над чем раньше работали исследователи Google, занимающиеся ОС, сетевыми технологиями и распределенными системами. Оптимизация компиляции. Перенос процессов. Распределенная разделяемая память.
Я без ума от крутых исследований в области операционнх систем. Когда я читаю научные статьи сотрудников Google о распределенных системах, переносе процессов, сетевой общей памяти, файловой системе Google, я чувствую себя ребенком, который попал в диснейлендовский аттракцион “Мир будущего”. Разве не здорово было бы воплотить всЈ это на практике?
И гуглевские спецы это делают! Google – это компания, которая построила один очень большой уникальный компьютер. На нЈм работает их собственная кластерная операционная система. Их огромный компьютер становится больше и быстрее с каждым месяцем, а его процессорное время всЈ дешевеет. Он больше похож на универсальную компьютерную платформу, чем на кластер, оптимизированный для единственной задачи.