13 лет назад 3 августа 2005 в 22:28 53

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

ТЕОРИЯ
Виртуальными жесткими дисками, созданными на основе винчестера, никого не удивишь – достаточно вспомнить, что такое логический диск. Виртуальный жесткий диск бывает просто необходим, например, когда нужно установить операционную систему в эмуляторе, не выходя из основной ОС. В Unix-подобных операционных системах при нехватке места на основном разделе можно cхитрить. Вместо того чтобы переразбивать диск и выделять разделу Unix еще немного места, можно создать на разделе другой ОС (например, FAT32) пустой файл, забить его нулями на несколько гигабайт, затем отформатировать в нужную систему (например, XFS) и подмонтировать к общему дереву. Такая файловая система в файле, по сути, тоже будет виртуальным диском, ничем не отличаясь при этом от настоящих.

Следующий шаг – виртуальный диск, полностью помещающийся в оперативной памяти и не имеющий реального воплощения на винчестере. Казалось бы, пользы от такого “диска” никакой – ведь после выключения питания (мы не говорим об энергонезависимой памяти) все его данные безвозвратно пропадут. Кроме того, занимаемая им оперативная память недоступна приложениям, что может серьезно замедлить работу компьютера, да и объем его не может быть большим, упираясь в тот же предел свободной памяти.

Однако есть одно преимущество, которое с лихвой покрывает все недостатки такого “диска” – быстродействие. В самом деле, как ни быстры новейшие винчестеры на 7200 или даже 10 тыс. оборотов в минуту, как ни быстры их UDMA-133 или SATA-интерфейсы, им никогда не угнаться за быстродействием интегральных микросхем оперативной памяти – ведь их головки никогда не смогут передвигаться со скоростью переключения транзисторов.

К тому же есть довольно много задач, для которых длительное хранение информации совсем не требуется – многие программы используют в той или иной мере временные файлы, которые актуальны только в пределах одной сессии. А в некоторых случаях гарантированное уничтожение информации при выключении ПК даже необходимо (например, можно поместить на RAM-диск временные файлы браузера, если вы хотите быть уверены, что историю вашего серфинга никто не сможет проследить).

В ряде операционных систем поддержка виртуальных дисков в оперативной памяти не просто встроена в ядро, а является одним из важнейших элементов ОС. Такова, например, ОС Linux. Ее виртуальная файловая система /proc содержит большое количество информации, собранной из ядра во время его загрузки и выполнения программ; в огромном количестве каталогов этой системы находятся сведения обо всех параметрах всех процессов системы. Такой подход позволяет очень быстро получить все необходимые сведения.

В мире Windows все гораздо прозаичнее: поддержка виртуальных дисков средствами системы исчезла еще во времена агонии старой доброй DOS. Однако и под Windows такой диск может оказаться полезным. Например, если сервер баз данных на базе WinNT обладает большим количеством оперативной памяти, можно скопировать файлы часто используемых таблиц на RAM-диск – тогда время доступа к данным значительно сократится, ведь серверу не нужно будет обращаться к медленному реальному диску.

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

ИНСТРУМЕНТАРИЙ
На рынке сегодня представлено несколько решений для создания RAM-дисков под Windows. Например, программа Ramdisk от Superspeed Software (www.superspeed.com/servers/ramdisk.php). Существует две версии этого продукта: Ramdisk и Ramdisk Plus. Последняя отличается способностью сохранять содержимое виртуального диска на винчестер, а также поддерживает создание не одного, а до 99 виртуальных дисков.

Основной модуль программы Ramdisk выполнен в виде тесно интегрированного в систему драйвера, взаимодействующего непосредственно с ядром ОС. Об этом говорит и то, что после установки среди системных устройств появляется виртуальный контроллер “шины” от фирмы SuperSpeed: Использовать Ramdisk очень просто: после установки следует зайти в Панель управления и далее – в надстройку RAM Disk Devices: Теперь нужно нажать кнопку Add, в появившемся окошке указать размер, файловую систему и букву диска.

