Электронный диск (RAM drive, RAM disk — диск в памяти) — компьютерная технология, позволяющая хранить данные в быстродействующей оперативной памяти как на блочном устройстве (диске). Может быть реализована как программно, так и аппаратно.

Кейс из жизни: как-то мне потребовалось написать небольшой bash скрипт, генерирующий в процессе своей работы много временных файлов и от времени доступа к которым зависела работы программы в целом. За счет решения с RAM-диском производительность скрипта возросла на порядок.

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

Для создание виртуального диска вводим в терминале (актуально для Mac OS X 10.5 и выше):

diskutil erasevolume HFS+ 'My Disk' `hdiutil attach -nomount ram://8388608`

My Disk— это название создаваемого диска, а цифра 8388608 — объём (количество секторов по 512 байт), в данном случае 4 Гб.

После создания диск можно найти в Finder и работать с ним можно также, как с обычным жестким диском. Внимание: диск, как и информация на нем, живут до первой перезагрузки, поэтому не забудьте скопировать нужную информацию перед завершением работы. Для удаления диска достаточно просто извлечь его в Finder.

Тестируем и сравниваем скорость чтения/записи в Mac OS X

speed_test

Для теста на чтение/запись воспользуемся утилитой dd.

Начнем со скорости записи системного SSD диска OCZ Vortex3:

$ sync; dd if=/dev/zero of=tempfile bs=1m count=1024; sync
1024+0 records in
1024+0 records out
1073741824 bytes transferred in 2.599582 secs (413044036 bytes/sec)

413 Мб/cек. Проверим скорость чтения:

$ dd if=tempfile of=/dev/null bs=1m count=1024
1024+0 records in
1024+0 records out
1073741824 bytes transferred in 2.288831 secs (469122371 bytes/sec)

Она составила 469 Мб/сек. Теперь проверим скорость записи обычного жесткого диска объемом 250Gb:

$ sync; dd if=/dev/zero of=tempfile bs=1m count=1024; sync
1024+0 records in
1024+0 records out
1073741824 bytes transferred in 10.268309 secs (104568516 bytes/sec)

104 Мб/сек. Проверим скорость чтения:

$ dd if=tempfile of=/dev/null bs=1m count=1024
1024+0 records in
1024+0 records out
1073741824 bytes transferred in 6.926679 secs (155015389 bytes/sec)

155 Мб/сек.Теперь мы подошли к самому главному – тесту скорости виртуального жесткого диска расположенного в оперативной памяти DDR3:

$ sync; dd if=/dev/zero of=tempfile bs=1m count=1024; sync
1024+0 records in
1024+0 records out
1073741824 bytes transferred in 0.995787 secs (1078284740 bytes/sec)

Наш «жесткий диск» пишет данный почти со скоростью 1,1 Гб/сек! Посмотрим на скорость чтения:

$ dd if=tempfile of=/dev/null bs=1m count=10241024+0 records in
1024+0 records out
1073741824 bytes transferred in 0.915073 secs (1173394822 bytes/sec)

В тесте на чтение оперативная память показала 1,17 Гб/сек! Визуализируем полученные данные:

disk_speed_tests
График результатов сравнительного тестирования скорости чтения / записи магнитного, SSD и RAM дисков.

Отличный результат, который наглядно показывает преимущество скорости RAM диска над твердотельными и магнитными накопителями.

  • Денис, спасибо. Но проверь, все твои сктрипты с dd, а именно где там выбор дисков, чтобы различать когда HDD, SSD, или же RAM-Disk. И напиши плииз как отдать памяти назад созданный в ней объем диска.