Накопители — завершение. Longread об актуальных аспектах кэширования в дисковой подсистеме

Важное читать здесь

Главный вывод — никаких чистых жестких или твердотельных дисков не существует. Везде, абсолютно везде существует иерархические системы памяти с кешированием как записи, так и чтения. Разница лишь в том, как конкретно это реализовано. Твердотельные накопители, в общем, сильно быстрее традиционных жестких дисков, но и там и там все устроено концептуально похоже. Конкретные же решения формируются под воздействием рыночных факторов (например, размер DRAM-буфера может быть обусловлен сегодняшними ценами на чипы памяти) и доступности тех или иных технологий производителю, а так же… психологии.

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

Кстати о неслышимых частотах, если с психоаккустикой теоретически все более-менее понятно, то, например, в автомобильных моно-усилителях, заточенных на низкие частоты, нередко присутствует функция subsonic — это фильтр, отсекающий частоты ниже порога, который физически слышим и может быть воспроизведен конкретной головкой. Купирование лишней нагрузки позволит улучшить работу сабвуфера в диапазоне целевой нагрузки без ущерба для слушателя. Конечно, звукофилы возразят, что это не true и инфразвук нужно прочувствовать почками и в целом будут технически правы, но 99,(9)% слушателей разницы не ощутят ничем и ушами в первую очередь.

Теория идеального накопителя

Но вернемся к нашим накопителям и пирамиде. Идеальному накопителю бы работать со скоростью внутрипроцессорной памяти и быть большим и энергонезависимым, и тогда все остальное можно было бы просто отнести в музей, но до этого счастливого момента пройдут десятилетия, если не века. Самой же процессорной памятью мы управлять не можем снаружи никак. Оперативная память пока еще энергозависима. Intel обещает с этим что-то делать, но результаты мы пока пощупать не можем. Поэтому использовать ее мы можем и должны при сегодняшних колоссальных технически доступных объемах традиционным сегодня же способом, т.е. помимо основной функции еще и в качестве кэша накопителей. По сути, операционные системы это делать умеют, но получается не очень эффективно. Далее идут в общем виде SSD, которые пока на солидных объемах все еще недешевы (хотя цены и падают) с проблемами длительного хранения, условного износа, растущей битности и утончающихся техпроцессов — еще немного и космическое излучение начнет в прямом смысле мешать электронам правильно сидеть по дуплам твердотельной памяти. Следом видим огромные по объемам энергонезависимые магнитные жесткие диски, способные хранить данные десятилетиями, но медленные и подверженные механическому износу, боящиеся вибраций и тепла. Дальше по иерархии идти смысла нет. Идеального накопителя не существует. Его пытались сделать и пример мы видели выше, но первый блин оказался комом и дальше инженеры не пошли на фоне дешевеющих SSD. И уже, видимо, не пойдут.

А как же должен выглядеть сферический в вакууме идеальный накопитель с позиции сегодняшних технологических возможностей? Давай поконфабулируем будущее на эту тему — может нам даже удастся что-то угадать.

Как мы увидели в начале — все данные можно условно поделить на холодные, теплые и горячие по критерию востребованности пользователем. Поэтому, в первом приближении нам бы избавиться от обычного «винта», но объемные SSD – дорогие, а хранить архивы в облаках затея сомнительная, т.к. я еще не видел ни одного юридического документа, где была бы предметно описана не только ответственность облачного провайдера за потерю пользовательских данных, но и прямая обязанность обеспечить их гарантированную сохранность. Даже в странах с развитой правовой системой получить компенсацию за утерю таких данных от провайдера будет сложно, т.к. все упрется в денежную оценку пропажи, которая может иметь нематериальную ценность (например, семейный фотоархив). И все. В идеале иметь прямой контракт с провайдером с описанием условий хранения и конкретной ответственностью, но это утопия для широкого круга лиц. Конечно современные технологии хранения сводят вероятность безвозвратных потерь к низким значениям – все дублируется многократно с избыточностью, но это и стоит недешево. С другой стороны, если какие-то условные злоумышленники в ходе воображаемого террористического акта разрушат целиком недецентрализированный дата-центр провайдера облачного хранения, то с концами будут утеряны не только все данные, но и возможность компенсаций, т.к. подобного рода события в большинстве случаев являются форс-мажором. Имущество провайдера, конечно, скорее всего, будет застраховано, но клиенты — нет. Или будет предложена такая финансовая модель защиты интересов клиента, что проще и дешевле будет обставиться NAS, подкинуть их с постоянным IP в онлайн за NAT и не париться. И я это вполне серьезно на фоне того, что даже банки не несут ответственности за пропажи из ячеек.