Диск будет создан и тут же отформатирован, после чего им можно пользоваться как обычным винчестером. Если в системе достаточно свободной оперативной памяти, никаких проблем это не вызывает. После перезагрузки виртуальный диск сохраняется, а вот его содержимое – нет, что, впрочем, легко исправить.

Оба продукта, в свою очередь, имеют несколько подверсий. Различаются они поддержкой многопроцессорности, оптимизацией под разные ОС и, разумеется, ценой. Стоимость программ вызывает некоторое недоумение, как и пассажи о “запатентованных технологиях, позволяющих сохранять содержимое RAM-диска вручную или автоматически при выключении компьютера”. Между тем всю эту “запатентованную технологию” восстановления можно свести к добавлению в автозагрузку bat-файла, содержащего строчку “Xcopy C:\temp H:\ /E /Y”, где H: – имя виртуального диска. Технология периодического сохранения данных на винчестер ненамного сложнее.

Отличной альтернативой может служить отечественная разработка QuasiDisk, написанная Виталием Сидоровым. К сожалению, развитие программы уже прекратилось, однако ее последнюю версию можно найти по адресу www.divsoft.ru/qd/qdsetup.exe, а по адресу www.divsoft.ru/qd/regkey.key лежит регистрационный ключ. Пользоваться программой можно бесплатно, она устанавливается как обычное приложение и никаких драйверов в систему не добавляет, вместо этого в систему инсталлируется дополнительная служба. Интерфейс программы весьма прост:

Программа может монтировать три вида дисков: обычные RAM-диски, диски, лежащие в файле-образе (подобные описанным выше виртуальным разделам в Unix), и CD-диски в виде ISO-образов. При создании RAM-диска можно указать следующие параметры:

Как и в предыдущем случае, нужно указать размер и букву диска. Кроме того, если проставить флажок Map to file, то диску будет сопоставлен файл-образ (его адрес нужно указать ниже). Если выбрана опция Synchronize changes, то в этот файл будет записываться содержимое диска и все его изменения. Таким образом, перезагрузка и даже сбой питания не страшны: все изменения автоматически сбрасываются на винчестер.

Такой подход весьма оправдан, поскольку сверхбыстрый доступ в большинстве случаев необходим именно для чтения данных, запись же обычно не требует такой оперативности. Впрочем, падение скорости записи не слишком заметно, ведь данные сбрасываются на винчестер не каждый раз, а время от времени. При выборе же опции Use a snapshot диск просто будет создаваться из этого образа при инициализации, однако изменения сохраняться не будут. Кроме того, можно указать, будет ли диск использоваться только для чтения, монтировать ли его при загрузке системы и т. д.

Количество виртуальных дисков по умолчанию ограничено четырьмя, однако его можно увеличить, зайдя в меню Options > Settings. Очевидно, что отечественная разработка в использовании удобнее зарубежной, к тому же она совершенно бесплатна.

БЫСТРОДЕЙСТВИЕ
Для тестирования использовалась машина на чипсете NForce3-150 с процессором AMD Athlon64 2800+ (S754), 768 Мб памяти DDR-400 и НЖМД емкостью 160 Гб Western Digital WD1600JB со скоростью 7200 об/мин и буфером в 8 Мб.
Программное обеспечение: Windows XP Pro, Adobe Photoshop CS, веб-сервер Apache 1.3.29, сервер баз данных MySQL 4.0.21-nt, транслятор php 4.3.9. Для того чтобы проверить на практике работу этих программ, мы создали в памяти нашей тестовой машины виртуальный диск емкостью 384 Мб, отформатированный в NTFS. Тест быстродействия проводился с помощью тестового пакета Sisoft Sandra Standart 2004 SP2. Результаты, как ни странно, различны: диск QuasiDisk отстает по скорости от Ramdisk почти в три раза:

