Ранее мы подробно тестировали скорость снятия образов с быстрых накопителей. Однако высокая скорость — это лишь часть задачи. Даже при идеальной, предельной для конкретного «железа» скорости, получить гарантированно корректный и полный образ не так просто, как кажется. Достичь максимальной скорости работы тоже получается не каждый раз: множество факторов могут привести как к существенному замедлению работы, так и искажениям итогового результата. В этой статье мы собрали ключевые факторы, которые могут повлиять на скорость и качество снятия образа.
Даже при использовании высокоскоростных накопителей и мощного оборудования результат может оказаться разочаровывающим. Возможных причин — масса.
Во-первых, важен баланс между скоростью источника и приёмника данных. Если накопитель, с которого снимается образ, быстрее устройства, на которое он пишется, это неминуемо приведёт к снижению общей скорости. Особенно часто это проявляется при копировании с NVMe SSD на внешний HDD или на сетевой ресурс — пропускная способность просто не успевает за потоком данных.
Во-вторых, физическое размещение устройств на одной шине, например, двух USB-накопителей в одном контроллере USB 3.2 или их подключение к одному и тому же USB-хабу, может стать узким местом. При этом проблемы могут возникать даже при теоретически достаточной пропускной способности — из-за особенностей реализации хост-контроллеров и драйверов.
Слабый процессор, недостаток оперативной памяти, перегрев системы, работа от аккумулятора (если речь идёт о ноутбуке) — всё это также влияет на стабильность и скорость. Особенно это критично, если одновременно работает несколько ресурсоёмких процессов или используется старое оборудование.
Стороннее программное обеспечение тоже может помешать стабильной работе. Антивирусы (сколько о них уже писали!), различные средства мониторинга, резервного копирования, всевозможные защиты от копирования, работающие в режиме ядра, которые так любят некоторые вендоры, и прочие фоновые процессы могут вмешиваться в операции чтения/записи, задерживая или блокируя доступ к дискам.
Отдельного внимания заслуживают адаптеры и блокираторы записи. Их качество, пропускная способность, стабильность питания и склонность к перегреву напрямую влияют на итоговую скорость. Мы уже подробно рассматривали важность выбора правильных блокираторов в этой статье.
Наконец, не стоит забывать о кабелях. Даже хорошие устройства могут терять в производительности из-за дешёвого, нестабильного или просто неподходящего кабеля — подробнее об этом мы писали здесь.
Каждый из этих факторов сам по себе может ограничить скорость работы. Если же в игру вступает сразу несколько факторов, в итоге пострадать может не только скорость, но и качество: процесс создания образа может просто прерваться на середине или образ может быть создан с ошибками.
На скорость и стабильность создания образа может повлиять и содержимое исходного диска и степень его заполненности. При использовании форматов, поддерживающих сжатие (например, E01), может меняться не только размер создаваемого образа, но и скорость — в зависимости от исходных данных и настроек сжатия. Если на исследуемом SSD много свободного места, нули будут отдаваться с максимальной скоростью — контроллеру даже не придётся читать их из микросхем памяти. При этом современные SSD по-разному обрабатывают занятые и свободные блоки, что может влиять как на скорость, так и на повторяемость результатов.
Не обошлись без своих особенностей и традиционные жёсткие диски, у которых скорость чтения хоть и не зависит от типа записанных данных, но напрямую зависит от геометрии блинов: данные с внешних дорожек считываются быстрее (до 200-250 МБ/с на современных накопителях), а на внутренних — намного медленнее (порядка 80-150 МБ/с в зависимости от геометрии).
Реальные же проблемы начинаются, если исследуемый носитель имеет сбойные или нестабильные участки. Даже если они не приводят к видимым ошибкам при обычном использовании, в процессе снятия образа могут возникнуть повторы чтений, задержки, либо фатальные сбои, в результате которых процесс может быть прерван — а может и «зависнуть» на нечитаемой области, в худшем случае — окончательно «запоров» её содержимое. Особенно это критично при работе с накопителями на грани поломки; в таких случаях для чтения данных нужно использовать не стандартные блокираторы записи, а специализированное оборудование.
Параметры программного обеспечения, с которыми запускается процесс создания образа, сильно влияют на итоговую производительность. Количество потоков, выбор места хранения временных файлов, активность хэширования (один или несколько алгоритмов, в реальном времени или после копирования) — всё это может существенно ускорить или замедлить процесс. Особенно важно, как утилита реагирует на ошибки чтения: повторные попытки, задержки, логирование — всё отнимает ресурсы и время.
Кроме того, многие популярные утилиты просто не имеют нужных настроек, что делает невозможным оптимизацию под конкретную задачу или оборудование. В результате даже на мощном «железе» скорость может оказаться ниже ожидаемой просто из-за особенностей выбранного ПО.
И об этом мы тоже писали. Даже при идеальном состоянии источника и правильно выбранного ПО, скорость может проседать из-за выбора места назначения — целевого хранилища, на которое будут записаны собранные данные. Если образ сохраняется на внешний HDD, медленный флеш-накопитель или сетевой ресурс, именно эта часть становится узким местом. Не забываем и об особенностей жёстких дисков: если в качестве приёмника используется HDD, то на внешние дорожки запись будет происходить быстрее, а на внутренние — заметно медленнее.
Проблема в том, что такие «бутылочные горлышки» не всегда очевидны, особенно если они проявляются нестабильно или зависят от загрузки сети. Мы не раз писали о том, как ведут себя под нагрузкой даже самые быстрые современные SSD. Используемые в них алгоритмы кэширования, объём псевдо-SLC кэша, объём и свободное место на целевом накопители, поколение и мощность его контроллера — все эти вещи могут и приводят к неожиданному результату: быстро записывается лишь первая порция данных относительно небольшого объёма, после чего скорость записи проваливается до величин, не сопоставимых с «рекламными» скоростями. Поэтому перед тестами или реальной работой важно оценивать не только источник, но и приёмник образа.
Даже если тщательно выбрать и полностью оптимизировать оборудование, устранить все программные помехи и настроить ПО для снятия образов, полной уверенности в максимальной утилизации аппаратных ресурсов всё равно нет. Повторяемость измерений и стабильность результатов — не одно и то же, и даже незначительное изменение в конфигурации или состоянии накопителя может дать другой итог.
Более того, в ряде случаев причина ошибок лежит не в аппаратной части, а в логике работы конкретного ПО или настройках операционной системы. Особенности конкретного накопителя, файловой системы, ошибки на уровне прошивки — всё это может стать причинами замедления скорости, которые практически невозможно предусмотреть заранее.
С другой стороны, в реальных условиях планку всегда можно занизить. Никто и никогда не подклчюает целевой и исследуемый накопители непосредственно к шине PCIe — хотя бы в силу невозможности обеспечить защиту от записи в таких условиях. Большинство блокираторов записи способно выдать максимум до 10 Гбит/с, что для современных накопителей NVMe является лишь малой частью их потенциала. Если речь идёт о практическом использовании, то «100%» и «10 Гбит/с» выглядят уже совершенно иначе.
Мы не можем проконтролировать все параметры без исключения, но некоторые — всё-таки можем. Именно с этой целью мы начали разработку собственного ПО для снятия образов. Изучив существующие решения, мы увидели как сильные, так и слабые стороны каждого — где-то проблемы с производительностью, где-то со стабильностью при сбоях чтения, кто-то не умеет быстро сжимать данные, а кто-то — умеет, но имеет другие проблемы.
Мы постарались учесть все узкие места: реализовали гибкую обработку ошибок, оптимизировали работу с потоками и сфокусировались на стабильности даже в нестандартных сценариях. Наш продукт разрабатывается сразу для Windows и Linux; несмотря на то, что для Linux существуют бесплатные утилиты dc3dd и guymager, нас не устроила скорость их работы. Надеемся, что у нас получится по меньшей мере неплохо. Пока, правда, есть и ограничения — конкурировать с такими продуктами, как OSForensics, тяжело, но мы стараемся.
Снятие образов дисков — не просто задача на скорость. Чтобы получить корректный результат с максимальной скоростью, нужно учитывать множество факторов: от физических особенностей накопителей до настроек операционной системы и конкретного ПО для снятия образов. Полностью исключить проблемные факторы невозможно, но понимание узких мест и грамотная настройка оборудования с их учётом существенно повышают шансы на успех.
Мы продолжаем работать над собственным инструментом, который уже решает часть известных проблем и обещает быть полезным в реальной практике. Следите за обновлениями — в скором времени мы надеемся выложить первую сборку.