В пересчете на гигабайт и сроки хранения традиционные жесткие диски пока недосягаемы для SSD, а на подходе 40 гигабайтные монстры в 3,5-дюймовом стандартом корпусе. Сотки тоже не за горами. В общем, отказываться от традиционного HDD для холодного хранения тем, кому это надо, смысла особого нет. У друзей-дизайнеров огромные архивы работ, которые хоть и сданы заказчикам, но удалять их мало кто решится. У кого-то семейные архивы. У кого-то видео, RAW и т.п.

Т.е. базой будет технологически традиционный жесткий диск.  Опять по Блоку:

Живи еще хоть четверть века —
Все будет так. Исхода нет.

Далее таковой бы закэшировать на чтение и запись прокладкой побыстрее. Идеально бы чем-то вроде оперативной памяти, но ее нужно будет много, а стоить она в этих объемах будет дорого. А еще энрегонезависимость. Поэтому из вменяемого сегодня доступна память твердотельная. Т.е. по иерархии выше нам бы поставить SSD, через который транзитом данные бы отсрочено оседали на холодом жестком диске и на который можно было бы автоматически дублировать популярные данные типа системных файлов ОС, браузеров и прочее, которые читаются хотя бы раз в неделю-месяц. Если данные не востребованы, то с такого SSD они удаляются, оставаясь на холодном винте. А если вы пару недель-месяц не обращались к файлу, то следующее его прочтение с медленного винта с одновременным копированием на SSD кэш проблемой быть никак не должен. Будете с ним работать — он будет читаться с быстрого SSD, измените — изменится и на HDD, не будете с ним работать — он останется на жестком диске, освободив место на SSD. Примерно так и были задуманы SSHDD, но 8 гигабайт явно мало. Да и неплохо бы иметь возможность эту кэширующую прокладку менять произвольно на лучшую из доступных пользователю.

При всех замечательных особенностях SSD они сами нуждаются в прокладке и памяти еще боле быстрой. Типичный подход решения вопроса — DRAM-буфер. Решение актуальное, но маленькое и в основном служебное. И, опять же, недоступное к расширению под конкретные нужды. Гигабайт на терабайтном SSD более-менее неплохо, но в мейнстриме-то накопители поменьше с меньшими кэш-буферами. Поэтому в идеале для нашего сферического накопителя иметь внешний буфер на основе ОЗУ-подобной памяти, доступной к произвольному конфигурированию под конкретные нужды. Тут на ум приходит рассмотренный выше аппаратный RAM-драйв — там и скорости были бы и прочее. Но для современных типов памяти таковых на рынке 0,5 штуки (да, я встречал одно решение, но именно одно и очень редкое и дорогое) да и по-хорошему — аппаратный RAM-диск уже не нужен. Его время было тогда, когда чипсеты не поддерживали много ОЗУ, а сегодня 128 гигабайт можно почти в каждую SOHO плату с 4 слотами поставить, а завтра это цифра удвоится. Серверное железо мы выносим за скобки данной статьи сознательно.

Если были и есть аппаратные RAM-драйвы, то почему бы сегодня софтверно не отвести часть ОЗУ под дисковый кэш? Технически и программно в этом нет никаких проблем, но производители последней ОС почему-то не задумываются об этом, предлагая штатное кэширование, которое нельзя конфигурировать и которое работает по нераскрытым алгоритмам.

Таким образом, теоретический и воображаемый идеал на все случаи = ОЗУ+SSD+HDD + динамическое распределение данных по актуальности.