Скорее всего, это вызвано разницей в организации взаимодействия программ с ОС. Для сравнения приведен результат тестирования реального жесткого диска. Видно, что (далеко не самый медленный) винчестер в этом тесте – явный аутсайдер и не может тягаться даже с QuasiDisk, а уж тем более с Ramdisk.

Тем не менее при выборе программы, на наш взгляд, лучше все же остановиться на QuasiDisk, которая хоть и проигрывает иностранному конкуренту в скорости, зато выигрывает в удобстве. С помощью этой программы можно организовать в памяти компьютера (сервера) своеобразный буфер, который обеспечивает практически мгновенный доступ к данным на чтение и запись и постепенно переносит информацию на жесткий диск. Учитывая, что современные 64-битные процессоры могут адресовать до 8 и даже до 64 Гб оперативной памяти, а 8-гигабайтные модули памяти уже появились в продаже, такое решение становится чрезвычайно привлекательным для построения серверов баз данных: выигрыш в скорости от хранения в оперативной памяти их таблиц со многими миллионами записей обещает быть просто фантастическим.

Если же отойти от больших серверов, то на RAM-диске персонального компьютера можно хранить, например, каталог для временных файлов, а вот перенести туда своп-файл не получится. Оказалось, что Windows при загрузке инициализирует файл подкачки раньше, чем обе рассмотренные программы создают в памяти виртуальный диск. Даже если указать в настройках для всех жестких дисков параметр “без файла подкачки”, система все равно создает на системном диске своп-файл объемом, равным полуторному объему оперативной памяти, а виртуальным диском не пользуется вовсе.

Но несмотря на то что серьезно ускорить работу самой ОС вряд ли получится, можно значительно повысить быстродействие программ, которые активно работают с временными файлами или используют не общесистемный, а собственный файл подкачки (например, Adobe Photoshop). Для этого нужно указать диск, используемый программой для подкачки (в Photoshop это можно сделать в меню Edit > Preferences > Plug-Ins&Scratch Disks), и уже при следующем запуске программы (для чистоты эксперимента можно перезагрузиться) будет заметно значительное ускорение ее загрузки. Здесь, правда, мы сталкиваемся с неким парадоксом.

При обработке небольших файлов прирост скорости практически незаметен – они и так обрабатываются весьма быстро. Для обработки же сколько-нибудь тяжелых файлов небольших объемов диска подкачки явно не хватит, поскольку файлы подкачки у Photoshop, оказывается, очень велики. Так, для обработки 112-мегабайтного файла RAM-диска в 384 Мб недостаточно – программа еще может его открыть, но выполнять какие-либо операции отказывается, ссылаясь на то, что диск подкачки переполнен. Увеличение же виртуального диска хоть и позволяет программе обрабатывать файл, но вместо роста быстродействия дает обратный эффект, поскольку системе и программе начинает не хватать собственно оперативной памяти, и машина принимается активно “свопить”.

Следовательно, этот подход применим только на тех машинах, где оперативной памяти действительно много (1,5–2 Гб) и можно безболезненно выделить 600–700 Мб под виртуальный диск. Выход можно найти в использовании нескольких разделов подкачки, благо в Photoshop можно указать до четырех разделов. Тогда выигрыш в производительности будет не столь большим, но все-таки заметным, поскольку все плагины, кисти, шрифты, инструменты и другие служебные данные будут храниться не на жестком диске, а уже в оперативной памяти. Это подтверждается результатами тестирования:

Обратите внимание на выигрыш в быстродействии базы данных MySQL: при расположении файлов с таблицами на жестком диске обработка 50 запросов на полный перебор таблицы из 50 тысяч записей (поиск несуществующего элемента) заняла 27 секунд, при расположении на RAM-диске – 16,34 секунды, то есть скорость возросла примерно на 40%.

Итак, использование RAM-диска действительно позволяет увеличить производительность системы. До последнего времени в связи с малыми объемами используемой на практике памяти особой потребности в этом не было, но все меняется. С ростом объема и снижением цены на модули памяти применение RAM-дисков под Windows станет весьма привлекательным.