И чем это принципиально лучше Seagate SSHD выше по тексту?

Как минимум тем, что новых SSHD уже не будет. Их жизненный цикл начался в 2007 году, когда Seagate и Samsung представили решения со 128 и 256 мегабайтами флэша. А закончился фактически в 2013-м с выпуском WD Black SSHD с 24 гигабайтами флэша. Сегодня перспектив дальнейшего их развития не видно никаких, а открытая архитектура современного компьютера позволяет реализовать описанную выше концепцию на типичных розничных компонентах в конфигурации под любой кошелек. В портативную технику городить все это вообще давно нет смысла — там SSD обеспечит и скорость, и компактность, и вибронезависимость, а в десктоп что-то плотно упаковывать тоже бессмысленно, когда везде middle-tower.

Внимательно изучив ситуацию становится очевидно, что описанное по факту уже реализовано в нескольких похожих ипостасях. Выше мы читали про Intel Turbo Boost с проприетарным кэширующим модулем. В 2011 опять же Intel представила Smart Response Technology. Опять же проприетарную технологию, привязанную к чипсетам, которая позволяла использовать для кэширования жестких дисков до 64 гигабайт подключенного SSD.

Про Microsoft ReadyDrive и ReadyBoost написано выше.

С разными особенностями, но можно констатировать, что у Apple похожая технология называется Fusion Drive. В ее рамках складываются объемы доступных накопителей, и данные динамически распределяются по ним в зависимости от востребованности. ОС и важные документы всегда закешированы на более быстром носителе. Но технология сильно закрытая и тоже проприетарная.

Следующий прорыв в области кэширования совершила опять же Intel. В 2015 она сообщила, что изобрела революционную технологию твердотельной памяти 3D Xpoint. Революционную = дорогую. Заявка была такая.

Longread об актуальных аспектах кэширования

Окажись все правдой, то мы бы сильно приблизились бы к идеалу накопителя — быстрому и объемному RAM, по версии IBM из 50-х. Накопители на этой технологии вышли на рынок под торговой маркой Optane и оказались фантастически быстры. Достаточно сказать, что в основной твердотельной дисциплине — случайном чтении мелких файлов с глубиной запроса 1 — Optane способен показать скорости около 300 мегабайт в секунду. Это минимум в 5–6 лучше ближайших массовых преследователей от Samsung. Таким образом, среди твердотельных накопителей Optane оказался несомненным лидером не только по скоростям, но и, к сожалению, по ценам. В перспективе на этой технологии Intel обещала энергонезависимую оперативную память, что еще более сильно концептуально приближается к идеалу из самого начала статьи. Сегодня таковые объявлены для серверного рынка, но изучить их пока возможности не было.

В связи с тем, что Optane оказался очень быстр и очень дорог, Intel решила предлагать его на рынок в маленьких дозах — NVMe-накопителями по 16 и 32 гигабайта. Еще раз — 16 и32 гигабайта под конец второй декады 21 века. Но предлагала Intel это счастье, в первую очередь, как кэширующий модуль, привязанный к собственному железу в виде чипсетов и процессоров. Т.е. разработчик предполагал, что у клиента, купившего систему 7 поколения Intel, будет системным жесткий диск. Изначально требования были выше по процессорам, но потом были понижены вплоть до Celeron, что намекает на чисто программные ограничения.

Longread об актуальных аспектах кэширования

Держателям более возрастного железа предлагалось наблюдать со стороны праздник проприетарного кэширования.

С учетом скоростей на мелких файлах Optane впору кэшировать лучшие SSD. Идеал виделся как-то так:

Longread об актуальных аспектах кэширования

Скорость кэширующих модулей примерно такова: фантастика на чтение рандомной мелочи и более-менее на запись. Но запись особо и не важна, т.к. запись дополнительно кэшируется в оперативной памяти. Далее данные попадут на Optane и только потом на жесткий диск или SSD.

Longread об актуальных аспектах кэширования

По скоростным показателям Optane — лучшая и недосягаемая на рынке кэширующая прокладка между ОЗУ и накопителем, но она, как и TurboMemory в прошлом, привязана к железу, что очень портит картину: ведь купившие новое железо вряд ли позарятся на жесткий диск, как системный.

В ответ на такой беспорядок конкуренты из AMD представили собственный аналог — StoreMi. Концептуально похоже, но тоже привязано к определенным чипсетам. Правда, в качестве кеширующего предлагается использовать любой подключенный SSD.

Longread об актуальных аспектах кэширования

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

Из совсем экзотики на эту тему приведем напоследок два полярных технологических примера.

Твердотельный накопитель из 4 гигабайт SLC NAND с кэшем из 4 гигабайт DDR для PCI Express x1 — вполне себе вариант для кеширования более медленных накопителей, правда, стоил 2000 USD в 2009 году.

Longread об актуальных аспектах кэширования

И OCZ RevoDrive Hybrid — плата со 128 ГБ MLC, аж двумя контроллерами SandForce SF-2281 и 2,5″ НЖМД на борту с частотой вращения 5400 оборотов в минуту. DRAM-буфера почему-то не предусмотрено вообще никакого, флэш распаян. Системой виделась как два независимых устройства, для сочленения которых с целью кэширования, требовалось внешнее комплектное ПО Dataplex c минимумом настроек. Скручено натурально изолентой, т.е. болтами.

Longread об актуальных аспектах кэшированияLongread об актуальных аспектах кэширования

Примеры полярные, т.к. являются представителями хоть и похожих идейно, но разных по набору компонентов концепций. Первому не хватает холодного хранилища, второму — кэша в DRAM. Почему кто-то тогда не стал давить два окурка вместе и не сделал дрим-девайс с полным набором технологий — непонятно. Хорошо хоть накопитель во втором съемный, правда, толку от этого немного.

Longread об актуальных аспектах кэширования

Но в связи с Optane и до 128 гигабайт памяти на современных материнских платах таких и подобных гибридов, мы, скорее всего, уже никогда не увидим, как и реалий из фильма, кадр из которого приведен. Музейные экспонаты. Хотя пути Господни неисповедимы, а в IT очень любят работать с оглядкой на религию, особенно в Apple, где маркетологи прямо называются евангелистами, а в свою экосистему пускают через посвящение (iTunes) с усложнением обратного выхода. Но мы отвлеклись.

Возможно, вы не полностью используете возможности своего железа

Отдельно стоит упомянуть достижения некоторых производителей SSD в сфере кэширования. Так Crucial и Samsung поставляют ПО, которое умеет кешировать их изделия за счет части свободной оперативной памяти машины, где они установлены. Происходит это совершенно незаметно для пользователя. В случае с Crucial можно кешировать и HDD SATA, подключенные к машине, где системным диском является изделие Crucial. Называется Momentum Cache. Таким образом, закостыливается маленький объем физического DRAM-кэша в накопителях или его полное отсутствие в дешевых сериях, а также нюансы внутринакопительного кэширования самого по себе. ПО бесплатное и беспроблемное.

А как вообще в миру?

Основная проблема всего вышеперечисленного зоопарка в том, что каждый производитель тянет одеяло на себя аппаратно. Оно и понятно — пользователя давно пора подсаживать на собственную экосистему. Доказано Apple.

Второй проблемой является то, что каждым решением закрыта лишь какая-то часть общей идеальной задачи по кэшированию. Системного решения вопроса именно в SOHO никто не предложил, хотя из представленных концепций прямо проистекает, что каких-то непреодолимых или железных преград в этом вопросе нет.

Для корпоративного же рынка такие решения есть, например, от Qnap. И он далеко не одинок — это обычная практика. Приведен чисто для иллюстрации понятия уровней данных в enterprise с автораспределением.

Вот логика.

Longread об актуальных аспектах кэширования

А вот условный пример трехуровневой «железки».

Longread об актуальных аспектах кэширования

Здесь же реализовано SSD-кэширование с сохранением наиболее актуальных данных в SSD-кэше.

Longread об актуальных аспектах кэширования

Т.е. концептуально все имеет решения типа Cache Acceleration Software, но в SOHO их почему-то под открытую архитектуру комплексно и широко не продают.